Star64_linux/arch/x86/events
Ravi Bangoria fd414b609d perf/ibs: Fix interface via core pmu events
[ Upstream commit 2fad201fe3 ]

Although, IBS pmus can be invoked via their own interface, indirect
IBS invocation via core pmu events is also supported with fixed set
of events: cpu-cycles:p, r076:p (same as cpu-cycles:p) and r0C1:p
(micro-ops) for user convenience.

This indirect IBS invocation is broken since commit 66d258c5b0
("perf/core: Optimize perf_init_event()"), which added RAW pmu under
'pmu_idr' list and thus if event_init() fails with RAW pmu, it started
returning error instead of trying other pmus.

Forward precise events from core pmu to IBS by overwriting 'type' and
'config' in the kernel copy of perf_event_attr. Overwriting will cause
perf_init_event() to retry with updated 'type' and 'config', which will
automatically forward event to IBS pmu.

Without patch:
  $ sudo ./perf record -C 0 -e r076:p -- sleep 1
  Error:
  The r076:p event is not supported.

With patch:
  $ sudo ./perf record -C 0 -e r076:p -- sleep 1
  [ perf record: Woken up 1 times to write data ]
  [ perf record: Captured and wrote 0.341 MB perf.data (37 samples) ]

Fixes: 66d258c5b0 ("perf/core: Optimize perf_init_event()")
Reported-by: Stephane Eranian <eranian@google.com>
Signed-off-by: Ravi Bangoria <ravi.bangoria@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230504110003.2548-3-ravi.bangoria@amd.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
2023-08-20 15:24:17 +08:00
..
amd perf/ibs: Fix interface via core pmu events 2023-08-20 15:24:17 +08:00
intel perf/x86/uncore: Correct the number of CHAs on SPR 2023-06-06 18:43:19 +08:00
zhaoxin x86/perf/zhaoxin: Add stepping check for ZXC 2023-04-19 17:59:41 +08:00
core.c perf: Protect perf_guest_cbs with RCU 2023-04-19 17:43:42 +08:00
Kconfig perf/amd/uncore: Allow the driver to be built as a module 2021-08-26 09:14:36 +02:00
Makefile perf/x86/rapl: Fix RAPL config variable bug 2020-06-02 11:52:56 +02:00
msr.c perf/x86/msr: Add Emerald Rapids 2023-04-19 17:58:58 +08:00
perf_event.h perf/x86/intel: Apply mid ACK for small core 2021-08-06 14:25:15 +02:00
probe.c perf/x86/rapl: Add msr mask support 2021-02-10 14:44:54 +01:00
probe.h perf/x86/rapl: Add msr mask support 2021-02-10 14:44:54 +01:00
rapl.c perf/x86/rapl: Treat Tigerlake like Icelake 2023-04-19 17:58:40 +08:00