提交 d24a1354 编写于 作者: T Thomas Gleixner

x86: irq_remapping: Use irq_alloc/free_hwirq()

The create_irq variants are going away. Use the new interface. The
core and arch code already excludes the gsi interrupts from the
allocation, so no functional change.

This does not replace the requirement to move x86 to irq domains, but
it limits the mess to some degree.
Signed-off-by: NThomas Gleixner <tglx@linutronix.de>
Reviewed-by: NGrant Likely <grant.likely@linaro.org>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Acked-by: NJoerg Roedel <joro@8bytes.org>
Cc: x86@kernel.org
Cc: iommu@lists.linux-foundation.org
Link: http://lkml.kernel.org/r/20140507154334.741805075@linutronix.deSigned-off-by: NThomas Gleixner <tglx@linutronix.de>
上级 b1ee5441
...@@ -51,7 +51,7 @@ static void irq_remapping_disable_io_apic(void) ...@@ -51,7 +51,7 @@ static void irq_remapping_disable_io_apic(void)
static int do_setup_msi_irqs(struct pci_dev *dev, int nvec) static int do_setup_msi_irqs(struct pci_dev *dev, int nvec)
{ {
int node, ret, sub_handle, nvec_pow2, index = 0; int ret, sub_handle, nvec_pow2, index = 0;
unsigned int irq; unsigned int irq;
struct msi_desc *msidesc; struct msi_desc *msidesc;
...@@ -61,8 +61,7 @@ static int do_setup_msi_irqs(struct pci_dev *dev, int nvec) ...@@ -61,8 +61,7 @@ static int do_setup_msi_irqs(struct pci_dev *dev, int nvec)
WARN_ON(msidesc->msi_attrib.multiple); WARN_ON(msidesc->msi_attrib.multiple);
WARN_ON(msidesc->nvec_used); WARN_ON(msidesc->nvec_used);
node = dev_to_node(&dev->dev); irq = irq_alloc_hwirqs(nvec, dev_to_node(&dev->dev));
irq = __create_irqs(get_nr_irqs_gsi(), nvec, node);
if (irq == 0) if (irq == 0)
return -ENOSPC; return -ENOSPC;
...@@ -89,7 +88,7 @@ static int do_setup_msi_irqs(struct pci_dev *dev, int nvec) ...@@ -89,7 +88,7 @@ static int do_setup_msi_irqs(struct pci_dev *dev, int nvec)
return 0; return 0;
error: error:
destroy_irqs(irq, nvec); irq_free_hwirqs(irq, nvec);
/* /*
* Restore altered MSI descriptor fields and prevent just destroyed * Restore altered MSI descriptor fields and prevent just destroyed
...@@ -109,12 +108,11 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec) ...@@ -109,12 +108,11 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec)
unsigned int irq; unsigned int irq;
node = dev_to_node(&dev->dev); node = dev_to_node(&dev->dev);
irq = get_nr_irqs_gsi();
sub_handle = 0; sub_handle = 0;
list_for_each_entry(msidesc, &dev->msi_list, list) { list_for_each_entry(msidesc, &dev->msi_list, list) {
irq = create_irq_nr(irq, node); irq = irq_alloc_hwirq(node);
if (irq == 0) if (irq == 0)
return -1; return -1;
...@@ -137,7 +135,7 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec) ...@@ -137,7 +135,7 @@ static int do_setup_msix_irqs(struct pci_dev *dev, int nvec)
return 0; return 0;
error: error:
destroy_irq(irq); irq_free_hwirq(irq);
return ret; return ret;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册