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