aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/xen
diff options
context:
space:
mode:
authorKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-02-16 16:26:44 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-04-14 11:17:56 -0400
commit1eff1ad0285038e309a81da4a004f071608309fb (patch)
tree64c4708b40a95d5ce596859883610ba0b3efa76c /drivers/xen
parente6197acc726ab3baa60375a5891d58c2ee87e0f3 (diff)
xen/irq: The Xen hypervisor cleans up the PIRQs if the other domain forgot.
And if the other domain forgot to clean up its PIRQs we don't need to fail the operation. Just take a note of it and continue on. Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Diffstat (limited to 'drivers/xen')
-rw-r--r--drivers/xen/events.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index e4e8e9a745bf..e51f3c50bd40 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -728,7 +728,14 @@ int xen_destroy_irq(int irq)
728 unmap_irq.pirq = info->u.pirq.pirq; 728 unmap_irq.pirq = info->u.pirq.pirq;
729 unmap_irq.domid = info->u.pirq.domid; 729 unmap_irq.domid = info->u.pirq.domid;
730 rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq); 730 rc = HYPERVISOR_physdev_op(PHYSDEVOP_unmap_pirq, &unmap_irq);
731 if (rc) { 731 /* If another domain quits without making the pci_disable_msix
732 * call, the Xen hypervisor takes care of freeing the PIRQs
733 * (free_domain_pirqs).
734 */
735 if ((rc == -ESRCH && info->u.pirq.domid != DOMID_SELF))
736 printk(KERN_INFO "domain %d does not have %d anymore\n",
737 info->u.pirq.domid, info->u.pirq.pirq);
738 else if (rc) {
732 printk(KERN_WARNING "unmap irq failed %d\n", rc); 739 printk(KERN_WARNING "unmap irq failed %d\n", rc);
733 goto out; 740 goto out;
734 } 741 }