On 02/21/2013 05:04 PM, Alan Stern wrote:
Would it be simpler to delete the timer in xhci_bus_suspend() and restart it in xhci_bus_resume()? Then you wouldn't need to care about the difference between suspend and hibernation.
Alan, I tried implementing this. There were some static functions in xhci.c that had to be exposed so they could be called by xhci_bus_suspend and xhci_bus_resume. Besides that, xchi_bus_suspend/resume are called a number of times during boot. I don't know why this is, but you may be able to shed some light on that. Furthermore, xhci_bus_suspend is called before xhci_bus_resume, so an attempt is made to delete the compliance mode recovery timer, which does not yet exist. This produces a list_add corruption call trace a number of times during boot. Ultimately, the system panics.
Or do you need the timer to remain running even while the root hub and USB bus are suspended?
Did not get far enough to determine this. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html