Hi Paolo,

On 4/5/16 20:26, Suravee Suthikulpanit wrote:
@@ -2877,8 +2895,10 @@ static int clgi_interception(struct vcpu_svm
*svm)
      disable_gif(svm);

      /* After a CLGI no interrupts should come */
-    svm_clear_vintr(svm);
-    svm->vmcb->control.int_ctl &= ~V_IRQ_MASK;
+    if (!svm_vcpu_avic_enabled(svm)) {
+        svm_clear_vintr(svm);
+        svm->vmcb->control.int_ctl &= ~V_IRQ_MASK;
+    }

This is for nested virtualization.  Unless you support nested AVIC, the
L2 guest should run without AVIC (i.e. IsRunning should be false) and
use the old VINTR mechanism.

I see. I am not planning to supported nested AVIC at the L2 level for
the moment. If it is alright, I would like to get the basic AVIC and
IOMMU in first (unless you have a different opinion).

In that case, I think I should also make sure to not expose AVIC CPUID
to the guest VM.

Actually, it should have already not set the AVIC CPUID in the L1 guest.

Thanks,
Suravee

Reply via email to