aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64
diff options
context:
space:
mode:
authorLiu Jiang <jiang.liu@huawei.com>2012-03-13 10:07:09 -0400
committerTony Luck <tony.luck@intel.com>2012-03-14 16:35:47 -0400
commit0577bb661ee0ce4303c21353ac326f23efbc209c (patch)
treeba28b26c6a4e254e303b7f8af0de9b827e6d6250 /arch/ia64
parent15839b4774c618117122074c630a49983f515318 (diff)
[IA64] Fix ISA IRQ trigger model and polarity setting
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>
Diffstat (limited to 'arch/ia64')
-rw-r--r--arch/ia64/kernel/acpi.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c
index 5207035dc06..2d801bfe16a 100644
--- a/arch/ia64/kernel/acpi.c
+++ b/arch/ia64/kernel/acpi.c
@@ -349,11 +349,11 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header,
349 349
350 iosapic_override_isa_irq(p->source_irq, p->global_irq, 350 iosapic_override_isa_irq(p->source_irq, p->global_irq,
351 ((p->inti_flags & ACPI_MADT_POLARITY_MASK) == 351 ((p->inti_flags & ACPI_MADT_POLARITY_MASK) ==
352 ACPI_MADT_POLARITY_ACTIVE_HIGH) ? 352 ACPI_MADT_POLARITY_ACTIVE_LOW) ?
353 IOSAPIC_POL_HIGH : IOSAPIC_POL_LOW, 353 IOSAPIC_POL_LOW : IOSAPIC_POL_HIGH,
354 ((p->inti_flags & ACPI_MADT_TRIGGER_MASK) == 354 ((p->inti_flags & ACPI_MADT_TRIGGER_MASK) ==
355 ACPI_MADT_TRIGGER_EDGE) ? 355 ACPI_MADT_TRIGGER_LEVEL) ?
356 IOSAPIC_EDGE : IOSAPIC_LEVEL); 356 IOSAPIC_LEVEL : IOSAPIC_EDGE);
357 return 0; 357 return 0;
358} 358}
359 359