| 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(); |