uhci.c in the latest stable kernel release candidates seems to have a race condition in the suspend code triggered when all devices are unplugged.
When the final device is unplugged, suspend_hc() is called to reduce bus-mastering activity so that ACPI idling can give greater power savings. However, there is a final uhci interrupt simultaneously. suspend_hc() gets preempted before it finishes, and wakeup_hc() is called within the interrupt handler uhci_interrupt(). The end result is that the host controller remains woken up, however uhci->is_suspended is set to true. This doesn't seem to cause serious problems, except for a few erroneous error messages and the fact that the host controller is not suspended (bad for power management). I was able to fix this temporarily for myself by wrapping suspend_hc() and wakeup_hc() with a spinlock. However, I suspect the patch that Alan Stern recently applied to the 2.5 series to fix issues with the controller state probably solves the problem (it removes the wakeup_hc() call from uhci_interrupt()). Is there any chance this patch will be applied to the 2.4 uhci driver as well? Regards, David Moore -- ------------------------------------------------------ David Moore <[EMAIL PROTECTED]> http://davemoore.org California Institute of Technology ------------------------------------------------------ ------------------------------------------------------- This SF.net email is sponsored by: eBay Get office equipment for less on eBay! http://adfarm.mediaplex.com/ad/ck/711-11697-6916-5 _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
