|
@@ -313,7 +313,7 @@ acpi_parse_ioapic(struct acpi_subtable_header * header, const unsigned long end)
|
|
/*
|
|
/*
|
|
* Parse Interrupt Source Override for the ACPI SCI
|
|
* Parse Interrupt Source Override for the ACPI SCI
|
|
*/
|
|
*/
|
|
-static void __init acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
|
|
|
|
|
|
+static void __init acpi_sci_ioapic_setup(u8 bus_irq, u16 polarity, u16 trigger, u32 gsi)
|
|
{
|
|
{
|
|
if (trigger == 0) /* compatible SCI trigger is level */
|
|
if (trigger == 0) /* compatible SCI trigger is level */
|
|
trigger = 3;
|
|
trigger = 3;
|
|
@@ -333,7 +333,7 @@ static void __init acpi_sci_ioapic_setup(u32 gsi, u16 polarity, u16 trigger)
|
|
* If GSI is < 16, this will update its flags,
|
|
* If GSI is < 16, this will update its flags,
|
|
* else it will create a new mp_irqs[] entry.
|
|
* else it will create a new mp_irqs[] entry.
|
|
*/
|
|
*/
|
|
- mp_override_legacy_irq(gsi, polarity, trigger, gsi);
|
|
|
|
|
|
+ mp_override_legacy_irq(bus_irq, polarity, trigger, gsi);
|
|
|
|
|
|
/*
|
|
/*
|
|
* stash over-ride to indicate we've been here
|
|
* stash over-ride to indicate we've been here
|
|
@@ -357,9 +357,10 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
|
|
acpi_table_print_madt_entry(header);
|
|
acpi_table_print_madt_entry(header);
|
|
|
|
|
|
if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
|
|
if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
|
|
- acpi_sci_ioapic_setup(intsrc->global_irq,
|
|
|
|
|
|
+ acpi_sci_ioapic_setup(intsrc->source_irq,
|
|
intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
|
|
intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
|
|
- (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
|
|
|
|
|
|
+ (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2,
|
|
|
|
+ intsrc->global_irq);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1162,7 +1163,8 @@ static int __init acpi_parse_madt_ioapic_entries(void)
|
|
* pretend we got one so we can set the SCI flags.
|
|
* pretend we got one so we can set the SCI flags.
|
|
*/
|
|
*/
|
|
if (!acpi_sci_override_gsi)
|
|
if (!acpi_sci_override_gsi)
|
|
- acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0);
|
|
|
|
|
|
+ acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
|
|
|
|
+ acpi_gbl_FADT.sci_interrupt);
|
|
|
|
|
|
/* Fill in identity legacy mappings where no override */
|
|
/* Fill in identity legacy mappings where no override */
|
|
mp_config_acpi_legacy_irqs();
|
|
mp_config_acpi_legacy_irqs();
|