aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFengzhe Zhang <fengzhe.zhang@intel.com>2011-01-27 11:31:46 +0000
committerFengzhe Zhang <fengzhe.zhang@intel.com>2011-01-27 11:31:46 +0000
commit92585dd6a9557b7d4842260cdb2d2a4da0d5f854 (patch)
treea6e0131115d52ac45a3d6a065572886371137b98
parentb920b2c76176ef8850806fb578a4619f1a83e51f (diff)
downloadxen-92585dd6a9557b7d4842260cdb2d2a4da0d5f854.tar.gz
xen-92585dd6a9557b7d4842260cdb2d2a4da0d5f854.tar.bz2
xen-92585dd6a9557b7d4842260cdb2d2a4da0d5f854.zip
vtd: Fix for irq bind failure after PCI attaching 32 times
Originally when detaching a PCI device, pirq_to_emuirq and pirq_to_irq are freed via hypercall do_physdev_op. Now in function pt_irq_destroy_bind_vtd, duplicated logic is added to free pirq_to_emuirq, but not pirq_to_irq. This causes do_physdev_op fail to free both emuirq and irq. After attaching a PCI device for 32 times, irq resources run out. This patch removes the redundant logic. Signed-off-by: Fengzhe Zhang <fengzhe.zhang@intel.com>
-rw-r--r--xen/drivers/passthrough/io.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/xen/drivers/passthrough/io.c b/xen/drivers/passthrough/io.c
index 6e85b6b654..86ae0af14f 100644
--- a/xen/drivers/passthrough/io.c
+++ b/xen/drivers/passthrough/io.c
@@ -375,7 +375,6 @@ int pt_irq_destroy_bind_vtd(
hvm_irq_dpci->mirq[machine_gsi].dom = NULL;
hvm_irq_dpci->mirq[machine_gsi].flags = 0;
clear_bit(machine_gsi, hvm_irq_dpci->mapping);
- unmap_domain_pirq_emuirq(d, machine_gsi);
}
}
spin_unlock(&d->event_lock);