[PATCH v8 19/22] tools/perf: Support event code for arch standard events

Ian Rogers irogers at google.com
Wed Jul 1 10:44:29 PDT 2026


On Wed, Jul 1, 2026 at 1:48 AM Atish Patra <atish.patra at linux.dev> wrote:
>
> From: Atish Patra <atishp at rivosinc.com>
>
> 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 <atishp at rivosinc.com>

Reviewed-by: Ian Rogers <irogers at google.com>

Thanks,
Ian

> ---
>  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
>



More information about the linux-arm-kernel mailing list