xen: events: refactor xen_create_msi_irq slightly
authorIan Campbell <ian.campbell@citrix.com>
Fri, 18 Feb 2011 16:43:33 +0000 (16:43 +0000)
committerKonrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Thu, 10 Mar 2011 19:44:41 +0000 (14:44 -0500)
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>
drivers/xen/events.c

index 1033f62..b54285e 100644 (file)
@@ -716,6 +716,12 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
                map_irq.entry_nr = msidesc->msi_attrib.entry_nr;
        }
 
+       rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
+       if (rc) {
+               dev_warn(&dev->dev, "xen map irq failed %d\n", rc);
+               goto out;
+       }
+
        spin_lock(&irq_mapping_update_lock);
 
        irq = xen_allocate_irq_dynamic();
@@ -723,15 +729,6 @@ int xen_create_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc, int type)
        if (irq == -1)
                goto out;
 
-       rc = HYPERVISOR_physdev_op(PHYSDEVOP_map_pirq, &map_irq);
-       if (rc) {
-               printk(KERN_WARNING "xen map irq failed %d\n", rc);
-
-               xen_free_irq(irq);
-
-               irq = -1;
-               goto out;
-       }
        irq_info[irq] = mk_pirq_info(0, map_irq.pirq, 0, map_irq.index);
 
        set_irq_chip_and_handler_name(irq, &xen_pirq_chip,