Re: [PART1 RFC v3 07/12] svm: Add interrupt injection via AVIC

From: Suravee Suthikulpanit
Date: Tue Apr 05 2016 - 11:57:09 EST


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