diff options
Diffstat (limited to 'drivers/pci')
-rw-r--r-- | drivers/pci/quirks.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c index eb97564316d0..ac634ae2eb08 100644 --- a/drivers/pci/quirks.c +++ b/drivers/pci/quirks.c | |||
@@ -1365,6 +1365,34 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm); | |||
1365 | 1365 | ||
1366 | #ifdef CONFIG_X86_IO_APIC | 1366 | #ifdef CONFIG_X86_IO_APIC |
1367 | /* | 1367 | /* |
1368 | * Boot interrupts on some chipsets cannot be turned off. For these chipsets, | ||
1369 | * remap the original interrupt in the linux kernel to the boot interrupt, so | ||
1370 | * that a PCI device's interrupt handler is installed on the boot interrupt | ||
1371 | * line instead. | ||
1372 | */ | ||
1373 | static void quirk_reroute_to_boot_interrupts_intel(struct pci_dev *dev) | ||
1374 | { | ||
1375 | int i; | ||
1376 | |||
1377 | if (noioapicquirk) | ||
1378 | return; | ||
1379 | |||
1380 | dev->irq_reroute_variant = INTEL_IRQ_REROUTE_VARIANT; | ||
1381 | |||
1382 | printk(KERN_INFO "PCI quirk: reroute interrupts for 0x%04x:0x%04x\n", | ||
1383 | dev->vendor, dev->device); | ||
1384 | return; | ||
1385 | } | ||
1386 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_0, quirk_reroute_to_boot_interrupts_intel); | ||
1387 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80333_1, quirk_reroute_to_boot_interrupts_intel); | ||
1388 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ESB2_0, quirk_reroute_to_boot_interrupts_intel); | ||
1389 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_0, quirk_reroute_to_boot_interrupts_intel); | ||
1390 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXH_1, quirk_reroute_to_boot_interrupts_intel); | ||
1391 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_PXHV, quirk_reroute_to_boot_interrupts_intel); | ||
1392 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_0, quirk_reroute_to_boot_interrupts_intel); | ||
1393 | DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_80332_1, quirk_reroute_to_boot_interrupts_intel); | ||
1394 | |||
1395 | /* | ||
1368 | * On some chipsets we can disable the generation of legacy INTx boot | 1396 | * On some chipsets we can disable the generation of legacy INTx boot |
1369 | * interrupts. | 1397 | * interrupts. |
1370 | */ | 1398 | */ |