# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1109 -> 1.1110 # include/linux/acpi.h 1.19 -> 1.20 # arch/i386/kernel/mpparse.c 1.33 -> 1.34 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/09/18 len.brown@intel.com 1.1110 # [ACPI] Fix SCI storm on out of spec boards like Tyan # http://bugzilla.kernel.org/show_bug.cgi?id=774 # -------------------------------------------- # diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c --- a/arch/i386/kernel/mpparse.c Tue Sep 23 12:13:43 2003 +++ b/arch/i386/kernel/mpparse.c Tue Sep 23 12:13:43 2003 @@ -1226,30 +1226,33 @@ while ((void *) entry < madt_end) { if (entry->header.type == ACPI_MADT_INT_SRC_OVR && - acpi_fadt.sci_int == entry->bus_irq) { - /* - * See the note at the end of ACPI 2.0b section - * 5.2.10.8 for what this is about. - */ - flags = entry->flags; - acpi_fadt.sci_int = entry->global_irq; - irq = entry->global_irq; - break; - } + acpi_fadt.sci_int == entry->bus_irq) + goto found; entry = (struct acpi_table_int_src_ovr *) ((unsigned long) entry + entry->header.length); } } + /* + * Although the ACPI spec says that the SCI should be level/low + * don't reprogram it unless there is an explicit MADT OVR entry + * instructing us to do so -- otherwise we break Tyan boards which + * have the SCI wired edge/high but no MADT OVR. + */ + return; + +found: + /* + * See the note at the end of ACPI 2.0b section + * 5.2.10.8 for what this is about. + */ + flags = entry->flags; + acpi_fadt.sci_int = entry->global_irq; + irq = entry->global_irq; ioapic = mp_find_ioapic(irq); ioapic_pin = irq - mp_ioapic_routing[ioapic].irq_start; - - if (flags.polarity == 0) - flags.polarity = 0x3; /* Active low */ - if (flags.trigger == 0) - flags.trigger = 0x3; /* Level-triggered */ io_apic_set_pci_routing(ioapic, ioapic_pin, irq, (flags.trigger >> 1) , (flags.polarity >> 1)); diff -Nru a/include/linux/acpi.h b/include/linux/acpi.h --- a/include/linux/acpi.h Tue Sep 23 12:13:43 2003 +++ b/include/linux/acpi.h Tue Sep 23 12:13:43 2003 @@ -369,16 +369,10 @@ #else /*!CONFIG_ACPI_BOOT*/ -#ifdef CONFIG_ACPI_HT_ONLY -int acpi_boot_init (void); - -#else /* !CONFIG_ACPI_HT_ONLY */ - static inline int acpi_boot_init(void) { return 0; } -#endif /* !CONFIG_ACPI_HT_ONLY */ #endif /*!CONFIG_ACPI_BOOT*/