On Tue, 5 Mar 2013, Sarah Sharp wrote:

> static void compliance_mode_recovery(unsigned long arg)
> {
> ...
>         for (i = 0; i < xhci->num_usb3_ports; i++) {
>                 temp = xhci_readl(xhci, xhci->usb3_ports[i]);
>                 if ((temp & PORT_PLS_MASK) == USB_SS_PORT_LS_COMP_MOD) {
>                         /*
>                          * Compliance Mode Detected. Letting USB Core
>                          * handle the Warm Reset
>                          */
> 
> What happens when the xHCI host controller goes into D3cold due to
> runtime PM?  The port status registers will read as all f's, so we will
> miss any transitions to the compliance mode that happened before or
> during the transition to D3cold.
> 
> This code probably needs to wake up the host controller and keep it from
> suspending until all the ports can be read.
> 
> Alan, would the right way to do that be a get/put call into the runtime
> PM core?

If xhci_suspend deletes the Compliance Mode Recovery timer then the 
timer will never fire while the controller is in D3cold.  The problem 
won't arise.

Alan Stern

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to