Commit f3995c32 authored by Len Brown's avatar Len Brown

[ACPI] enable 440GX PIRQ router workaround

parent f4b67000
...@@ -412,30 +412,6 @@ static __init int swab_apm_power_in_minutes(struct dmi_blacklist *d) ...@@ -412,30 +412,6 @@ static __init int swab_apm_power_in_minutes(struct dmi_blacklist *d)
return 0; return 0;
} }
/*
* The Intel 440GX hall of shame.
*
* On many (all we have checked) of these boxes the $PIRQ table is wrong.
* The MP1.4 table is right however and so SMP kernels tend to work.
*/
static __init int broken_pirq(struct dmi_blacklist *d)
{
printk(KERN_INFO " *** Possibly defective BIOS detected (irqtable)\n");
printk(KERN_INFO " *** Many BIOSes matching this signature have incorrect IRQ routing tables.\n");
printk(KERN_INFO " *** If you see IRQ problems, in particular SCSI resets and hangs at boot\n");
printk(KERN_INFO " *** contact your hardware vendor and ask about updates.\n");
printk(KERN_INFO " *** Building an SMP kernel may evade the bug some of the time.\n");
#ifdef CONFIG_X86_IO_APIC
{
extern int skip_ioapic_setup;
skip_ioapic_setup = 0;
}
#endif
return 0;
}
/* /*
* ASUS K7V-RM has broken ACPI table defining sleep modes * ASUS K7V-RM has broken ACPI table defining sleep modes
*/ */
...@@ -811,52 +787,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={ ...@@ -811,52 +787,6 @@ static __initdata struct dmi_blacklist dmi_blacklist[]={
NO_MATCH, NO_MATCH NO_MATCH, NO_MATCH
} }, } },
/* Problem Intel 440GX bioses */
{ broken_pirq, "SABR1 Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"SABR1"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0094.P10"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0115.P12"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0120.P12"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0125.P13"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "l44GX Bios", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "Intel Corporation"),
MATCH(DMI_BIOS_VERSION,"L440GX0.86B.0066.P07.9906041405"),
NO_MATCH, NO_MATCH
} },
{ broken_pirq, "IBM xseries 370", { /* Bad $PIR */
MATCH(DMI_BIOS_VENDOR, "IBM"),
MATCH(DMI_BIOS_VERSION,"MMKT33AUS"),
NO_MATCH, NO_MATCH
} },
/* Intel in disguise - In this case they can't hide and they don't run
too well either... */
{ broken_pirq, "Dell PowerEdge 8450", { /* Bad $PIR */
MATCH(DMI_PRODUCT_NAME, "Dell PowerEdge 8450"),
NO_MATCH, NO_MATCH, NO_MATCH
} },
{ broken_acpi_Sx, "ASUS K7V-RM", { /* Bad ACPI Sx table */ { broken_acpi_Sx, "ASUS K7V-RM", { /* Bad ACPI Sx table */
MATCH(DMI_BIOS_VERSION,"ASUS K7V-RM ACPI BIOS Revision 1003A"), MATCH(DMI_BIOS_VERSION,"ASUS K7V-RM ACPI BIOS Revision 1003A"),
MATCH(DMI_BOARD_NAME, "<K7V-RM>"), MATCH(DMI_BOARD_NAME, "<K7V-RM>"),
......
...@@ -452,15 +452,12 @@ static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq, ...@@ -452,15 +452,12 @@ static int pirq_bios_set(struct pci_dev *router, struct pci_dev *dev, int pirq,
static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device) static __init int intel_router_probe(struct irq_router *r, struct pci_dev *router, u16 device)
{ {
#if 0 /* Let's see what chip this is supposed to be ... */ /* 440GX has a proprietary PIRQ router -- don't use it */
/* We must not touch 440GX even if we have tables. 440GX has
different IRQ routing weirdness */
if ( pci_find_device(PCI_VENDOR_ID_INTEL, if ( pci_find_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_82443GX_0, NULL) || PCI_DEVICE_ID_INTEL_82443GX_0, NULL) ||
pci_find_device(PCI_VENDOR_ID_INTEL, pci_find_device(PCI_VENDOR_ID_INTEL,
PCI_DEVICE_ID_INTEL_82443GX_2, NULL)) PCI_DEVICE_ID_INTEL_82443GX_2, NULL))
return 0; return 0;
#endif
switch(device) switch(device)
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment