Re: [PATCH v3 00/12] perf/core: Generalise event exclusion checking

From: Will Deacon
Date: Fri Dec 07 2018 - 12:24:56 EST


On Thu, Dec 06, 2018 at 04:47:17PM +0000, Andrew Murray wrote:
> Many PMU drivers do not have the capability to exclude counting events
> that occur in specific contexts such as idle, kernel, guest, etc. These
> drivers indicate this by returning an error in their event_init upon
> testing the events attribute flags.
>
> However this approach requires that each time a new event modifier is
> added to perf, all the perf drivers need to be modified to indicate that
> they don't support the attribute. This results in additional boiler-plate
> code common to many drivers that needs to be maintained. Furthermore the
> drivers are not consistent with regards to the error value they return
> when reporting unsupported attributes.
>
> This patchset allow PMU drivers to advertise their inability to exclude
> based on context via a new capability: PERF_PMU_CAP_NO_EXCLUDE. This
> allows the perf core to reject requests for exclusion events where there
> is no support in the PMU.
>
> This is a functional change, in particular:
>
> - Some drivers will now additionally (but correctly) report unsupported
> exclusion flags. It's typical for existing userspace tools such as
> perf to handle such errors by retrying the system call without the
> unsupported flags.
>
> - Drivers that do not support any exclusion that previously reported
> -EPERM or -EOPNOTSUPP will now report -EINVAL - this is consistent
> with the majority and results in userspace perf retrying without
> exclusion.
>
> All drivers touched by this patchset have been compile tested.

For the bits under arch/arm/ and drivers/perf:

Acked-by: Will Deacon <will.deacon@xxxxxxx>

Note that I've queued the TX2 uncore PMU for 4.21 [1], which could also
benefit from your new flag.

Will

[1]
https://git.kernel.org/pub/scm/linux/kernel/git/will/linux.git/commit/?h=for-next/perf&id=69c32972d59388c041268e8206e8eb1acff29b9a