aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@citrix.com>2011-02-18 11:43:33 -0500
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>2011-03-10 14:44:41 -0500
commit8135591e90c81462a6902f6ffa1f1ca021db077a (patch)
treefe56b7166bc9a7bfd6e3d0edf1021878e439726a
parentbf480d952bcf25e8ff7e95d2a23964107513ac51 (diff)
xen: events: refactor xen_create_msi_irq slightly
Calling PHYSDEVOP_map_pirq earlier simplifies error handling and starts to make the tail end of this function look like xen_bind_pirq_msi_to_irq. Signed-off-by: Ian Campbell <ian.campbell@citrix.com> Signed-off-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
-rw-r--r--drivers/xen/events.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/drivers/xen/events.c b/drivers/xen/events.c
index 1033f6284f31..b54285e27b3b 100644
--- a/drivers/xen/events.c
+++ b/drivers/xen/events.c
@@ -716,6 +716,12 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
716 map_irq.entry_nr = msidesc->msi_attrib.entry_nr; 716 map_irq.entry_nr = msidesc->msi_attrib.entry_nr;
717 } 717 }
718 718
719 rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
720 if (rc) {
721 dev_warn(&dev->dev, "xen map irq failed %d\n", rc);
722 goto out;
723 }
724
719 spin_lock(&irq_mapping_update_lock); 725 spin_lock(&irq_mapping_update_lock);
720 726
721 irq = xen_allocate_irq_dynamic(); 727 irq = xen_allocate_irq_dynamic();
@@ -723,15 +729,6 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
723 if (irq == -1) 729 if (irq == -1)
724 goto out; 730 goto out;
725 731
726 rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
727 if (rc) {
728 printk(KERN_WARNING "xen map irq failed %d\n", rc);
729
730 xen_free_irq(irq);
731
732 irq = -1;
733 goto out;
734 }
735 irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index); 732 irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index);
736 733
737 set_irq_chip_and_handler_name(irq, &xen_pirq_chip, 734 set_irq_chip_and_handler_name(irq, &xen_pirq_chip,