On Fri, May 22, 2026 at 06:33:24PM -0700, John Hubbard wrote:
> perf_allow_cpu() and perf_allow_tracepoint() are static inline and
> reach into a non-exported sysctl, so modular drivers that want the
> same permission model as system-wide perf end up writing partial
> copies of this code. Let's instead export these properly so that modules
> can call them.
>
> Commit 5e9629d0ae97 ("drivers/perf: arm_spe: Use perf_allow_kernel()
> for permissions") already moved perf_allow_kernel() out of line and
> exported it. Patch 1 does the same for the other two, and provides
> !CONFIG_PERF_EVENTS stubs so the helpers stay callable when perf is
> compiled out.
>
> Patch 2 converts drm/xe's OA and EU stall paths to call
> perf_allow_cpu(), so xe observation now respects the system
> perf_event_paranoid policy and consults the LSM hook. Sites that have
> already configured an LSM perf policy or tuned the paranoid sysctl will
> now see those settings honored on xe as well.
>
> Changes since v1:
>
> * Patch 1: add !CONFIG_PERF_EVENTS stubs that fall back to
> perfmon_capable() so the helpers remain callable when perf is
> compiled out. The sashiko-bot AI review caught that the v1 code
> would otherwise fail to build with PERF_EVENTS=n.
>
> John Hubbard (2):
> perf/core: out-of-line and export perf_allow_cpu/tracepoint()
> drm/xe: gate observation streams with perf_allow_cpu()
>
> drivers/gpu/drm/xe/xe_eu_stall.c | 5 +++--
> drivers/gpu/drm/xe/xe_oa.c | 25 +++++++++++++---------
> drivers/gpu/drm/xe/xe_observation.c | 32 ++++++++++++++++++++++++-----
> drivers/gpu/drm/xe/xe_observation.h | 3 +--
> include/linux/perf_event.h | 31 ++++++++++++++--------------
> kernel/events/core.c | 18 ++++++++++++++++
> 6 files changed, 79 insertions(+), 35 deletions(-)
Sure, works for me. How do you want to route these things, Xe tree or
-tip?