Skip to content

Commit

Permalink
[IA64] Fix ISA IRQ trigger model and polarity setting
Browse files Browse the repository at this point in the history
When handling Interrupt Source Override in MADT table, the default
ISA IRQ trigger model and polarity should be edge-rising.
Current IA64 implmentation doesn't follow the specification and
set default ISA IRQ trigger model as level-low. With that wrong
configuration and when system runs out of interrupt vectors,
it will cause vector sharing among edge triggered ISA IRQ and
level triggered PCI IRQ, then interrupt storm. So change the code
to follow the specification.

Signed-off-by: Liu Jiang <jiang.liu@huawei.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
  • Loading branch information
Liu Jiang authored and Tony Luck committed Mar 14, 2012
1 parent 15839b4 commit 0577bb6
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions arch/ia64/kernel/acpi.c
Original file line number Diff line number Diff line change
Expand Up @@ -349,11 +349,11 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,

iosapic_override_isa_irq(p->source_irq, p->global_irq,
((p->inti_flags & ACPI_MADT_POLARITY_MASK) ==
ACPI_MADT_POLARITY_ACTIVE_HIGH) ?
IOSAPIC_POL_HIGH : IOSAPIC_POL_LOW,
ACPI_MADT_POLARITY_ACTIVE_LOW) ?
IOSAPIC_POL_LOW : IOSAPIC_POL_HIGH,
((p->inti_flags & ACPI_MADT_TRIGGER_MASK) ==
ACPI_MADT_TRIGGER_EDGE) ?
IOSAPIC_EDGE : IOSAPIC_LEVEL);
ACPI_MADT_TRIGGER_LEVEL) ?
IOSAPIC_LEVEL : IOSAPIC_EDGE);
return 0;
}

Expand Down

0 comments on commit 0577bb6

Please sign in to comment.