On Tue, 26 May 2015, Robert Schlabbach wrote: > Fix USB 3.0 devices lost in NOTATTACHED state after a hub port reset. > > Dissolve the function hub_port_finish_reset() completely and divide the > actions to be taken into those which need to be done after each reset > attempt and those which need to be done after the full procedure is > complete, and place them in the appropriate places in hub_port_reset(). > Also, remove an unneeded forward declaration of hub_port_reset(). > > Verbose Problem Description: > > USB 3.0 devices may be "lost for good" during a hub port reset. > This makes Linux unable to boot from USB 3.0 devices in certain > constellations of host controllers and devices, because the USB device is > lost during initialization, preventing the rootfs from being mounted. > > The underlying problem is that in the affected constellations, during the > processing inside hub_port_reset(), the hub link state goes from 0 to > SS.inactive after the initial reset, and back to 0 again only after the > following "warm" reset. > > However, hub_port_finish_reset() is called after each reset attempt and > sets the state the connected USB device based on the "preliminary" status > of the hot reset to USB_STATE_NOTATTACHED due to SS.inactive, yet when > the following warm reset is complete and hub_port_finish_reset() is > called again, its call to set the device to USB_STATE_DEFAULT is blocked > by usb_set_device_state() which does not allow taking USB devices out of > USB_STATE_NOTATTACHED state. > > Thanks to Alan Stern for guiding me to the proper solution and how to > submit it. > > Link: http://lkml.kernel.org/r/trinity-25981484-72a9-4d46-bf17-9c1cf9301a31-1432073240136%20()%203capp-gmx-bs27 > Signed-off-by: Robert Schlabbach <robert_s@xxxxxxx> Acked-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> -- 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