This is a note to let you know that I've just added the patch titled usb: Disable USB 2.0 Link PM before device reset. to the 3.4-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: usb-disable-usb-2.0-link-pm-before-device-reset.patch and it can be found in the queue-3.4 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let <stable@xxxxxxxxxxxxxxx> know about it. >From 7e6337b694966dd7d3b9d904c830b48a4e6a80a6 Mon Sep 17 00:00:00 2001 From: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> Date: Mon, 30 Sep 2013 17:26:29 +0300 Subject: usb: Disable USB 2.0 Link PM before device reset. From: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> commit dcc01c0864823f91c3bf3ffca6613e2351702b87 upstream. Before the USB core resets a device, we need to disable the L1 timeout for the roothub, if USB 2.0 Link PM is enabled. Otherwise the port may transition into L1 in between descriptor fetches, before we know if the USB device descriptors changed. LPM will be re-enabled after the full device descriptors are fetched, and we can confirm the device still supports USB 2.0 LPM after the reset. We don't need to wait for the USB device to exit L1 before resetting the device, since the xHCI roothub port diagrams show a transition to the Reset state from any of the Ux states (see Figure 34 in the 2012-08-14 xHCI specification update). This patch should be backported to kernels as old as 3.2, that contain the commit 65580b4321eb36f16ae8b5987bfa1bb948fc5112 "xHCI: set USB2 hardware LPM". That was the first commit to enable USB 2.0 hardware-driven Link Power Management. Signed-off-by: Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings <ben@xxxxxxxxxxxxxxx> Cc: Yang Yingliang <yangyingliang@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/usb/core/hub.c | 6 ++++++ 1 file changed, 6 insertions(+) --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -4139,6 +4139,12 @@ static int usb_reset_and_verify_device(s } parent_hub = hdev_to_hub(parent_hdev); + /* Disable USB2 hardware LPM. + * It will be re-enabled by the enumeration process. + */ + if (udev->usb2_hw_lpm_enabled == 1) + usb_set_usb2_hardware_lpm(udev, 0); + set_bit(port1, parent_hub->busy_bits); for (i = 0; i < SET_CONFIG_TRIES; ++i) { Patches currently in stable-queue which might be from sarah.a.sharp@xxxxxxxxxxxxxxx are queue-3.4/xhci-don-t-enable-disable-rwe-on-bus-suspend-resume.patch queue-3.4/usb-fix-pm-config-symbol-in-uhci-hcd-ehci-hcd-and-xhci-hcd.patch queue-3.4/xhci-fix-spurious-wakeups-after-s5-on-haswell.patch queue-3.4/xhci-quirk-for-extra-long-delay-for-s4.patch queue-3.4/xhci-limit-the-spurious-wakeup-fix-only-to-hp-machines.patch queue-3.4/usb-disable-usb-2.0-link-pm-before-device-reset.patch -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html