Re: [PATCH v2 2/2] perf jevents: Autogenerate empty-pmu-events.c

From: John Garry
Date: Tue May 28 2024 - 06:02:36 EST


On 25/05/2024 02:30, Ian Rogers wrote:
empty-pmu-events.c exists so that builds may occur without python
being installed on a system. > Manually updating empty-pmu-events.c to
be in sync with jevents.py is a pain, let's use jevents.py to generate
empty-pmu-events.c.

1) change jevents.py so that an arch and model of none cause
generation of a pmu-events.c without any json. Add a SPDX and
autogenerated warning to the start of the file.

2) change Build so that if a generated pmu-events.c for arch none and
model none doesn't match empty-pmu-events.c the build fails with a
cat of the differences. Update Makefile.perf to clean up the files
used for this.

3) update empty-pmu-events.c to match the output of jevents.py with
arch and mode of none.

Signed-off-by: Ian Rogers <irogers@xxxxxxxxxx>


Reviewed-by: John Garry <john.g.garry@xxxxxxxxxx>

---
tools/perf/Makefile.perf | 2 +
tools/perf/pmu-events/Build | 12 +-
tools/perf/pmu-events/empty-pmu-events.c | 894 ++++++++++++++---------
tools/perf/pmu-events/jevents.py | 6 +-
4 files changed, 562 insertions(+), 352 deletions(-)

diff --git a/tools/perf/Makefile.perf b/tools/perf/Makefile.per

..

- },
+struct pmu_table_entry {
+ const struct compact_pmu_event *entries;
+ uint32_t num_entries;
+ struct compact_pmu_event pmu_name;
+};
+
+static const char *const big_c_string =
+/* offset=0 */ "default_core\000"
+/* offset=13 */ "bp_l1_btb_correct\000branch\000L1 BTB Correction\000event=0x8a\000\00000\000\000"
+/* offset=72 */ "bp_l2_btb_correct\000branch\000L2 BTB Correction\000event=0x8b\000\00000\000\000"

Please remind me: how to figure out this number when adding a new entry?

+/* offset=131 */ "l3_cache_rd\000cache\000L3 cache access, read\000event=0x40\000\00000\000Attributable Level 3 cache access, read\000"