perf: arm_pmuv3: Add support for Armv9.4 PMU instruction counter
Armv9.4/8.9 PMU adds optional support for a fixed instruction counter similar to the fixed cycle counter. Support for the feature is indicated in the ID_AA64DFR1_EL1 register PMICNTR field. The counter is not accessible in AArch32. Existing userspace using direct counter access won't know how to handle the fixed instruction counter, so we have to avoid using the counter when user access is requested. Acked-by: Mark Rutland <mark.rutland@arm.com> Signed-off-by: Rob Herring (Arm) <robh@kernel.org> Tested-by: James Clark <james.clark@linaro.org> Link: https://lore.kernel.org/r/20240731-arm-pmu-3-9-icntr-v3-7-280a8d7ff465@kernel.org Signed-off-by: Will Deacon <will@kernel.org>
This commit is contained in:
committed by
Will Deacon
parent
2f62701fa5
commit
d8226d8cfb
@@ -17,10 +17,14 @@
|
||||
#ifdef CONFIG_ARM_PMU
|
||||
|
||||
/*
|
||||
* The ARMv7 CPU PMU supports up to 32 event counters.
|
||||
* The Armv7 and Armv8.8 or less CPU PMU supports up to 32 event counters.
|
||||
* The Armv8.9/9.4 CPU PMU supports up to 33 event counters.
|
||||
*/
|
||||
#ifdef CONFIG_ARM
|
||||
#define ARMPMU_MAX_HWEVENTS 32
|
||||
|
||||
#else
|
||||
#define ARMPMU_MAX_HWEVENTS 33
|
||||
#endif
|
||||
/*
|
||||
* ARM PMU hw_event flags
|
||||
*/
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
#define ARMV8_PMU_MAX_GENERAL_COUNTERS 31
|
||||
#define ARMV8_PMU_CYCLE_IDX 31
|
||||
|
||||
#define ARMV8_PMU_INSTR_IDX 32 /* Not accessible from AArch32 */
|
||||
|
||||
/*
|
||||
* Common architectural and microarchitectural event numbers.
|
||||
@@ -228,8 +228,10 @@
|
||||
*/
|
||||
#define ARMV8_PMU_OVSR_P GENMASK(30, 0)
|
||||
#define ARMV8_PMU_OVSR_C BIT(31)
|
||||
#define ARMV8_PMU_OVSR_F BIT_ULL(32) /* arm64 only */
|
||||
/* Mask for writable bits is both P and C fields */
|
||||
#define ARMV8_PMU_OVERFLOWED_MASK (ARMV8_PMU_OVSR_P | ARMV8_PMU_OVSR_C)
|
||||
#define ARMV8_PMU_OVERFLOWED_MASK (ARMV8_PMU_OVSR_P | ARMV8_PMU_OVSR_C | \
|
||||
ARMV8_PMU_OVSR_F)
|
||||
|
||||
/*
|
||||
* PMXEVTYPER: Event selection reg
|
||||
|
||||
Reference in New Issue
Block a user