On Tue, Jun 13, 2006 at 08:33:22PM -0400, Jeff Garzik wrote:
> Grant Grundler wrote:
> >o tulip_stop_rxtx() has to be called _after_ free_irq().
> > ie. v2 patch didn't fix the original race condition
> > and when under test, dies about as fast as the original code.
>
> You made the race window smaller, but it's still there. The chip's DMA
> engines should be stopped before you unregister the interrupt handler.
Switching the order to be:
tulip_stop_rxtx(tp); /* Stop DMA */
free_irq (dev->irq, dev); /* no more races after this */
still leaves us open to IRQs being delivered _after_ we've stopped DMA.
That in turn allows the interrupt handler to re-enable DMA again.
Or are you worried about a masked, pending interrupt causing
problems when the driver is re-opened or resumed?
If firmware left the device in a that state at boot time wouldn't
the driver be required to handle it?
thanks,
grant
>
> Jeff
>
>
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html