[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] evtchn_upcall_mask for PV-on-HVM
On 30/11/06 13:56, "Tian, Kevin" <kevin.tian@xxxxxxxxx> wrote: >> Local_events_need_delivery() should check for pending APIC/PIC >> interrupts on >> HVM. That'll fix the block() wakeup-waiting race too. >> >> -- Keir > > Hi, Keir, > Sorry that I didn't quite catch you. Did you mean check for > pending interrupts for same gsi line (used as callback irq)? Whether > to actually pending an irq instance is decided by APIC/PIC themselves, > right? Vmx_intr_assit just needs to check status of > evtchn_upcall_pending which serves as a virtual wire state. BTW, > what's the block() wakeup-waiting race above? :-) I mean that the evtchn_upcall_pending flag is not the master flag indicating whether there are pending interrupts for an HVM guest. So it is not the correct thing to test in local_events_need_delivery(). The correct thing to test is whether there are any interrupts pending from the PIC/IOAPIC. The wakeup-waiting race is that a VCPU may block just when, for example, the qemu-dm rtl8139 device model is asserting an interrupt. It will try to vcpu_kick() and send an IPI to the CPU that is running the HVM VCPU. However, before that IPI is received the other CPU may block the HVM VCPU (after checking for local_events_need_delivery() which will in this case return 0). So the rtl8139 interrupt does not prevent the HVM VCPU from blocking, which is a bug. - Keir _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |