linux-perf-users.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 0/6] perf vendor events arm64: Update N2 and V2 metrics and events using Arm telemetry repo
@ 2023-08-11 14:39 James Clark
  2023-08-11 14:39 ` [PATCH v5 1/6] perf: cs-etm: Don't duplicate FIELD_GET() James Clark
                   ` (5 more replies)
  0 siblings, 6 replies; 24+ messages in thread
From: James Clark @ 2023-08-11 14:39 UTC (permalink / raw)
  To: linux-perf-users, irogers, john.g.garry, renyu.zj
  Cc: James Clark, Will Deacon, Mike Leach, Leo Yan, Peter Zijlstra,
	Ingo Molnar, Arnaldo Carvalho de Melo, Mark Rutland,
	Alexander Shishkin, Jiri Olsa, Namhyung Kim, Adrian Hunter,
	Suzuki K Poulose, Kan Liang, Nick Forrington, Kajol Jain,
	Eduard Zingerman, Sohom Datta, Rob Herring, linux-kernel,
	linux-arm-kernel, coresight

This is a completely new approach from V3 [1], although the metrics and
event descriptions are autogenerated, the topdown metrics have been
manually edited to use #no_stall_errata (now directly comparing on the
CPUID in v5). This removes the need to duplicate the whole set of JSONs
when only the topdown metrics are different between N2 and V2.

The CPU ID comparison function still needs to change so that the new
literal can compare on versions, but now no change is needed to mapfile
or the PMU event generation code because we still only support one
set of JSONs per CPU.

[1]: https://lore.kernel.org/lkml/20230711100218.1651995-1-james.clark@arm.com/

------

Changes since v4:
  * Replace the #no_stall_errata literal with a more generic function
    for comparing CPU IDs. This will hopefully keep configuration out
    of the code and inside the JSONs

Changes since v3:
  * Instead of duplicating all the metrics, add a new expression
    literal that can be used to share the same metrics between N2 and V2
  * Move tests to arch/arm64/tests
  * Remove changes from jevents.py and mapfile.csv

Changes since v2:
  * version -> variant in second commit message
  * Add a bit more detail about version matching in the second commit
    message
  * Update the comments in pmu-events/arch/arm64/mapfile.csv to say that
    variant and revision fields are now used
  * Increase the CC list

Changes since v1:
  * Split last change into two so it doesn't hit the mailing list size
    limit


James Clark (6):
  perf: cs-etm: Don't duplicate FIELD_GET()
  perf arm64: Allow version comparisons of CPU IDs
  perf test: Add a test for the new Arm CPU ID comparison behavior
  perf vendor events arm64: Update scale units and descriptions of
    common topdown metrics
  perf vendor events arm64: Update stall_slot workaround for N2 r0p3
  perf vendor events arm64: Update N2 and V2 metrics and events using
    Arm telemetry repo

 tools/perf/arch/arm64/include/arch-tests.h    |   3 +
 tools/perf/arch/arm64/tests/Build             |   1 +
 tools/perf/arch/arm64/tests/arch-tests.c      |   4 +
 tools/perf/arch/arm64/tests/cpuid-match.c     |  38 ++
 tools/perf/arch/arm64/util/header.c           |  64 ++-
 tools/perf/arch/arm64/util/pmu.c              |  18 +-
 .../arch/arm64/arm/neoverse-n2-v2/branch.json |   8 -
 .../arch/arm64/arm/neoverse-n2-v2/bus.json    |  18 +-
 .../arch/arm64/arm/neoverse-n2-v2/cache.json  | 155 --------
 .../arm64/arm/neoverse-n2-v2/exception.json   |  45 ++-
 .../arm/neoverse-n2-v2/fp_operation.json      |  22 ++
 .../arm64/arm/neoverse-n2-v2/general.json     |  10 +
 .../arm64/arm/neoverse-n2-v2/instruction.json | 143 -------
 .../arm64/arm/neoverse-n2-v2/l1d_cache.json   |  54 +++
 .../arm64/arm/neoverse-n2-v2/l1i_cache.json   |  14 +
 .../arm64/arm/neoverse-n2-v2/l2_cache.json    |  50 +++
 .../arm64/arm/neoverse-n2-v2/l3_cache.json    |  22 ++
 .../arm64/arm/neoverse-n2-v2/ll_cache.json    |  10 +
 .../arch/arm64/arm/neoverse-n2-v2/memory.json |  39 +-
 .../arm64/arm/neoverse-n2-v2/metrics.json     | 365 ++++++++++--------
 .../arm64/arm/neoverse-n2-v2/pipeline.json    |  23 --
 .../arm64/arm/neoverse-n2-v2/retired.json     |  30 ++
 .../arch/arm64/arm/neoverse-n2-v2/spe.json    |  12 +-
 .../arm/neoverse-n2-v2/spec_operation.json    | 110 ++++++
 .../arch/arm64/arm/neoverse-n2-v2/stall.json  |  30 ++
 .../arch/arm64/arm/neoverse-n2-v2/sve.json    |  50 +++
 .../arch/arm64/arm/neoverse-n2-v2/tlb.json    |  66 ++++
 .../arch/arm64/arm/neoverse-n2-v2/trace.json  |  27 +-
 tools/perf/pmu-events/arch/arm64/sbsa.json    |  24 +-
 tools/perf/pmu-events/metric.py               |  17 +-
 tools/perf/util/cs-etm.c                      |  14 +-
 tools/perf/util/expr.c                        |  18 +
 tools/perf/util/expr.h                        |   1 +
 tools/perf/util/expr.l                        |   1 +
 tools/perf/util/expr.y                        |   8 +-
 tools/perf/util/pmu.c                         |  17 +
 tools/perf/util/pmu.h                         |   1 +
 37 files changed, 923 insertions(+), 609 deletions(-)
 create mode 100644 tools/perf/arch/arm64/tests/cpuid-match.c
 delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/branch.json
 delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/fp_operation.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/general.json
 delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/instruction.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/l1d_cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/l1i_cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/l2_cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/l3_cache.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/ll_cache.json
 delete mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/pipeline.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/retired.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/spec_operation.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/stall.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/sve.json
 create mode 100644 tools/perf/pmu-events/arch/arm64/arm/neoverse-n2-v2/tlb.json

-- 
2.34.1


^ permalink raw reply	[flat|nested] 24+ messages in thread

end of thread, other threads:[~2023-08-16 10:28 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-11 14:39 [PATCH v5 0/6] perf vendor events arm64: Update N2 and V2 metrics and events using Arm telemetry repo James Clark
2023-08-11 14:39 ` [PATCH v5 1/6] perf: cs-etm: Don't duplicate FIELD_GET() James Clark
2023-08-15 18:09   ` Arnaldo Carvalho de Melo
2023-08-11 14:39 ` [PATCH v5 2/6] perf arm64: Allow version comparisons of CPU IDs James Clark
2023-08-14 13:07   ` John Garry
2023-08-14 14:15     ` James Clark
2023-08-14 14:43       ` John Garry
2023-08-16  9:02         ` James Clark
2023-08-15  9:35   ` John Garry
2023-08-16  9:12     ` James Clark
2023-08-16 10:15       ` John Garry
2023-08-11 14:39 ` [PATCH v5 3/6] perf test: Add a test for the new Arm CPU ID comparison behavior James Clark
2023-08-15  9:47   ` John Garry
2023-08-16  9:14     ` James Clark
2023-08-16 10:27       ` John Garry
2023-08-11 14:39 ` [PATCH v5 4/6] perf vendor events arm64: Update scale units and descriptions of common topdown metrics James Clark
2023-08-11 14:53   ` John Garry
2023-08-15 18:11     ` Arnaldo Carvalho de Melo
2023-08-11 14:39 ` [PATCH v5 5/6] perf vendor events arm64: Update stall_slot workaround for N2 r0p3 James Clark
2023-08-14 13:02   ` John Garry
2023-08-14 13:44     ` James Clark
2023-08-15  9:40   ` John Garry
2023-08-16  9:16     ` James Clark
2023-08-11 14:39 ` [PATCH v5 6/6] perf vendor events arm64: Update N2 and V2 metrics and events using Arm telemetry repo James Clark

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).