On Wed, Dec 30, 2020, Borislav Petkov wrote: > On Tue, Dec 22, 2020 at 04:31:55PM -0600, Babu Moger wrote: > > @@ -2549,7 +2559,10 @@ static int svm_get_msr(struct kvm_vcpu *vcpu, struct msr_data *msr_info) > > !guest_cpuid_has(vcpu, X86_FEATURE_AMD_SSBD)) > > return 1; > > > > - msr_info->data = svm->spec_ctrl; > > + if (static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) > > + msr_info->data = svm->vmcb->save.spec_ctrl; > > + else > > + msr_info->data = svm->spec_ctrl; > > break; > > case MSR_AMD64_VIRT_SPEC_CTRL: > > if (!msr_info->host_initiated && > > @@ -2640,6 +2653,8 @@ static int svm_set_msr(struct kvm_vcpu *vcpu, struct msr_data *msr) > > return 1; > > > > svm->spec_ctrl = data; > > + if (static_cpu_has(X86_FEATURE_V_SPEC_CTRL)) > > + svm->vmcb->save.spec_ctrl = data; > > if (!data) > > break; > > > > Are the get/set_msr() accessors such a fast path that they need > static_cpu_has() ? Nope, they can definitely use boot_cpu_has().