The first commit fixes the tests when running on PMUv3p5. The issue is that PMUv3p5 uses 64-bit counters irrespective of whether the PMU is configured for overflowing at 32 or 64-bits. Tests are currently failing [0] on PMUv3p5 because of this. They wrongly assume that values will be wrapped around 32-bits, but they overflow into the other half of the 64-bit counters. The second and third commits add new tests for 64-bit overflows, a feature added with PMUv3p5 (PMCR_EL0.LP == 1). This is done by running all overflow-related tests in two modes: with 32-bit and 64-bit overflows. This series was tested on PMUv3p5 and PMUv3p4 using the ARM Fast Model and kvmtool. All tests pass on both PMUv3p5 and PMUv3p4 when using Marc's PMUv3p5 series [0], plus the suggestion made at [1]. Didn't test AArch32. [0] https://lore.kernel.org/kvmarm/20221113163832.3154370-1-maz@xxxxxxxxxx/ [1] https://lore.kernel.org/kvmarm/Y4jasyxvFRNvvmox@xxxxxxxxxx/ Ricardo Koller (3): arm: pmu: Fix overflow checks for PMUv3p5 long counters arm: pmu: Prepare for testing 64-bit overflows arm: pmu: Add tests for 64-bit overflows arm/pmu.c | 217 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 133 insertions(+), 84 deletions(-) -- 2.39.0.rc0.267.gcb52ba06e7-goog