]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blob - src/patches/suse-2.6.27.31/patches.arch/x86-introduce-pci-noioapicquirk-kernel-cmdline.patch
Reenabled linux-xen, added patches for Xen Kernel Version 2.6.27.31,
[people/teissler/ipfire-2.x.git] / src / patches / suse-2.6.27.31 / patches.arch / x86-introduce-pci-noioapicquirk-kernel-cmdline.patch
1 From: Stefan Assmann <sassmann@suse.de>
2 Subject: x86, pci: introduce pci=noioapicquirk kernel cmdline option
3
4 Introduce pci=noioapicquirk kernel cmdline option to disable all boot
5 interrupt quirks
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 | 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(+)
16
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;
22 int pci_routeirq;
23 +int noioapicquirk;
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;
30 return NULL;
31 + } else if (!strcmp(str, "noioapicquirk")) {
32 + noioapicquirk = 1;
33 + return NULL;
34 }
35 return str;
36 }
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;
54
55 +/* 1 if "noapic" boot option passed */
56 +extern int noioapicquirk;
57 +
58 static inline void disable_ioapic_setup(void)
59 {
60 +#ifdef CONFIG_PCI
61 + noioapicquirk = 1;
62 +#endif
63 skip_ioapic_setup = 1;
64 }
65
66 --- a/include/asm-x86/pci.h
67 +++ b/include/asm-x86/pci.h
68 @@ -19,6 +19,7 @@ struct pci_sysdata {
69 };
70
71 extern int pci_routeirq;
72 +extern int noioapicquirk;
73
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,