Hi Reiji, On 11/17/21 7:43 AM, Reiji Watanabe wrote: > When ID_AA64DFR0_EL1.PMUVER or ID_DFR0_EL1.PERFMON is 0xf, which > means IMPLEMENTATION DEFINED PMU supported, KVM unconditionally > expose the value for the guest as it is. Since KVM doesn't support > IMPLEMENTATION DEFINED PMU for the guest, in that case KVM should > exopse 0x0 (PMU is not implemented) instead. s/exopse/expose > > Change cpuid_feature_cap_perfmon_field() to update the field value > to 0x0 when it is 0xf. is it wrong to expose the guest with a Perfmon value of 0xF? Then the guest should not use it as a PMUv3? Eric > > Fixes: 8e35aa642ee4 ("arm64: cpufeature: Extract capped perfmon fields") > Signed-off-by: Reiji Watanabe <reijiw@xxxxxxxxxx> > --- > arch/arm64/include/asm/cpufeature.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/include/asm/cpufeature.h b/arch/arm64/include/asm/cpufeature.h > index ef6be92b1921..fd7ad8193827 100644 > --- a/arch/arm64/include/asm/cpufeature.h > +++ b/arch/arm64/include/asm/cpufeature.h > @@ -553,7 +553,7 @@ cpuid_feature_cap_perfmon_field(u64 features, int field, u64 cap) > > /* Treat IMPLEMENTATION DEFINED functionality as unimplemented */ > if (val == ID_AA64DFR0_PMUVER_IMP_DEF) > - val = 0; > + return (features & ~mask); > > if (val > cap) { > features &= ~mask; >