KVM: x86: Keep MSR_IA32_XSS unchanged for INIT
authorXiaoyao Li <xiaoyao.li@intel.com>
Wed, 26 Jan 2022 17:22:24 +0000 (17:22 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 1 Feb 2022 16:27:02 +0000 (17:27 +0100)
commit be4f3b3f82271c3193ce200a996dc70682c8e622 upstream.

It has been corrected from SDM version 075 that MSR_IA32_XSS is reset to
zero on Power up and Reset but keeps unchanged on INIT.

Fixes: a554d207dc46 ("KVM: X86: Processor States following Reset or INIT")
Cc: stable@vger.kernel.org
Signed-off-by: Xiaoyao Li <xiaoyao.li@intel.com>
Signed-off-by: Sean Christopherson <seanjc@google.com>
Message-Id: <20220126172226.2298529-2-seanjc@google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
arch/x86/kvm/x86.c

index c89fc57065f1c89e62c99513a7a2e8361ec08c8c..b065e0cfa9985fbf532b235168498a7d8127d00b 100644 (file)
@@ -10990,6 +10990,7 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
                vcpu->arch.msr_misc_features_enables = 0;
 
                vcpu->arch.xcr0 = XFEATURE_MASK_FP;
+               vcpu->arch.ia32_xss = 0;
        }
 
        memset(vcpu->arch.regs, 0, sizeof(vcpu->arch.regs));
@@ -11008,8 +11009,6 @@ void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
                eax = 0x600;
        kvm_rdx_write(vcpu, eax);
 
-       vcpu->arch.ia32_xss = 0;
-
        static_call(kvm_x86_vcpu_reset)(vcpu, init_event);
 
        kvm_set_rflags(vcpu, X86_EFLAGS_FIXED);