ia64/xen-unstable

changeset 17953:3d5f28d6e777

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@amd.com>
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Wed Jul 02 17:28:27 2008 +0100 (2008-07-02)
parents 97b4c5c511f0
children e65fe28b5288
files xen/drivers/passthrough/io.c
line diff
     1.1 --- a/xen/drivers/passthrough/io.c	Wed Jul 02 17:26:42 2008 +0100
     1.2 +++ b/xen/drivers/passthrough/io.c	Wed Jul 02 17:28:27 2008 +0100
     1.3 @@ -258,10 +258,12 @@ void hvm_dpci_eoi(struct domain *d, unsi
     1.4      {
     1.5          spin_unlock(&hvm_irq_dpci->dirq_lock);
     1.6  
     1.7 -        stop_timer(&hvm_irq_dpci->hvm_timer[
     1.8 -            domain_irq_to_vector(d, machine_gsi)]);
     1.9          if ( (ent == NULL) || !ent->fields.mask )
    1.10 +        {
    1.11 +            stop_timer(&hvm_irq_dpci->hvm_timer[
    1.12 +                domain_irq_to_vector(d, machine_gsi)]);
    1.13              pirq_guest_eoi(d, machine_gsi);
    1.14 +        }
    1.15      }
    1.16      else
    1.17          spin_unlock(&hvm_irq_dpci->dirq_lock);