Hi, >> Doesn't this just mean that we need a spinlock or some other kind of >> semaphore around acquiring, using, and releasing this resource? We keep >> going around and around about this but I'm pretty sure spinlocks are >> meant to be able to solve exactly this issue. >> >> The problem is going to get considerably more nasty if we need to hold a >> spinlock with interrupts disabled for a significant amount of time, at >> which point a semaphore of some kind with a spinlock around it would >> seem to be more useful. > > Even if spin_lock() was used to protect this resource, it is still possible > for an interrupt to kick in and call e1000_watchdog. In this case, > e1000_get_software_semaphore() will be called from within the interrupt > handler and the problem will still occur. > > In order to solve this problem, interrupt should be disabled (for example, > spin_lock_irqsave). > The interrupt handler can't run while the process is holding this resource, > and this problem doesn't occur. > >> I'll work with Auke to see if we can come up with another try. > > Do you have any updates about your test code?
Does the fix I previously proposed have problems? If it does, I'd like to help find investigate another fix to solve this problem. -- Kenzo Iwami ([EMAIL PROTECTED]) - 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