Re: [PATCH v8 19/22] tools/perf: Support event code for arch standard events
From: Ian Rogers <irogers@google.com>
Date: 2026-07-01 17:44:54
Also in:
linux-arm-kernel, linux-perf-users, linux-riscv, lkml
On Wed, Jul 1, 2026 at 1:48 AM Atish Patra [off-list ref] wrote:
From: Atish Patra <redacted> RISC-V relies on the event encoding from the json file. That includes arch standard events. If event code is present, event is already updated with correct encoding. No need to update it again which results in losing the event encoding. Signed-off-by: Atish Patra <redacted>
Reviewed-by: Ian Rogers <irogers@google.com> Thanks, Ian
quoted hunk ↗ jump to hunk
--- tools/perf/pmu-events/arch/riscv/arch-standard.json | 10 ++++++++++ tools/perf/pmu-events/jevents.py | 9 ++++++++- 2 files changed, 18 insertions(+), 1 deletion(-)diff --git a/tools/perf/pmu-events/arch/riscv/arch-standard.json b/tools/perf/pmu-events/arch/riscv/arch-standard.json new file mode 100644 index 000000000000..96e21f088558 --- /dev/null +++ b/tools/perf/pmu-events/arch/riscv/arch-standard.json@@ -0,0 +1,10 @@ +[ + { + "EventName": "cycles", + "BriefDescription": "cycle executed" + }, + { + "EventName": "instructions", + "BriefDescription": "instruction retired" + } +]diff --git a/tools/perf/pmu-events/jevents.py b/tools/perf/pmu-events/jevents.py index 3a1bcdcdc685..0cf9d26315b3 100755 --- a/tools/perf/pmu-events/jevents.py +++ b/tools/perf/pmu-events/jevents.py@@ -413,7 +413,14 @@ class JsonEvent: self.long_desc = None if arch_std: if arch_std.lower() in _arch_std_events: - event = _arch_std_events[arch_std.lower()].event + # Inherit the arch-standard encoding only if this event defines no + # explicit encoding of its own. Events with explicit EventCode, + # ConfigCode, etc. may carry alternate encodings and appended modifiers + # that must survive. + if ('EventCode' not in jd and 'ExtSel' not in jd and + configcode is None and eventidcode is None and + legacy_hw_config is None and legacy_cache_config is None): + event = _arch_std_events[arch_std.lower()].event # Copy from the architecture standard event to self for undefined fields. for attr, value in _arch_std_events[arch_std.lower()].__dict__.items(): if hasattr(self, attr) and not getattr(self, attr): --2.53.0-Meta