perf/core: Allow reading package events from perf_event_read_local
authorTero Kristo <tero.kristo@linux.intel.com>
Wed, 13 Sep 2023 12:59:56 +0000 (15:59 +0300)
committerPeter Zijlstra <peterz@infradead.org>
Mon, 9 Oct 2023 14:12:22 +0000 (16:12 +0200)
commit1765bb61bb18a7b81f68806de6e8b8f5000f65bf
tree37f1b540f8501cb51ece10002ac4bbb79f21f41c
parent05276d4831fe023b6674a72bd6b8c5b39796e690
perf/core: Allow reading package events from perf_event_read_local

Per-package perf events are typically registered with a single CPU only,
however they can be read across all the CPUs within the package.
Currently perf_event_read maps the event CPU according to the topology
information to avoid an unnecessary SMP call, however
perf_event_read_local deals with hard values and rejects a read with a
failure if the CPU is not the one exactly registered. Allow similar
mapping within the perf_event_read_local if the perf event in question
can support this.

This allows users like BPF code to read the package perf events properly
across different CPUs within a package.

Signed-off-by: Tero Kristo <tero.kristo@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230913125956.3652667-1-tero.kristo@linux.intel.com
kernel/events/core.c