test_event_counter_config() checks that there is at least one event counter but mistakenly uses counter 1 for part of the test. Most implementations have more than a single event counter which is probably why this went unnoticed. However, due to limitations of the underlying hardware, KVM's PMUv3 emulation on Apple silicon can only provide 1 event counter. Consistenly use counter 0 throughout the test, matching the precondition and allowing the test to pass on Apple parts. Cc: Eric Auger <eric.auger@xxxxxxxxxx> Fixes: 4ce2a804 ("arm: pmu: Basic event counter Tests") Signed-off-by: Oliver Upton <oliver.upton@xxxxxxxxx> --- arm/pmu.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/arm/pmu.c b/arm/pmu.c index 9ff7a301..2dc0822b 100644 --- a/arm/pmu.c +++ b/arm/pmu.c @@ -396,13 +396,13 @@ static void test_event_counter_config(void) * Test setting through PMESELR/PMXEVTYPER and PMEVTYPERn read, * select counter 0 */ - write_sysreg(1, PMSELR_EL0); + write_sysreg(0, PMSELR_EL0); /* program this counter to count unsupported event */ write_sysreg(0xEA, PMXEVTYPER_EL0); write_sysreg(0xdeadbeef, PMXEVCNTR_EL0); - report((read_regn_el0(pmevtyper, 1) & 0xFFF) == 0xEA, + report((read_regn_el0(pmevtyper, 0) & 0xFFF) == 0xEA, "PMESELR/PMXEVTYPER/PMEVTYPERn"); - report((read_regn_el0(pmevcntr, 1) == 0xdeadbeef), + report((read_regn_el0(pmevcntr, 0) == 0xdeadbeef), "PMESELR/PMXEVCNTR/PMEVCNTRn"); /* try to configure an unsupported event within the range [0x0, 0x3F] */ base-commit: 1f08a91a41402b0e032ecce8ed1b5952cbfca0ea -- 2.39.5