]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blob - src/patches/suse-2.6.27.25/patches.arch/x86-introduce-pci-ioapicreroute-kernel-cmdline.patch
Reenabled linux-xen and xen-image build
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.25 / patches.arch / x86-introduce-pci-ioapicreroute-kernel-cmdline.patch
1 From: Stefan Assmann <sassmann@suse.de>
2 Subject: x86, pci: introduce pci=ioapicreroute kernel cmdline option
3
4 Introduce pci=ioapicreroute kernel cmdline option to enable rerouting of boot
5 interrupts to the primary io-apic.
6
7 Signed-off-by: Stefan Assmann <sassmann@suse.de>
8 Signed-off-by: Olaf Dabrunz <od@suse.de>
9 Signed-off-by: Ingo Molnar <mingo@elte.hu>
10 ---
11 Documentation/kernel-parameters.txt | 4 ++++
12 arch/x86/pci/common.c | 5 +++++
13 include/asm-x86/io_apic.h | 4 ++++
14 include/asm-x86/pci.h | 1 +
15 4 files changed, 14 insertions(+)
16
17 --- a/arch/x86/pci/common.c
18 +++ b/arch/x86/pci/common.c
19 @@ -24,6 +24,7 @@ unsigned int pci_early_dump_regs;
20 static int pci_bf_sort;
21 int pci_routeirq;
22 int noioapicquirk;
23 +int noioapicreroute = 1;
24 int pcibios_last_bus = -1;
25 unsigned long pirq_table_addr;
26 struct pci_bus *pci_root_bus;
27 @@ -523,6 +524,10 @@ char * __devinit pcibios_setup(char *st
28 } else if (!strcmp(str, "noioapicquirk")) {
29 noioapicquirk = 1;
30 return NULL;
31 + } else if (!strcmp(str, "ioapicreroute")) {
32 + if (noioapicreroute != -1)
33 + noioapicreroute = 0;
34 + return NULL;
35 }
36 return str;
37 }
38 --- a/Documentation/kernel-parameters.txt
39 +++ b/Documentation/kernel-parameters.txt
40 @@ -1569,6 +1569,10 @@ and is between 256 and 4096 characters.
41 noioapicquirk [APIC] Disable all boot interrupt quirks.
42 Safety option to keep boot IRQs enabled. This
43 should never be necessary.
44 + ioapicreroute [APIC] Enable rerouting of boot IRQs to the
45 + primary IO-APIC for bridges that cannot disable
46 + boot IRQs. This fixes a source of spurious IRQs
47 + when the system masks IRQs.
48 biosirq [X86-32] Use PCI BIOS calls to get the interrupt
49 routing table. These calls are known to be buggy
50 on several machines and they hang the machine
51 --- a/include/asm-x86/io_apic.h
52 +++ b/include/asm-x86/io_apic.h
53 @@ -163,10 +163,14 @@ extern int timer_through_8259;
54 /* 1 if "noapic" boot option passed */
55 extern int noioapicquirk;
56
57 +/* -1 if "noapic" boot option passed */
58 +extern int noioapicreroute;
59 +
60 static inline void disable_ioapic_setup(void)
61 {
62 #ifdef CONFIG_PCI
63 noioapicquirk = 1;
64 + noioapicreroute = -1;
65 #endif
66 skip_ioapic_setup = 1;
67 }
68 --- a/include/asm-x86/pci.h
69 +++ b/include/asm-x86/pci.h
70 @@ -20,6 +20,7 @@ struct pci_sysdata {
71
72 extern int pci_routeirq;
73 extern int noioapicquirk;
74 +extern int ioapicreroute;
75
76 /* scan a bus after allocating a pci_sysdata for it */
77 extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,