[PATCH v3 0/3] perf: Rework event forwarding logic

From: Ravi Bangoria
Date: Tue Apr 25 2023 - 10:22:46 EST


Usually events are opened on the same pmu as requested by user via
perf_event_attr->type argument. But certain special events are
internally redirected to different pmu. Currently such pmus needs to
be treated specially and thus requires some gruesome hacks.

An approach, suggested by Peter Zijlstra, to get rid of these hacks
was to overwrite event attributes with new pmu's attribute values
within the kernel and let perf_event_init() retry opening the event
with overwritten values. This patch series implements it.

v2: https://lore.kernel.org/r/20230309101111.444-1-ravi.bangoria@xxxxxxx
v2->v3:
- Both uses different approach to solve the problem. v2 was using new
error value -ESRCH to let perf_event_init() try opening event with
all pmus, hoping that the event will get forwarded to right pmu.
OTOH, v3 uses different approach as described in the description.
- v3 also fixes SW pmu to task-clock/cpu-clock pmu event forwarding.

Patches are prepared on v6.3.

Ravi Bangoria (3):
perf/core: Rework forwarding of {task|cpu}-clock events
perf/ibs: Fix interface via core pmu events
perf test: Add selftest to test IBS invocation via core pmu events

arch/x86/events/amd/core.c | 2 +-
arch/x86/events/amd/ibs.c | 53 ++++++++---------
arch/x86/include/asm/perf_event.h | 2 +
include/linux/perf_event.h | 11 ++++
kernel/events/core.c | 79 +++++++++++--------------
tools/perf/tests/Build | 1 +
tools/perf/tests/amd-ibs-via-core-pmu.c | 72 ++++++++++++++++++++++
tools/perf/tests/builtin-test.c | 1 +
tools/perf/tests/tests.h | 1 +
9 files changed, 151 insertions(+), 71 deletions(-)
create mode 100644 tools/perf/tests/amd-ibs-via-core-pmu.c

--
2.40.0