Hi Dongli, > diff --git a/target/i386/cpu.c b/target/i386/cpu.c > index b6d6167910..61a671028a 100644 > --- a/target/i386/cpu.c > +++ b/target/i386/cpu.c > @@ -7115,6 +7115,10 @@ void cpu_x86_cpuid(CPUX86State *env, uint32_t index, uint32_t count, > !(env->hflags & HF_LMA_MASK)) { > *edx &= ~CPUID_EXT2_SYSCALL; > } > + > + if (kvm_enabled() && IS_AMD_CPU(env) && !cpu->enable_pmu) { No need to check "kvm_enabled() && IS_AMD_CPU(env)" because: * "pmu" is a general CPU property option which should cover all PMU related features, and not kvm-specific/vendor-specific. * this bit is reserved on Intel. So the following operation doesn't affect Intel. I think Xiaoyao's idea about checking in x86_cpu_expand_features() is good. And I believe it's worth having another cleanup series to revisit pmu dependencies. I can help you later to consolidate and move this check to x86_cpu_expand_features(), so this patch can focus on correctly defining the current dependency relationship. With the above nit fixed, Reviewed-by: Zhao Liu <zhao1.liu@xxxxxxxxx>