]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/patches/suse-2.6.27.39/patches.arch/x86-introduce-pci-noioapicquirk-kernel-cmdline.patch
Imported linux-2.6.27.39 suse/xen patches.
[people/pmueller/ipfire-2.x.git] / src / patches / suse-2.6.27.39 / patches.arch / x86-introduce-pci-noioapicquirk-kernel-cmdline.patch
diff --git a/src/patches/suse-2.6.27.39/patches.arch/x86-introduce-pci-noioapicquirk-kernel-cmdline.patch b/src/patches/suse-2.6.27.39/patches.arch/x86-introduce-pci-noioapicquirk-kernel-cmdline.patch
new file mode 100644 (file)
index 0000000..dd018e8
--- /dev/null
@@ -0,0 +1,75 @@
+From: Stefan Assmann <sassmann@suse.de>
+Subject: x86, pci: introduce pci=noioapicquirk kernel cmdline option
+
+Introduce pci=noioapicquirk kernel cmdline option to disable all boot
+interrupt quirks
+
+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 |    3 +++
+ arch/x86/pci/common.c               |    4 ++++
+ include/asm-x86/io_apic.h           |    6 ++++++
+ include/asm-x86/pci.h               |    1 +
+ 4 files changed, 14 insertions(+)
+
+--- a/arch/x86/pci/common.c
++++ b/arch/x86/pci/common.c
+@@ -23,6 +23,7 @@ unsigned int pci_probe = PCI_PROBE_BIOS 
+ unsigned int pci_early_dump_regs;
+ static int pci_bf_sort;
+ int pci_routeirq;
++int noioapicquirk;
+ int pcibios_last_bus = -1;
+ unsigned long pirq_table_addr;
+ struct pci_bus *pci_root_bus;
+@@ -519,6 +520,9 @@ char * __devinit  pcibios_setup(char *st
+       } else if (!strcmp(str, "skip_isa_align")) {
+               pci_probe |= PCI_CAN_SKIP_ISA_ALIGN;
+               return NULL;
++      } else if (!strcmp(str, "noioapicquirk")) {
++              noioapicquirk = 1;
++              return NULL;
+       }
+       return str;
+ }
+--- a/Documentation/kernel-parameters.txt
++++ b/Documentation/kernel-parameters.txt
+@@ -1566,6 +1566,9 @@ and is between 256 and 4096 characters. 
+               nomsi           [MSI] If the PCI_MSI kernel config parameter is
+                               enabled, this kernel boot option can be used to
+                               disable the use of MSI interrupts system-wide.
++              noioapicquirk   [APIC] Disable all boot interrupt quirks.
++                              Safety option to keep boot IRQs enabled. This
++                              should never be necessary.
+               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
+@@ -160,8 +160,14 @@ extern int skip_ioapic_setup;
+ /* 1 if the timer IRQ uses the '8259A Virtual Wire' mode */
+ extern int timer_through_8259;
++/* 1 if "noapic" boot option passed */
++extern int noioapicquirk;
++
+ static inline void disable_ioapic_setup(void)
+ {
++#ifdef CONFIG_PCI
++      noioapicquirk = 1;
++#endif
+       skip_ioapic_setup = 1;
+ }
+--- a/include/asm-x86/pci.h
++++ b/include/asm-x86/pci.h
+@@ -19,6 +19,7 @@ struct pci_sysdata {
+ };
+ extern int pci_routeirq;
++extern int noioapicquirk;
+ /* 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,