1 From: Stefan Assmann <sassmann@suse.de>
2 Subject: x86, pci: introduce pci=noioapicquirk kernel cmdline option
4 Introduce pci=noioapicquirk kernel cmdline option to disable all boot
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>
11 Documentation/kernel-parameters.txt | 3 +++
12 arch/x86/pci/common.c | 4 ++++
13 include/asm-x86/io_apic.h | 6 ++++++
14 include/asm-x86/pci.h | 1 +
15 4 files changed, 14 insertions(+)
17 --- a/arch/x86/pci/common.c
18 +++ b/arch/x86/pci/common.c
19 @@ -23,6 +23,7 @@ unsigned int pci_probe = PCI_PROBE_BIOS
20 unsigned int pci_early_dump_regs;
21 static int pci_bf_sort;
24 int pcibios_last_bus = -1;
25 unsigned long pirq_table_addr;
26 struct pci_bus *pci_root_bus;
27 @@ -519,6 +520,9 @@ char * __devinit pcibios_setup(char *st
28 } else if (!strcmp(str, "skip_isa_align")) {
29 pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
31 + } else if (!strcmp(str, "noioapicquirk")) {
37 --- a/Documentation/kernel-parameters.txt
38 +++ b/Documentation/kernel-parameters.txt
39 @@ -1566,6 +1566,9 @@ and is between 256 and 4096 characters.
40 nomsi [MSI] If the PCI_MSI kernel config parameter is
41 enabled, this kernel boot option can be used to
42 disable the use of MSI interrupts system-wide.
43 + noioapicquirk [APIC] Disable all boot interrupt quirks.
44 + Safety option to keep boot IRQs enabled. This
45 + should never be necessary.
46 biosirq [X86-32] Use PCI BIOS calls to get the interrupt
47 routing table. These calls are known to be buggy
48 on several machines and they hang the machine
49 --- a/include/asm-x86/io_apic.h
50 +++ b/include/asm-x86/io_apic.h
51 @@ -160,8 +160,14 @@ extern int skip_ioapic_setup;
52 /* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
53 extern int timer_through_8259;
55 +/* 1 if "noapic" boot option passed */
56 +extern int noioapicquirk;
58 static inline void disable_ioapic_setup(void)
63 skip_ioapic_setup = 1;
66 --- a/include/asm-x86/pci.h
67 +++ b/include/asm-x86/pci.h
68 @@ -19,6 +19,7 @@ struct pci_sysdata {
71 extern int pci_routeirq;
72 +extern int noioapicquirk;
74 /* scan a bus after allocating a pci_sysdata for it */
75 extern struct pci_bus *pci_scan_bus_on_node(int busno, struct pci_ops *ops,