Messages in this thread Patch in this message | | | From | Ruslan Ruslichenko <> | Subject | [PATCH] x86/ioapic: add IO-APIC irq_chip retrigger hook | Date | Tue, 17 Jan 2017 16:13:52 +0200 |
| |
After commit d32932d02e18 ("x86/irq: Convert IOAPIC to use hierarchical irqdomain interfaces") IO-APIC is switched to hierarchical irqdomain implementation. Also this patch removed irq_retrigger hook for IO-APIC chip which seem to be wrong. Without this hook some edge-triggered irq's might be lost, since kernel uses it to retrigger edge irq's triggered while they are being handled or disabled by driver (see "Delayed_interrupt_disable" section at "Generic-IRQ-Guide" of kernel docbook).
Thus adding this hook same way as it was done for MSI domain.
Signed-off-by: Ruslan Ruslichenko <rruslich@cisco.com> --- arch/x86/kernel/apic/io_apic.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/arch/x86/kernel/apic/io_apic.c b/arch/x86/kernel/apic/io_apic.c index 945e512..1e35dd0 100644 --- a/arch/x86/kernel/apic/io_apic.c +++ b/arch/x86/kernel/apic/io_apic.c @@ -1875,6 +1875,7 @@ static int ioapic_set_affinity(struct irq_data *irq_data, .irq_ack = irq_chip_ack_parent, .irq_eoi = ioapic_ack_level, .irq_set_affinity = ioapic_set_affinity, + .irq_retrigger = irq_chip_retrigger_hierarchy, .flags = IRQCHIP_SKIP_SET_WAKE, }; @@ -1886,6 +1887,7 @@ static int ioapic_set_affinity(struct irq_data *irq_data, .irq_ack = irq_chip_ack_parent, .irq_eoi = ioapic_ir_ack_level, .irq_set_affinity = ioapic_set_affinity, + .irq_retrigger = irq_chip_retrigger_hierarchy, .flags = IRQCHIP_SKIP_SET_WAKE, }; -- 1.9.1
| |