On 26/01/21 09:18, Wei Huang wrote:

@@ -288,6 +290,9 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer)
                if (!(efer & EFER_SVME)) {
                        svm_leave_nested(svm);
                        svm_set_gif(svm, true);
+                       /* #GP intercept is still needed in vmware_backdoor */
+                       if (!enable_vmware_backdoor)
+                               clr_exception_intercept(svm, GP_VECTOR);
/*
                         * Free the nested guest state, unless we are in SMM.
@@ -309,6 +314,10 @@ int svm_set_efer(struct kvm_vcpu *vcpu, u64 efer)
svm->vmcb->save.efer = efer | EFER_SVME;
        vmcb_mark_dirty(svm->vmcb, VMCB_CR);
+       /* Enable #GP interception for SVM instructions */
+       if (svm_gp_erratum_intercept)
+               set_exception_intercept(svm, GP_VECTOR);
+
        return 0;
 }

This should be in the "if (!(efer & EFER_SVME)) else" branch. I'll fix it up myself.

Paolo

Reply via email to