KVM relies on ARM64_WORKAROUND_PMUV3_IMPDEF_TRAPS as a system-wide precondition for PMUv3 emulation on affected Apple CPUs. A local CPU erratum is too weak for that: once the workaround is enabled, a late CPU that misses it may still be onlined. Make the workaround an all-early-CPU capability instead. The matcher is still local because it depends on MIDR_EL1, but the capability is only advertised if all early CPUs match, and late CPUs that miss it are rejected once the capability is enabled. Assisted-by: Codex:gpt-5.5 Signed-off-by: Akihiko Odaki --- arch/arm64/kernel/cpu_errata.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/arm64/kernel/cpu_errata.c b/arch/arm64/kernel/cpu_errata.c index 476a37c82108..14ce49d693c4 100644 --- a/arch/arm64/kernel/cpu_errata.c +++ b/arch/arm64/kernel/cpu_errata.c @@ -964,7 +964,7 @@ const struct arm64_cpu_capabilities arm64_errata[] = { { .desc = "Apple IMPDEF PMUv3 Traps", .capability = ARM64_WORKAROUND_PMUV3_IMPDEF_TRAPS, - .type = ARM64_CPUCAP_LOCAL_CPU_ERRATUM, + .type = ARM64_CPUCAP_EARLY_LOCAL_CPU_FEATURE, .matches = has_impdef_pmuv3, .cpu_enable = cpu_enable_impdef_pmuv3_traps, }, -- 2.55.0