Re: [PATCH 1/2] tools, perf: Add a precise event qualifier v2

From: Ingo Molnar
Date: Fri Sep 13 2013 - 05:51:09 EST



* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Thu, Sep 12, 2013 at 07:36:17PM +0200, Andi Kleen wrote:
> > > Your feature to export 'precise' requirements on events looks useful to
> > > me. We could implement it not by special casing it implicitly but by
> > > saying that if ../format/precise contains something like:
> > >
> > > attr:240-241
>
> Since we currently have the pattern $name:bits to mean
> perf_event_attr::$name the above would imply and create a possible
> collision with perf_event_attr::attr.
>
> If we're going to do this I'd propose using something like _:240-241,
> for while '_' is a valid name in C its not something we're ever going to
> allow in perf_event_attr.

Ok - and I'm not against adding individual 'names' one by one as well,
that allows us to expose only the fields that relate to event
configuration.

For example if we added 'type' as well we could expose the generic,
hardware-independent events via sysfs as well.

( Eventually this scheme would be fit to expose more advanced events as
well: such as composite groups of events with simple arithmetic
operations between them. That would allow the exposure of E1+E2-E3 type
of simple calculations. )

> > Wouldn't we need different bits for each architecture then?
> > 32bit/64bit, some archs with weird alignment rules, maybe different
> > for BE/LE too?
>
> Typically PMU drivers are per arch and all the format stuff is per pmu
> driver so I'd not worry about that just yet.

ok.

> But yes, while the perf_event_attr thing is ABI its not identical across
> archs.

Yeah, like syscalls - it's not an on-disk format.

> > Ok I suppose it could be somehow auto generated in asm-offsets.c,
> > although I'm not sure how to get a bitfield offset there.
>
> Yes, that is an unfortunate situation. I (and either Acme or Jolsa)
> tried wrapping the bitfield in an anonymous union to create a named
> variable for the entire u64 but older GCC completely fails with that.

We could be careful with bitfields and enumerate their offsets explicitly,
with a build time testcase that makes sure that the offsets match reality.

Thanks,

Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/