]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blame - src/patches/suse-2.6.27.31/patches.arch/x86-introduce-pci-ioapicreroute-kernel-cmdline.patch
Merge branch 'master' into next
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / x86-introduce-pci-ioapicreroute-kernel-cmdline.patch
CommitLineData
2cb7cef9
BS
1From: Stefan Assmann <sassmann@suse.de>
2Subject: x86, pci: introduce pci=ioapicreroute kernel cmdline option
3
4Introduce pci=ioapicreroute kernel cmdline option to enable rerouting of boot
5interrupts to the primary io-apic.
6
7Signed-off-by: Stefan Assmann <sassmann@suse.de>
8Signed-off-by: Olaf Dabrunz <od@suse.de>
9Signed-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,