Re: [patch] IRQ threads
From: Ingo Molnar
Date: Thu Jul 29 2004 - 14:34:02 EST
* Scott Wood <scott@xxxxxxxxxxx> wrote:
> > Also, why the enable_irq() change?
>
> If you mean the do_startup_irq() change, [...]
i mean the change below - why do irqthreads necessiate it?
Ingo
@@ -395,7 +402,14 @@ void enable_irq(unsigned int irq)
desc->status = status | IRQ_REPLAY;
hw_resend_irq(desc->handler,irq);
}
- desc->handler->enable(irq);
+
+ /* Don't unmask the IRQ if it's in progress, or else you
+ could re-enter the IRQ handler. As it is now enabled,
+ the IRQ will be unmasked when the handler is finished. */
+
+ if (!(desc->status & (IRQ_INPROGRESS | IRQ_THREADRUNNING |
+ IRQ_THREADPENDING)))
+ desc->handler->enable(irq);
/* fall-through */
}
default:
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/