|
@@ -1685,6 +1685,29 @@ 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 +1716,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;
|
|
|
|