diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c index a0537decfb10b39a81dac1ea28203ef4244694cf..d57fb78a6337d28f19667a9be2b7b68a96cccb81 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -1404,7 +1404,12 @@ static void init_vmcb(struct kvm_vcpu *vcpu) * of MSR_IA32_SPEC_CTRL. */ if (boot_cpu_has(X86_FEATURE_V_SPEC_CTRL)) - set_msr_interception(vcpu, svm->msrpm, MSR_IA32_SPEC_CTRL, 1, 1); + set_msr_interception(vcpu, svm->msrpm, MSR_IA32_SPEC_CTRL, + !!guest_has_spec_ctrl_msr(vcpu), + !!guest_has_spec_ctrl_msr(vcpu)); + else + set_msr_interception(vcpu, svm->msrpm, MSR_IA32_SPEC_CTRL, + !svm->spec_ctrl, !svm->spec_ctrl); if (kvm_vcpu_apicv_active(vcpu)) avic_init_vmcb(svm, vmcb);