]> git.karo-electronics.de Git - linux-beck.git/commitdiff
x86: ioapic: Use irq_alloc/free_hwirq()
authorThomas Gleixner <tglx@linutronix.de>
Wed, 7 May 2014 15:44:09 +0000 (15:44 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Fri, 16 May 2014 12:05:19 +0000 (14:05 +0200)
No functional change just less crap.

This does not replace the requirement to move x86 to irq domains, but
it limits the mess to some degree.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Grant Likely <grant.likely@linaro.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: x86@kernel.org
Link: http://lkml.kernel.org/r/20140507154335.749579081@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
arch/x86/kernel/apic/io_apic.c

index b7175c0c552cb081b4d79387aa88f4d5a27f5da4..3c17b25d159dec4553adbaf004faf82c3fe91b71 100644 (file)
@@ -3169,8 +3169,8 @@ int setup_msi_irq(struct pci_dev *dev, struct msi_desc *msidesc,
 
 int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
 {
-       unsigned int irq, irq_want;
        struct msi_desc *msidesc;
+       unsigned int irq;
        int node, ret;
 
        /* Multiple MSI vectors only supported with interrupt remapping */
@@ -3178,28 +3178,25 @@ int native_setup_msi_irqs(struct pci_dev *dev, int nvec, int type)
                return 1;
 
        node = dev_to_node(&dev->dev);
-       irq_want = nr_irqs_gsi;
+
        list_for_each_entry(msidesc, &dev->msi_list, list) {
-               irq = create_irq_nr(irq_want, node);
-               if (irq == 0)
+               irq = irq_alloc_hwirq(node);
+               if (!irq)
                        return -ENOSPC;
 
-               irq_want = irq + 1;
-
                ret = setup_msi_irq(dev, msidesc, irq, 0);
-               if (ret < 0)
-                       goto error;
+               if (ret < 0) {
+                       irq_free_hwirq(irq);
+                       return ret;
+               }
+
        }
        return 0;
-
-error:
-       destroy_irq(irq);
-       return ret;
 }
 
 void native_teardown_msi_irq(unsigned int irq)
 {
-       destroy_irq(irq);
+       irq_free_hwirq(irq);
 }
 
 #ifdef CONFIG_DMAR_TABLE