[PATCH] ia64: Interrupt polarity fix
It seems that acpi_register_intr (in arch/ia64/kernel/acpi.c) takes an interrupt polarity/trigger in opposite way. Attached patch fixes this. Please apply. drivers/acpi/resource/rsirq.c decodes ACPI extended irq resource and stores in edge_level and active_high_low members of a structure (BTW, I think the names of these members are source of confusion ;). And this logic in acpi.c inverts both polarity and trigger. vector = iosapic_register_intr(gsi, polarity ? IOSAPIC_POL_HIGH : IOSAPIC_POL_LOW, mode ? IOSAPIC_EDGE : IOSAPIC_LEVEL); ACPI -> rsirq.c -> serial.c -> acpi.c -> iosapic.c High 0 0 0 IOSAPIC_POL_LOW Low 1 1 1 IOSAPIC_POL_HIGH Edge 1 0 0 IOSAPIC_LEVEL Level 0 1 1 IOSAPIC_EDGE As ACPI_ACTIVE_{HIGH,LOW} and ACPI_{LEVEL,EDGE}_SENSITIVE are defined in acpi subsystem, it should be safer to use these symbols.
Showing
Please register or sign in to comment