[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] iommu: Fix hvm_dpci_eoi for smp guest in ioapic interrupt mode
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1215016107 -3600 # Node ID 3d5f28d6e77711d3b5adb8fd75cd05fe0537302d # Parent 97b4c5c511f04dc91ae2637e076d325ed91d01e7 iommu: Fix hvm_dpci_eoi for smp guest in ioapic interrupt mode My testing shows, for some smp guests, ent->fields.mask will not be unmasked when hvm_dpci_eoi() is invoked at the first time. In that case, we should rely on timeout call back to do pirq_guest_eoi() and should not stop the per-irq timer too early. From: Wei Wang <wei.wang2@xxxxxxx> Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx> --- xen/drivers/passthrough/io.c | 6 ++++-- 1 files changed, 4 insertions(+), 2 deletions(-) diff -r 97b4c5c511f0 -r 3d5f28d6e777 xen/drivers/passthrough/io.c --- a/xen/drivers/passthrough/io.c Wed Jul 02 17:26:42 2008 +0100 +++ b/xen/drivers/passthrough/io.c Wed Jul 02 17:28:27 2008 +0100 @@ -258,10 +258,12 @@ void hvm_dpci_eoi(struct domain *d, unsi { spin_unlock(&hvm_irq_dpci->dirq_lock); - stop_timer(&hvm_irq_dpci->hvm_timer[ - domain_irq_to_vector(d, machine_gsi)]); if ( (ent == NULL) || !ent->fields.mask ) + { + stop_timer(&hvm_irq_dpci->hvm_timer[ + domain_irq_to_vector(d, machine_gsi)]); pirq_guest_eoi(d, machine_gsi); + } } else spin_unlock(&hvm_irq_dpci->dirq_lock); _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |