]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
ACPI fix from Len Brown for 2.6.19
authorChris Wright <chrisw@sous-sol.org>
Sat, 2 Dec 2006 20:59:58 +0000 (12:59 -0800)
committerChris Wright <chrisw@sous-sol.org>
Sat, 2 Dec 2006 20:59:58 +0000 (12:59 -0800)
queue-2.6.19/revert-acpi-sci-interrupt-source-override.patch [new file with mode: 0644]
queue-2.6.19/series

diff --git a/queue-2.6.19/revert-acpi-sci-interrupt-source-override.patch b/queue-2.6.19/revert-acpi-sci-interrupt-source-override.patch
new file mode 100644 (file)
index 0000000..1639dcf
--- /dev/null
@@ -0,0 +1,67 @@
+From 7bdd21cef9e5dbc3d3a718c55bb3d0da024644da Mon Sep 17 00:00:00 2001
+From: Len Brown <len.brown@intel.com>
+To: Linus Torvalds <torvalds@osdl.org>, stable@kernel.org
+Cc: Andrew Morton <akpm@osdl.org>, linux-acpi@vger.kernel.org
+Date: Sat, 2 Dec 2006 02:27:46 -0500
+Subject: Revert "ACPI: SCI interrupt source override"
+
+This reverts commit 281ea49b0c294649a6de47a6f8fbe5611137726b,
+which broke ACPI Interrupt source overrides that move
+the SCI from one IRQ in PIC mode to another in IOAPIC mode.
+
+If the SCI shared an interrupt line with another device,
+this would result in a "irq 18: nobody cared" type failure.
+
+http://bugzilla.kernel.org/show_bug.cgi?id=7601
+
+Signed-off-by: Len Brown <len.brown@intel.com>
+Signed-off-by: Chris Wright <chrisw@sous-sol.org>
+---
+ arch/i386/kernel/acpi/boot.c |   10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+--- linux-2.6.19.orig/arch/i386/kernel/acpi/boot.c
++++ linux-2.6.19/arch/i386/kernel/acpi/boot.c
+@@ -333,7 +333,7 @@ acpi_parse_ioapic(acpi_table_entry_heade
+ /*
+  * Parse Interrupt Source Override for the ACPI SCI
+  */
+-static void acpi_sci_ioapic_setup(u32 bus_irq, u32 gsi, u16 polarity, u16 trigger)
++static void acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
+ {
+       if (trigger == 0)       /* compatible SCI trigger is level */
+               trigger = 3;
+@@ -353,13 +353,13 @@ static void acpi_sci_ioapic_setup(u32 bu
+        * If GSI is < 16, this will update its flags,
+        * else it will create a new mp_irqs[] entry.
+        */
+-      mp_override_legacy_irq(bus_irq, polarity, trigger, gsi);
++      mp_override_legacy_irq(gsi, polarity, trigger, gsi);
+       /*
+        * stash over-ride to indicate we've been here
+        * and for later update of acpi_fadt
+        */
+-      acpi_sci_override_gsi = bus_irq;
++      acpi_sci_override_gsi = gsi;
+       return;
+ }
+@@ -377,7 +377,7 @@ acpi_parse_int_src_ovr(acpi_table_entry_
+       acpi_table_print_madt_entry(header);
+       if (intsrc->bus_irq == acpi_fadt.sci_int) {
+-              acpi_sci_ioapic_setup(intsrc->bus_irq, intsrc->global_irq,
++              acpi_sci_ioapic_setup(intsrc->global_irq,
+                                     intsrc->flags.polarity,
+                                     intsrc->flags.trigger);
+               return 0;
+@@ -880,7 +880,7 @@ static int __init acpi_parse_madt_ioapic
+        * pretend we got one so we can set the SCI flags.
+        */
+       if (!acpi_sci_override_gsi)
+-              acpi_sci_ioapic_setup(acpi_fadt.sci_int, acpi_fadt.sci_int, 0, 0);
++              acpi_sci_ioapic_setup(acpi_fadt.sci_int, 0, 0);
+       /* Fill in identity legacy mapings where no override */
+       mp_config_acpi_legacy_irqs();
index b89043c238e4fac1af6de059222f0bdcc28d96f6..c4b93c4e79a43010bc582d8c605cd93efb8e05d6 100644 (file)
@@ -6,3 +6,4 @@ ebtables-deal-with-the-worst-case-behaviour-in-loop-checks.patch
 ebtables-prevent-wraparounds-in-checks-for-entry-components-sizes.patch
 net_sched-policer-restore-compatibility-with-old-iproute-binaries.patch
 cryptoloop-select-crypto_cbc.patch
+revert-acpi-sci-interrupt-source-override.patch