lkml.org 
[lkml]   [1999]   [May]   [5]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [patch] SMP race fix [was Re: SMP lockup & 3c509 on 2.2.x [aka. the Deadly 'ping -f']]


On Wed, 5 May 1999, Andrea Arcangeli wrote:
>
> So far so good. But my argument is that the kenrel set the inprogress bit
> also if IRQ_DISABLED _was_ set.

Yes.

So if you want to fix synchronize_irq(), maybe the proper change would
have been just something really simple like

/* Disabled? Nothing to synchronize.. */
if (irq->status & IRQ_DISABLED)
return;
if (irq->status & IRQ_INPROGRESS)
wait_for_irq_to_finish()

instead of messing with the IRQ_INPROGRESS logic that is used by the IRQ
probing logic.

Did you even notice and/or verify that your changes may have broken IRQ
probing, which depends on the INPROGRESS behaviour?

> >And "disable_irq()" will synchronously wait for the irq handler to have
> >exited (it has to - otherwise you'd see the case where somebody calls
>
> No. That's my whole point and the cause of the race.

Right. I believe you. I can see your _first_ patch making sense.

I cannot see the second patch being all that worthwhile, while possibly
breaking autodetection and certainly modifying behaviour without any real
reason to.

Notice how my answer was to your _second_ patch, which I think is just
completely broken.

Linus


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:51    [W:0.096 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site