[perf] why is /proc/sys/kernel/perf_user_access ARM64 only?

From: Vince Weaver
Date: Wed Jun 15 2022 - 13:57:21 EST



Just wasted a lot of time tracking down why rdpmc() event reading wasn't
working on an ARM64 machine.

It turns out ARM64 has added a custom
"/proc/sys/kernel/perf_user_access"
to control rdpmc access, but only on ARM64.
e2012600810c9ded81f6f63a8d04781be3c300ad

Why is this ARM64-only? Why isn't this generic perf infrastructure?
How is this different from the existing
/sys/bus/event_source/devices/cpu/rdpmc
tooling?

Also, when user events are disabled, why is the ARMv8 PMU not disabling
the cap_user_rdpmc bit in the perf mmap() page?

rdpmc was trouble before, but now it's an even bigger
architecture-dependent mess just trying to figure out if the feature is
enabled or not.

Vince