From: Neeraj Upadhyay SECURE_AVIC_CONTROL MSR is used by the guest to configure and enable Secure AVIC. In order for the guest to be able to successfully do this, the MSR access must not be intercepted. Co-developed-by: Kishon Vijay Abraham I Signed-off-by: Kishon Vijay Abraham I Signed-off-by: Neeraj Upadhyay Co-developed-by: Naveen N Rao (AMD) Signed-off-by: Naveen N Rao (AMD) --- arch/x86/kvm/svm/avic.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/svm/avic.c b/arch/x86/kvm/svm/avic.c index bf701e604a85..6b3983d4f45e 100644 --- a/arch/x86/kvm/svm/avic.c +++ b/arch/x86/kvm/svm/avic.c @@ -437,7 +437,9 @@ void avic_init_vmcb(struct vcpu_svm *svm, struct vmcb *vmcb) { struct kvm_svm *kvm_svm = to_kvm_svm(svm->vcpu.kvm); - if (!snp_is_secure_avic_enabled(svm->vcpu.kvm)) { + if (snp_is_secure_avic_enabled(svm->vcpu.kvm)) { + svm_disable_intercept_for_msr(&svm->vcpu, MSR_AMD64_SAVIC_CONTROL, MSR_TYPE_RW); + } else { vmcb->control.avic_backing_page = avic_get_backing_page_address(svm); vmcb->control.avic_logical_id = __sme_set(__pa(kvm_svm->avic_logical_id_table)); vmcb->control.avic_physical_id = __sme_set(__pa(kvm_svm->avic_physical_id_table)); -- 2.54.0