netdev
[Top] [All Lists]

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

To: "David S. Miller" <davem@xxxxxxxxxxxxx>
Subject: Re: [PATCH] Tulip interrupt uses non IRQ safe spinlock
From: Francois Romieu <romieu@xxxxxxxxxxxxx>
Date: Fri, 29 Apr 2005 20:44:40 +0200
Cc: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx>, markb@xxxxxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050429093521.274adf9a.davem@xxxxxxxxxxxxx>
References: <E1DRFqC-00028H-Qi@tigger> <E1DRGWv-0003aa-00@xxxxxxxxxxxxxxxxxxxxxxxx> <20050429093521.274adf9a.davem@xxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.4.1i
kernel/irq/handle.c::__do_IRQ
[...]
        spin_lock(&desc->lock);
        desc->handler->ack(irq);
        /*
         * REPLAY is when Linux resends an IRQ that was dropped earlier
         * WAITING is used by probe to mark irqs that are being tested
         */
        action = NULL;
        if (likely(!(status & (IRQ_DISABLED | IRQ_INPROGRESS)))) {
                action = desc->action;
                status &= ~IRQ_PENDING; /* we commit to handling */
                status |= IRQ_INPROGRESS; /* we are handling it */
        }
        desc->status = status;

handle_IRQ_event(irq, regs, action) is issued a few lines below
if action != NULL

I thought this (strangely locked) code was supposed to disable reentrancy.

--
Ueimor

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