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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html