Hi all, At long last, here's an initial cut of the CMN PMU driver that's been festering in on-and-off development for years. It should be functionally complete now, although there is still scope for improving the current implementation (e.g. watchpoint register allocation could be cleverer). Of particular interest at this point is the user interface - is it sufficiently complete and useful? Is there any need for a third event targeting method in between "single node ID" and "all nodes"? Is it worth templating watchpoints by port and channel to mimic XP events? Do we want to expose watchpoint-based bandwidth events as synthetic per-node events? Not all of that would need to be implemented right now so as to further stall upstreaming, but I really want to make sure that the initial interface is solid and any further enhancements can cleanly extend it, rather than painting ourselves into a corner in terms of ABI support. Robin. Robin Murphy (2): perf: Add Arm CMN-600 DT binding perf: Add Arm CMN-600 PMU driver Documentation/admin-guide/perf/arm-cmn.rst | 65 + Documentation/admin-guide/perf/index.rst | 1 + .../devicetree/bindings/perf/arm-cmn.yaml | 57 + drivers/perf/Kconfig | 7 + drivers/perf/Makefile | 1 + drivers/perf/arm-cmn.c | 1653 +++++++++++++++++ 6 files changed, 1784 insertions(+) create mode 100644 Documentation/admin-guide/perf/arm-cmn.rst create mode 100644 Documentation/devicetree/bindings/perf/arm-cmn.yaml create mode 100644 drivers/perf/arm-cmn.c -- 2.28.0.dirty