Messages in this thread | | | Date | Wed, 5 May 1999 14:14:17 -0700 (PDT) | From | Linus Torvalds <> | Subject | Re: [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/
| |