Commit 9fedfe5b authored by Len Brown's avatar Len Brown

[ACPI] Fix IO-APIC mode SCI interrupt storm on Tyan

http://bugzilla.kernel.org/show_bug.cgi?id=774
parent 6c849a8e
...@@ -1046,7 +1046,22 @@ void __init mp_config_ioapic_for_sci(int irq) ...@@ -1046,7 +1046,22 @@ void __init mp_config_ioapic_for_sci(int irq)
while ((void *) entry < madt_end) { while ((void *) entry < madt_end) {
if (entry->header.type == ACPI_MADT_INT_SRC_OVR && if (entry->header.type == ACPI_MADT_INT_SRC_OVR &&
acpi_fadt.sci_int == entry->bus_irq) { 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 * See the note at the end of ACPI 2.0b section
* 5.2.10.8 for what this is about. * 5.2.10.8 for what this is about.
...@@ -1054,23 +1069,11 @@ void __init mp_config_ioapic_for_sci(int irq) ...@@ -1054,23 +1069,11 @@ void __init mp_config_ioapic_for_sci(int irq)
flags = entry->flags; flags = entry->flags;
acpi_fadt.sci_int = entry->global_irq; acpi_fadt.sci_int = entry->global_irq;
irq = entry->global_irq; irq = entry->global_irq;
break;
}
entry = (struct acpi_table_int_src_ovr *)
((unsigned long) entry + entry->header.length);
}
}
ioapic = mp_find_ioapic(irq); ioapic = mp_find_ioapic(irq);
ioapic_pin = irq - mp_ioapic_routing[ioapic].irq_start; 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, io_apic_set_pci_routing(ioapic, ioapic_pin, irq,
(flags.trigger >> 1) , (flags.polarity >> 1)); (flags.trigger >> 1) , (flags.polarity >> 1));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment