Commit-ID: 4dbc9ca219b0f294332e734528f7b82211700170 Gitweb: http://git.kernel.org/tip/4dbc9ca219b0f294332e734528f7b82211700170 Author: Thomas Gleixner <tglx@xxxxxxxxxxxxx> AuthorDate: Thu, 27 Aug 2009 09:38:49 +0200 Committer: Thomas Gleixner <tglx@xxxxxxxxxxxxx> CommitDate: Thu, 27 Aug 2009 09:38:49 +0200 genirq: Do not mask oneshot edge type interrupts Masking oneshot edge type interrupts is wrong as we might lose an interrupt which is issued when the threaded handler is handling the device. We can keep the irq unmasked safely as with edge type interrupts there is no danger of interrupt floods. If the threaded handler has not yet finished then IRQTF_RUNTHREAD is set which will keep the handler thread active. Debugged and verified in preempt-rt. Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> --- kernel/irq/chip.c | 9 ++------- 1 files changed, 2 insertions(+), 7 deletions(-) diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index 5765aad..c166019 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c @@ -548,13 +548,8 @@ handle_edge_irq(unsigned int irq, struct irq_desc *desc) kstat_incr_irqs_this_cpu(irq, desc); /* Start handling the irq */ - if (unlikely(desc->status & IRQ_ONESHOT)) { - desc->status |= IRQ_MASKED; - mask_ack_irq(desc, irq); - } else { - if (desc->chip->ack) - desc->chip->ack(irq); - } + if (desc->chip->ack) + desc->chip->ack(irq); /* Mark the IRQ currently in progress.*/ desc->status |= IRQ_INPROGRESS; -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html
![]() |