diff -r 1d7221667204 xen/drivers/passthrough/io.c --- a/xen/drivers/passthrough/io.c Thu Oct 08 09:24:32 2009 +0100 +++ b/xen/drivers/passthrough/io.c Fri Oct 16 16:38:06 2009 +0800 @@ -26,6 +26,7 @@ #include static void hvm_dirq_assist(unsigned long _d); +static void __msi_pirq_eoi(struct domain *d, int pirq); static int pt_irq_need_timer(uint32_t flags) { @@ -194,7 +195,9 @@ spin_unlock(&d->event_lock); return -EBUSY; } - + + __msi_pirq_eoi(d, pirq); + /* if pirq is already mapped as vmsi, update the guest data/addr */ old_gvec = hvm_irq_dpci->mirq[pirq].gmsi.gvec; hvm_irq_dpci->mirq[pirq].gmsi.gvec = pt_irq_bind->u.msi.gvec;