Commit 057207ac authored by Andy Grover's avatar Andy Grover

ACPI: Properly handle an ISO reassigning the ACPI interrupt. Big thanks to

John Stultz.
parent acdb4d24
......@@ -1026,8 +1026,14 @@ void __init mp_config_ioapic_for_sci(int irq)
while ((void *) entry < madt_end) {
if (entry->header.type == ACPI_MADT_INT_SRC_OVR &&
acpi_fadt.sci_int == entry->global_irq)
acpi_fadt.sci_int == entry->bus_irq) {
/*
* ACPI should use the settings in the
* ISO for its SCI. Do not continue.
*/
acpi_fadt.sci_int = entry->global_irq;
return;
}
entry = (struct acpi_table_int_src_ovr *)
((unsigned long) entry + entry->header.length);
......
......@@ -223,6 +223,13 @@ acpi_irq(int irq, void *dev_id, struct pt_regs *regs)
acpi_status
acpi_os_install_interrupt_handler(u32 irq, OSD_HANDLER handler, void *context)
{
/*
* Ignore the irq from the core, and use the value in our copy of the
* FADT. It may not be the same if an interrupt source override exists
* for the SCI.
*/
irq = acpi_fadt.sci_int;
#ifdef CONFIG_IA64
irq = gsi_to_vector(irq);
#endif
......
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