netdev
[Top] [All Lists]

Re: [PATCH] Tulip interrupt uses non IRQ safe spinlock

To: Mark Broadbent <markb@xxxxxxxxxxxxxx>
Subject: Re: [PATCH] Tulip interrupt uses non IRQ safe spinlock
From: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 3 May 2005 07:31:08 +1000
Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>, netdev@xxxxxxxxxxx
In-reply-to: <427623B8.8050107@wetlettuce.com>
References: <E1DRFqC-00028H-Qi@tigger> <E1DRGWv-0003aa-00@gondolin.me.apana.org.au> <20050429093521.274adf9a.davem@davemloft.net> <20050429224931.GA18616@gondor.apana.org.au> <427623B8.8050107@wetlettuce.com>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6+20040907i
On Mon, May 02, 2005 at 01:57:28PM +0100, Mark Broadbent wrote:
>
> > 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~} <herbert@xxxxxxxxxxxxxxxxxxx>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

<Prev in Thread] Current Thread [Next in Thread>