On Mon, 20 Jul 2026 at 06:39, Akihiko Odaki <[email protected]> wrote: > > 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. A late CPU that misses an advertised > capability is therefore rejected. > > Although kept in the errata capability table, this capability describes > optional trap support rather than a workaround required for safe CPU > operation. A late CPU may therefore match it when the system does not. > KVM treats an IMPDEF PMU as unimplemented unless the capability was > finalized system-wide, so the additional trap support remains unused. > > Fixes: bed9b8ec8c71 ("KVM: arm64: Advertise PMUv3 if IMPDEF traps are > present") > Assisted-by: Codex:gpt-5.5 > Signed-off-by: Akihiko Odaki <[email protected]>
Reviewed-by: Fuad Tabba <[email protected]> Cheers, /fuad > --- > 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 1995e1198648..a5ae628204a1 100644 > --- a/arch/arm64/kernel/cpu_errata.c > +++ b/arch/arm64/kernel/cpu_errata.c > @@ -1005,7 +1005,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 > >

