• Wincy Van's avatar
    KVM: nVMX: Enable nested posted interrupt processing · 705699a1
    Wincy Van authored
    If vcpu has a interrupt in vmx non-root mode, injecting that interrupt
    requires a vmexit.  With posted interrupt processing, the vmexit
    is not needed, and interrupts are fully taken care of by hardware.
    In nested vmx, this feature avoids much more vmexits than non-nested vmx.
    
    When L1 asks L0 to deliver L1's posted interrupt vector, and the target
    VCPU is in non-root mode, we use a physical ipi to deliver POSTED_INTR_NV
    to the target vCPU.  Using POSTED_INTR_NV avoids unexpected interrupts
    if a concurrent vmexit happens and L1's vector is different with L0's.
    The IPI triggers posted interrupt processing in the target physical CPU.
    
    In case the target vCPU was not in guest mode, complete the posted
    interrupt delivery on the next entry to L2.
    Signed-off-by: default avatarWincy Van <fanwenyi0529@gmail.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    705699a1
lapic.c 50.1 KB