> --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -637,7 +637,8 @@ static int __do_cpuid_func_emulated(struct kvm_cpuid_array *array, u32 func) > case 7: > entry->flags |= KVM_CPUID_FLAG_SIGNIFCANT_INDEX; > entry->eax = 0; > - entry->ecx = F(RDPID); > + if (kvm_cpu_cap_has(X86_FEATURE_RDTSCP)) > + entry->ecx = F(RDPID); > ++array->nent; > default: > break; I'm wondering if entry->ecx should be set to F(RDPID) here even if the CPU supports RDPID natively. (i.e. kvm_cpu_cap_has(X86_FEATURE_RDPID) is true) The document "Documentation/virt/kvm/api.rst" says: --- 4.88 KVM_GET_EMULATED_CPUID --------------------------- <...> Userspace can use the information returned by this ioctl to query which features are emulated by kvm instead of being present natively. --- Thanks, Reiji