+++ /dev/null
-From: Stefan Assmann <sassmann@suse.de>
-Subject: x86, pci: introduce pci=ioapicreroute kernel cmdline option
-
-Introduce pci=ioapicreroute kernel cmdline option to enable rerouting of boot
-interrupts to the primary io-apic.
-
-Signed-off-by: Stefan Assmann <sassmann@suse.de>
-Signed-off-by: Olaf Dabrunz <od@suse.de>
-Signed-off-by: Ingo Molnar <mingo@elte.hu>
----
- Documentation/kernel-parameters.txt | 4 ++++
- arch/x86/pci/common.c | 5 +++++
- include/asm-x86/io_apic.h | 4 ++++
- include/asm-x86/pci.h | 1 +
- 4 files changed, 14 insertions(+)
-
---- a/arch/x86/pci/common.c
-+++ b/arch/x86/pci/common.c
-@@ -24,6 +24,7 @@ unsigned int pci_early_dump_regs;
- static int pci_bf_sort;
- int pci_routeirq;
- int noioapicquirk;
-+int noioapicreroute = 1;
- int pcibios_last_bus = -1;
- unsigned long pirq_table_addr;
- struct pci_bus *pci_root_bus;
-@@ -523,6 +524,10 @@ char * __devinit pcibios_setup(char *st
- } else if (!strcmp(str, "noioapicquirk")) {
- noioapicquirk = 1;
- return NULL;
-+ } else if (!strcmp(str, "ioapicreroute")) {
-+ if (noioapicreroute != -1)
-+ noioapicreroute = 0;
-+ return NULL;
- }
- return str;
- }
---- a/Documentation/kernel-parameters.txt
-+++ b/Documentation/kernel-parameters.txt
-@@ -1569,6 +1569,10 @@ and is between 256 and 4096 characters.
- noioapicquirk [APIC] Disable all boot interrupt quirks.
- Safety option to keep boot IRQs enabled. This
- should never be necessary.
-+ ioapicreroute [APIC] Enable rerouting of boot IRQs to the
-+ primary IO-APIC for bridges that cannot disable
-+ boot IRQs. This fixes a source of spurious IRQs
-+ when the system masks IRQs.
- biosirq [X86-32] Use PCI BIOS calls to get the interrupt
- routing table. These calls are known to be buggy
- on several machines and they hang the machine
---- a/include/asm-x86/io_apic.h
-+++ b/include/asm-x86/io_apic.h
-@@ -163,10 +163,14 @@ extern int timer_through_8259;
- /* 1 if "noapic" boot option passed */
- extern int noioapicquirk;
-
-+/* -1 if "noapic" boot option passed */
-+extern int noioapicreroute;
-+
- static inline void disable_ioapic_setup(void)
- {
- #ifdef CONFIG_PCI
- noioapicquirk = 1;
-+ noioapicreroute = -1;
- #endif
- skip_ioapic_setup = 1;
- }
---- a/include/asm-x86/pci.h
-+++ b/include/asm-x86/pci.h
-@@ -20,6 +20,7 @@ struct pci_sysdata {
-
- extern int pci_routeirq;
- extern int noioapicquirk;
-+extern int ioapicreroute;
-
- /* scan a bus after allocating a pci_sysdata for it */
- extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,