Skip to content

Commit

Permalink
genirq: suppress resend of level interrupts
Browse files Browse the repository at this point in the history
Level type interrupts are resent by the interrupt hardware when they are
still active at irq_enable().

Suppress the resend mechanism for interrupts marked as level.

Signed-off-by: Thomas Gleixner <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
KAGA-KOKO authored and Linus Torvalds committed Aug 12, 2007
1 parent 4966342 commit 2464286
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion kernel/irq/resend.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,12 @@ void check_irq_resend(struct irq_desc *desc, unsigned int irq)
*/
desc->chip->enable(irq);

if ((status & (IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
/*
* We do not resend level type interrupts. Level type
* interrupts are resent by hardware when they are still
* active.
*/
if ((status & (IRQ_LEVEL | IRQ_PENDING | IRQ_REPLAY)) == IRQ_PENDING) {
desc->status = (status & ~IRQ_PENDING) | IRQ_REPLAY;

if (!desc->chip || !desc->chip->retrigger ||
Expand Down

0 comments on commit 2464286

Please sign in to comment.