On 02/21/2013 10:46 AM, Alan Stern wrote:
On Wed, 20 Feb 2013, Sarah Sharp wrote:
Of course, in your case this doesn't matter. In the memory image, the
timer is active. Hence it is still active when the system resumes,
even though xhci_suspend _was_ called.
Ah, I see now. So basically any memory changes in xhci_suspend will be
wiped on resume, but any hardware state should be saved. I was initially
concerned about the large number of memory writes in xhci_suspend (e.g.
zeroing the command ring), but on resume from hibernate, xhci_resume
basically ends up wiping the entire slate and re-initializing the host.
It would be nice if xhci_suspend was passed a boolean to indicate it was
being called as part of the hibernate process. That way we could skip a
lot of unnecessary state saving.
That's a good idea. Do you want to implement it? All it requires is
to add an extra argument to the hc_driver.pci_suspend method, modify
the PCI-based HCDs appropriately (there aren't many), and change the
suspend-related pathways in core/hcd-pci.c.
Alan Stern
I have a new version of the patch incorporating Alan's explanation, but
I'll wait to see how Sarah responds to Alan's suggestion. While Alan's
is a more turbulent solution, it is a more correct one.
--
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