提交 c13f889a 编写于 作者: B Bjorn Helgaas 提交者: Len Brown

ACPI: PCI: fix GSI/IRQ naming confusion

The interrupt numbers from _PRT entries are GSIs, not Linux IRQs.
Signed-off-by: NBjorn Helgaas <bjorn.helgaas@hp.com>
Signed-off-by: NLen Brown <len.brown@intel.com>
上级 b52b3f4a
...@@ -333,7 +333,7 @@ acpi_pci_allocate_irq(struct acpi_prt_entry *entry, ...@@ -333,7 +333,7 @@ acpi_pci_allocate_irq(struct acpi_prt_entry *entry,
*polarity = ACPI_ACTIVE_LOW; *polarity = ACPI_ACTIVE_LOW;
} }
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found IRQ %d\n", irq)); ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found GSI %d\n", irq));
return irq; return irq;
} }
...@@ -432,7 +432,7 @@ acpi_pci_irq_derive(struct pci_dev *dev, ...@@ -432,7 +432,7 @@ acpi_pci_irq_derive(struct pci_dev *dev,
return -1; return -1;
} }
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Derive IRQ %d for device %s from %s\n", ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Derive GSI %d for device %s from %s\n",
irq, pci_name(dev), pci_name(bridge))); irq, pci_name(dev), pci_name(bridge)));
return irq; return irq;
...@@ -446,7 +446,7 @@ acpi_pci_irq_derive(struct pci_dev *dev, ...@@ -446,7 +446,7 @@ acpi_pci_irq_derive(struct pci_dev *dev,
int acpi_pci_irq_enable(struct pci_dev *dev) int acpi_pci_irq_enable(struct pci_dev *dev)
{ {
int irq = 0; int gsi = 0;
u8 pin = 0; u8 pin = 0;
int triggering = ACPI_LEVEL_SENSITIVE; int triggering = ACPI_LEVEL_SENSITIVE;
int polarity = ACPI_ACTIVE_LOW; int polarity = ACPI_ACTIVE_LOW;
...@@ -468,7 +468,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) ...@@ -468,7 +468,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
* First we check the PCI IRQ routing table (PRT) for an IRQ. PRT * First we check the PCI IRQ routing table (PRT) for an IRQ. PRT
* values override any BIOS-assigned IRQs set during boot. * values override any BIOS-assigned IRQs set during boot.
*/ */
irq = acpi_pci_irq_lookup(dev->bus, PCI_SLOT(dev->devfn), pin, gsi = acpi_pci_irq_lookup(dev->bus, PCI_SLOT(dev->devfn), pin,
&triggering, &polarity, &link, &triggering, &polarity, &link,
acpi_pci_allocate_irq); acpi_pci_allocate_irq);
...@@ -476,12 +476,12 @@ int acpi_pci_irq_enable(struct pci_dev *dev) ...@@ -476,12 +476,12 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
* If no PRT entry was found, we'll try to derive an IRQ from the * If no PRT entry was found, we'll try to derive an IRQ from the
* device's parent bridge. * device's parent bridge.
*/ */
if (irq < 0) if (gsi < 0)
irq = acpi_pci_irq_derive(dev, pin, &triggering, gsi = acpi_pci_irq_derive(dev, pin, &triggering,
&polarity, &link, &polarity, &link,
acpi_pci_allocate_irq); acpi_pci_allocate_irq);
if (irq < 0) { if (gsi < 0) {
/* /*
* IDE legacy mode controller IRQs are magic. Why do compat * IDE legacy mode controller IRQs are magic. Why do compat
* extensions always make such a nasty mess. * extensions always make such a nasty mess.
...@@ -494,7 +494,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) ...@@ -494,7 +494,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
* No IRQ known to the ACPI subsystem - maybe the BIOS / * No IRQ known to the ACPI subsystem - maybe the BIOS /
* driver reported one, then use it. Exit in any case. * driver reported one, then use it. Exit in any case.
*/ */
if (irq < 0) { if (gsi < 0) {
dev_warn(&dev->dev, "PCI INT %c: no GSI", 'A' + pin); dev_warn(&dev->dev, "PCI INT %c: no GSI", 'A' + pin);
/* Interrupt Line values above 0xF are forbidden */ /* Interrupt Line values above 0xF are forbidden */
if (dev->irq > 0 && (dev->irq <= 0xF)) { if (dev->irq > 0 && (dev->irq <= 0xF)) {
...@@ -508,7 +508,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) ...@@ -508,7 +508,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
} }
} }
rc = acpi_register_gsi(irq, triggering, polarity); rc = acpi_register_gsi(gsi, triggering, polarity);
if (rc < 0) { if (rc < 0) {
dev_warn(&dev->dev, "PCI INT %c: failed to register GSI\n", dev_warn(&dev->dev, "PCI INT %c: failed to register GSI\n",
'A' + pin); 'A' + pin);
...@@ -522,7 +522,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev) ...@@ -522,7 +522,7 @@ int acpi_pci_irq_enable(struct pci_dev *dev)
link_desc[0] = '\0'; link_desc[0] = '\0';
dev_info(&dev->dev, "PCI INT %c%s -> GSI %u (%s, %s) -> IRQ %d\n", dev_info(&dev->dev, "PCI INT %c%s -> GSI %u (%s, %s) -> IRQ %d\n",
'A' + pin, link_desc, irq, 'A' + pin, link_desc, gsi,
(triggering == ACPI_LEVEL_SENSITIVE) ? "level" : "edge", (triggering == ACPI_LEVEL_SENSITIVE) ? "level" : "edge",
(polarity == ACPI_ACTIVE_LOW) ? "low" : "high", dev->irq); (polarity == ACPI_ACTIVE_LOW) ? "low" : "high", dev->irq);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册