On Fri, 2024-05-17 at 10:39 -0700, Sean Christopherson wrote: > When making runtime CPUID updates, change OSXSAVE and OSPKE even if their > respective base features (XSAVE, PKU) are not supported by the host. KVM > already incorporates host support in the vCPU's effective reserved CR4 bits. > I.e. OSXSAVE and OSPKE can be set if and only if the host supports them. > > And conversely, since KVM's ABI is that KVM owns the dynamic OS feature > flags, clearing them when they obviously aren't supported and thus can't > be enabled is arguably a fix. > > Signed-off-by: Sean Christopherson <seanjc@xxxxxxxxxx> > --- > arch/x86/kvm/cpuid.c | 8 +++----- > 1 file changed, 3 insertions(+), 5 deletions(-) > > diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c > index 8256fc657c6b..552e65ba5efa 100644 > --- a/arch/x86/kvm/cpuid.c > +++ b/arch/x86/kvm/cpuid.c > @@ -336,10 +336,8 @@ void kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu) > > best = kvm_find_cpuid_entry(vcpu, 1); > if (best) { > - /* Update OSXSAVE bit */ > - if (boot_cpu_has(X86_FEATURE_XSAVE)) > - cpuid_entry_change(best, X86_FEATURE_OSXSAVE, > - kvm_is_cr4_bit_set(vcpu, X86_CR4_OSXSAVE)); > + cpuid_entry_change(best, X86_FEATURE_OSXSAVE, > + kvm_is_cr4_bit_set(vcpu, X86_CR4_OSXSAVE)); > > cpuid_entry_change(best, X86_FEATURE_APIC, > vcpu->arch.apic_base & MSR_IA32_APICBASE_ENABLE); > @@ -351,7 +349,7 @@ void kvm_update_cpuid_runtime(struct kvm_vcpu *vcpu) > } > > best = kvm_find_cpuid_entry_index(vcpu, 7, 0); > - if (best && boot_cpu_has(X86_FEATURE_PKU)) > + if (best) > cpuid_entry_change(best, X86_FEATURE_OSPKE, > kvm_is_cr4_bit_set(vcpu, X86_CR4_PKE)); > Reviewed-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky