]>
Commit | Line | Data |
---|---|---|
122a994b JR |
1 | diff -urNp linux-850/arch/i386/kernel/dmi_scan.c linux-860/arch/i386/kernel/dmi_scan.c |
2 | --- linux-850/arch/i386/kernel/dmi_scan.c | |
3 | +++ linux-860/arch/i386/kernel/dmi_scan.c | |
4 | @@ -11,6 +11,8 @@ | |
5 | #include <asm/system.h> | |
6 | #include <linux/bootmem.h> | |
7 | ||
8 | +#include "pci-i386.h" | |
9 | + | |
10 | unsigned long dmi_broken; | |
11 | int is_sony_vaio_laptop; | |
12 | ||
13 | @@ -447,6 +449,8 @@ static __init int swab_apm_power_in_minu | |
14 | */ | |
15 | ||
16 | extern int skip_ioapic_setup; | |
17 | +extern int broken_440gx_bios; | |
18 | +extern unsigned int pci_probe; | |
19 | static __init int broken_pirq(struct dmi_blacklist *d) | |
20 | { | |
21 | printk(KERN_ERR " *** Possibly defective BIOS detected (irqtable)\n"); | |
22 | @@ -457,6 +461,9 @@ static __init int broken_pirq(struct dmi | |
23 | #ifdef CONFIG_X86_IO_APIC | |
24 | skip_ioapic_setup = 0; | |
25 | #endif | |
26 | + broken_440gx_bios = 1; | |
27 | + pci_probe |= PCI_BIOS_IRQ_SCAN; | |
28 | + | |
29 | return 0; | |
30 | } | |
31 | ||
32 | diff -urNp linux-850/arch/i386/kernel/pci-irq.c linux-860/arch/i386/kernel/pci-irq.c | |
33 | --- linux-850/arch/i386/kernel/pci-irq.c | |
34 | +++ linux-860/arch/i386/kernel/pci-irq.c | |
35 | @@ -23,6 +23,7 @@ | |
36 | #define PIRQ_VERSION 0x0100 | |
37 | ||
38 | int broken_hp_bios_irq9; | |
39 | +int broken_440gx_bios; | |
40 | ||
41 | static struct irq_routing_table *pirq_table; | |
42 | ||
43 | @@ -681,7 +682,10 @@ static int pcibios_lookup_irq(struct pci | |
44 | void __init pcibios_irq_init(void) | |
45 | { | |
46 | DBG("PCI: IRQ init\n"); | |
47 | - pirq_table = pirq_find_routing_table(); | |
48 | + if (broken_440gx_bios) | |
49 | + pirq_table = NULL; | |
50 | + else | |
51 | + pirq_table = pirq_find_routing_table(); | |
52 | #ifdef CONFIG_PCI_BIOS | |
53 | if (!pirq_table && (pci_probe & PCI_BIOS_IRQ_SCAN)) | |
54 | pirq_table = pcibios_get_irq_routing_table(); |