PCI: add boot interrupt reroute DMI-quirk for ASUS M2N-LR
PATCH 1/1 PCI: add boot interrupt reroute DMI-quirk for ASUS M2N-LR
The ASUS M2N-LR should not trigger boot interrupt quirks although it carries an Intel 6702PXH. On this board the boot interrupt quirks cause incorrect IRQ assignments and should be disabled.
Fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=43074
Signed-off-by Stefan Assmann <[email protected]>
--- drivers/pci/quirks.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)
drivers/pci/quirks.c +23 -0
@@ -1685,6 +1685,28 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260a, quirk_intel_pcie_pm);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL ,0x260b , quirk_intel_pcie_pm);#ifdef CONFIG_X86_IO_APIC +static int dmi_disable_ioapicreroute (const struct dmi_system_id *d) +{ + noioapicreroute =1 ; +pr_info ("%s detected: disable boot interrupt reroute\n" , d->ident); + +return 0 ; +} +static struct dmi_system_id boot_interrupt_dmi_table[] = { +/* +* Systems to exclude from boot interrupt reroute quirks +*/ + { + .callback = dmi_disable_ioapicreroute, + .ident ="ASUSTek Computer INC. M2N-LR" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTek Computer INC." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"M2N-LR" ), + }, + }, + {} +}; +/* * Boot interrupts on some chipsets cannot be turned off. For these chipsets, * remap the original interrupt in the linux kernel to the boot interrupt, so
@@ -1693,6 +1715,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm);*/ static void quirk_reroute_to_boot_interrupts_intel (struct pci_dev *dev) { +dmi_check_system (boot_interrupt_dmi_table);if (noioapicquirk || noioapicreroute)return ;
Signature · 1 line
2.9.3
[+cc Solomon]
Quoted 8 lines · Stefan Assmann
The ASUS M2N-LR should not trigger boot interrupt quirks although it carries an Intel 6702PXH. On this board the boot interrupt quirks cause incorrect IRQ assignments and should be disabled.
Fixes:
https://bugzilla.kernel.org/show_bug.cgi?id=43074Signed-off-by Stefan Assmann <[email protected]>
Applied with Solomon's tested-by to pci/irq for v4.12, thanks!
Quoted 48 lines
--- drivers/pci/quirks.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+)drivers/pci/quirks.c +23
-0@@ -1685,6 +1685,28 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260a, quirk_intel_pcie_pm);DECLARE_PCI_FIXUP_FINAL (PCI_VENDOR_ID_INTEL ,0x260b , quirk_intel_pcie_pm);#ifdef CONFIG_X86_IO_APIC +static int dmi_disable_ioapicreroute (const struct dmi_system_id *d) +{ + noioapicreroute =1 ; +pr_info ("%s detected: disable boot interrupt reroute\n" , d->ident); + +return 0 ; +} +static struct dmi_system_id boot_interrupt_dmi_table[] = { +/* +* Systems to exclude from boot interrupt reroute quirks +*/ + { + .callback = dmi_disable_ioapicreroute, + .ident ="ASUSTek Computer INC. M2N-LR" , + .matches = { +DMI_MATCH (DMI_SYS_VENDOR ,"ASUSTek Computer INC." ), +DMI_MATCH (DMI_PRODUCT_NAME ,"M2N-LR" ), + }, + }, + {} +}; +/* * Boot interrupts on some chipsets cannot be turned off. For these chipsets, * remap the original interrupt in the linux kernel to the boot interrupt, so @@ -1693,6 +1715,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x260b, quirk_intel_pcie_pm);*/ static void quirk_reroute_to_boot_interrupts_intel (struct pci_dev *dev) { +dmi_check_system (boot_interrupt_dmi_table);if (noioapicquirk || noioapicreroute)return ;Signature · 1 line
2.9.3