# 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.1315.9.2 -> 1.1315.9.3 # arch/i386/kernel/mpparse.c 1.51 -> 1.52 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/09/18 len.brown@intel.com 1.1315.9.3 # [ACPI] Handle systems that specify non-ACPI-compliant SCI over-rides (Jun Nakajima) # -------------------------------------------- # diff -Nru a/arch/i386/kernel/mpparse.c b/arch/i386/kernel/mpparse.c --- a/arch/i386/kernel/mpparse.c Tue Sep 23 12:31:22 2003 +++ b/arch/i386/kernel/mpparse.c Tue Sep 23 12:31:22 2003 @@ -1019,8 +1019,6 @@ } } -/* Ensure the ACPI SCI interrupt level is active low, edge-triggered */ - extern FADT_DESCRIPTOR acpi_fadt; void __init mp_config_ioapic_for_sci(int irq) @@ -1029,6 +1027,7 @@ int ioapic_pin; struct acpi_table_madt *madt; struct acpi_table_int_src_ovr *entry = NULL; + acpi_interrupt_flags flags; void *madt_end; acpi_status status; @@ -1052,15 +1051,12 @@ * See the note at the end of ACPI 2.0b section * 5.2.10.8 for what this is about. */ - if (entry->bus_irq != entry->global_irq) { - acpi_fadt.sci_int = entry->global_irq; - irq = entry->global_irq; - break; - } - else - return; + flags = entry->flags; + acpi_fadt.sci_int = entry->global_irq; + irq = entry->global_irq; + break; } - + entry = (struct acpi_table_int_src_ovr *) ((unsigned long) entry + entry->header.length); } @@ -1070,7 +1066,13 @@ ioapic_pin = irq - mp_ioapic_routing[ioapic].irq_start; - io_apic_set_pci_routing(ioapic, ioapic_pin, irq, 1, 1); // Active low, level triggered + 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)); } #ifdef CONFIG_ACPI_PCI