Nested posted interrupts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



In commit 705699a139948 ("KVM: nVMX: Enable nested posted interrupt
processing"), nested posted interrupts are implemented such that
vmcs02 uses the same notification vector as vmcs01. I don't understand
how this can work.

Suppose that VCPU0 is in L2, with posted interrupts enabled (for
simplicity, let's say that the notification vector in vmcs12 is 0xf1,
the same as in vmcs01 and vmcs02). Furthermore, suppose that L2 is
halted, with the pin-based vm-execution control for
"external-interrupt exiting" enabled.

Now, suppose that VCPU1 is in L1, and it wants to send an IPI (say
0xc7) to VCPU0 (which it doesn't know is in L2...and shouldn't have to
know). vmx_deliver_posted_interrupt will set the PIR and ON bits in
VCPU0's vmcs01 posted interrupt descriptor and then it will send a
0xf1 IPI to the pCPU running VCPU0.

Hardware will recognize that 0xf1 is the notification vector for
vmcs02, and it will process vmcs02's posted interrupt descriptor.
Finding nothing of interest there, it will return to the halt state,
without a VM-exit.

Something should trigger L0 to synthesize an external interrupt
VM-exit from L2 to L1 for vector 0xc7. However, I don't see how this
happens.

What am I missing?

Thanks,

--jim



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux