Re: [BUG somewhere] 2.6.0-test8 irq.c, IRQ_INPROGRESS ?

From: Mikael Pettersson
Date: Thu Oct 23 2003 - 06:31:50 EST


Linus Torvalds writes:
> On Wed, 22 Oct 2003, M.H.VanLeeuwen wrote:
> >
> > I'm seeing an NMI Watchdog detected LOCKUP go away when I revert this patch
> > previously added into test8.
>
> Yes, the thing is buggy.
>
> It's not correct for "disable_irq_nosync()" users, and reverting it is the
> right thing to do. Thanks for the report.
>
> Marcelo, please note if you played with this in 2.4.x..
>
> Linus
>
> ------
> > diff -Nru a/arch/i386/kernel/irq.c b/arch/i386/kernel/irq.c
> > --- a/arch/i386/kernel/irq.c Fri Oct 17 14:43:50 2003
> > +++ b/arch/i386/kernel/irq.c Fri Oct 17 14:43:50 2003
> > @@ -378,7 +380,7 @@
> > spin_lock_irqsave(&desc->lock, flags);
> > switch (desc->depth) {
> > case 1: {
> > - unsigned int status = desc->status & ~IRQ_DISABLED;
> > + unsigned int status = desc->status & ~(IRQ_DISABLED | IRQ_INPROGRESS);

It seems 2.4.23-pre8 included something like this apparently broken
change (see diff from -pre7 below). Should it be reverted?

--- linux-2.4.23-pre7/arch/i386/kernel/irq.c 2003-10-23 13:17:43.700067608 +0200
+++ linux-2.4.23-pre8/arch/i386/kernel/irq.c 2003-10-23 13:17:10.071202512 +0200
@@ -1036,7 +1036,7 @@

if (!shared) {
desc->depth = 0;
- desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING);
+ desc->status &= ~(IRQ_DISABLED | IRQ_AUTODETECT | IRQ_WAITING | IRQ_INPROGRESS);
desc->handler->startup(irq);
}
spin_unlock_irqrestore(&desc->lock,flags);
-
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/