mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 20:45:20 +07:00
7520fa9924
Add support for the Cluster PMU part of the ARM DynamIQ Shared Unit (DSU). The DSU integrates one or more cores with an L3 memory system, control logic, and external interfaces to form a multicore cluster. The PMU allows counting the various events related to L3, SCU etc, along with providing a cycle counter. The PMU can be accessed via system registers, which are common to the cores in the same cluster. The PMU registers follow the semantics of the ARMv8 PMU, mostly, with the exception that the counters record the cluster wide events. This driver is mostly based on the ARMv8 and CCI PMU drivers. The driver only supports ARM64 at the moment. It can be extended to support ARM32 by providing register accessors like we do in arch/arm64/include/arm_dsu_pmu.h. Cc: Mark Rutland <mark.rutland@arm.com> Cc: Will Deacon <will.deacon@arm.com> Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> Reviewed-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
29 lines
1.2 KiB
Plaintext
29 lines
1.2 KiB
Plaintext
ARM DynamIQ Shared Unit (DSU) PMU
|
|
==================================
|
|
|
|
ARM DynamIQ Shared Unit integrates one or more cores with an L3 memory system,
|
|
control logic and external interfaces to form a multicore cluster. The PMU
|
|
allows counting the various events related to the L3 cache, Snoop Control Unit
|
|
etc, using 32bit independent counters. It also provides a 64bit cycle counter.
|
|
|
|
The PMU can only be accessed via CPU system registers and are common to the
|
|
cores connected to the same DSU. Like most of the other uncore PMUs, DSU
|
|
PMU doesn't support process specific events and cannot be used in sampling mode.
|
|
|
|
The DSU provides a bitmap for a subset of implemented events via hardware
|
|
registers. There is no way for the driver to determine if the other events
|
|
are available or not. Hence the driver exposes only those events advertised
|
|
by the DSU, in "events" directory under :
|
|
|
|
/sys/bus/event_sources/devices/arm_dsu_<N>/
|
|
|
|
The user should refer to the TRM of the product to figure out the supported events
|
|
and use the raw event code for the unlisted events.
|
|
|
|
The driver also exposes the CPUs connected to the DSU instance in "associated_cpus".
|
|
|
|
|
|
e.g usage :
|
|
|
|
perf stat -a -e arm_dsu_0/cycles/
|