Re: [PATCH] Tulip interrupt uses non IRQ safe spinlock
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2005-05-02 21:31:08
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: 2005-05-02 21:31:08
On Mon, May 02, 2005 at 01:57:28PM +0100, Mark Broadbent wrote:
quoted
However, I don't see how this can happen. __do_IRQ ensures that the handlers on a single IRQ aren't reentered by desc->lock and desc->status. Softirqs are also kept out by irq_enter. Am I missing something?As far as I can see desc->lock is dropped before handle_IRQ_event() is called in __do_IRQ() (kernel/irq/handle.c:170) and desc->status does not prevent the execution of the IRQ handler. Same with softirqs,
desc->status is set to IRQ_INPROGRESS (kernel/irq/handle.c:144) which prevents the same IRQ handlers from being invoked again (kernel/irq/handle.c:141).
interrupts are enabled when the handler is called (kernel/softirq.c:89).
Soft IRQs do not run when we're in an IRQ handler (kernel/softirq.c:121). Cheers, -- Visit Openswan at http://www.openswan.org/ Email: Herbert Xu ~{PmV>HI~} [off-list ref] Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt