[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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.