Messages in this thread | | | Date | Fri, 11 Dec 2015 14:23:36 +0000 | From | Mark Rutland <> | Subject | Re: [PATCH v0 3/5] perf: Introduce instruction trace filtering |
| |
On Fri, Dec 11, 2015 at 03:02:01PM +0100, Peter Zijlstra wrote: > On Fri, Dec 11, 2015 at 03:36:36PM +0200, Alexander Shishkin wrote: > > > The pmu driver interface basically adds an extra callback to the > > pmu driver structure, which validates the filter configuration proposed > > by the user against what the hardware is actually capable of doing > > and translates it into something that pmu::start can program into > > hardware. > > > @@ -388,12 +393,38 @@ struct pmu { > > void (*free_aux) (void *aux); /* optional */ > > > > /* > > + * Validate instruction tracing filters: make sure hw supports the > > + * requested configuration and number of filters. > > + * > > + * Configure instruction tracing filters: translate hw-agnostic filter > > + * into hardware configuration in event::hw::itrace_filters > > + */ > > + int (*itrace_filter_setup) (struct perf_event *event); /* optional */ > > + > > + /* > > * Filter events for PMU-specific reasons. > > */ > > int (*filter_match) (struct perf_event *event); /* optional */ > > }; > > Any reason you cannot use pmu::filter_match ?
Maybe I've misunderstood your point, but the two seem quite different.
We introduced pmu::filter_match to apply a SW filter each time we installed events from a context. We use that on ARM to avoid programming big events into little cores and vice-versa.
As far as I can see, itrace_filter_setup is closer in operation to event_init. It can fail at configuration time (long before scheduling events to cores), and leaves the actual filtering to the HW.
Thanks, Mark.
| |