Skip to contentSkip to conversation

Patch "Revert "USB / PM: Allow USB devices to remain runtime-suspended when sleeping"" has been added to the 4.5-stable tree

PATCH [email protected] 1 participant 1 message May 8, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

Revert "USB / PM: Allow USB devices to remain runtime-suspended when sleeping"

to the 4.5-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:
revert-usb-pm-allow-usb-devices-to-remain-runtime-suspended-when-sleeping.patch
and it can be found in the queue-4.5 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From 9be427efc764464fbcbc1ca3f0d34f575cb0f037 Mon Sep 17 00:00:00 2001

From: Johan Hovold <[email protected]>
Date: Mon, 2 May 2016 15:35:57 +0200
Subject: Revert "USB / PM: Allow USB devices to remain runtime-suspended when sleeping"

From: Johan Hovold <[email protected]>

commit 9be427efc764464fbcbc1ca3f0d34f575cb0f037 upstream.

This reverts commit e3345db85068ddb937fc0ba40dfc39c293dad977, which broke system resume for a large class of devices.

Devices that after having been reset during resume need to be rebound due to a missing reset_resume callback, are now left in a suspended state. This specifically broke resume of common USB-serial devices, which are now unusable after system suspend (until disconnected and reconnected) when USB persist is enabled.

During resume, usb_resume_interface will set the needs_binding flag for such interfaces, but unlike system resume, run-time resume does not honour it.

---
 drivers/usb/core/port.c |    6 ------
 drivers/usb/core/usb.c  |    8 +-------
 2 files changed, 1 insertion(+), 13 deletions(-)
drivers/usb/core/port.c +0 -6
@@ -249,18 +249,12 @@ static int usb_port_runtime_suspend(stru
 
 	return retval;
 }
-
-static int usb_port_prepare(struct device *dev)
-{
-	return 1;
-}
 #endif
 
 static const struct dev_pm_ops usb_port_pm_ops = {
 #ifdef CONFIG_PM
 	.runtime_suspend =	usb_port_runtime_suspend,
 	.runtime_resume =	usb_port_runtime_resume,
-	.prepare =		usb_port_prepare,
 #endif
 };
 
drivers/usb/core/usb.c +1 -7
@@ -311,13 +311,7 @@ static int usb_dev_uevent(struct device
 
 static int usb_dev_prepare(struct device *dev)
 {
-	struct usb_device *udev = to_usb_device(dev);
-
-	/* Return 0 if the current wakeup setting is wrong, otherwise 1 */
-	if (udev->do_remote_wakeup != device_may_wakeup(dev))
-		return 0;
-
-	return 1;
+	return 0;		/* Implement eventually? */
 }
 
 static void usb_dev_complete(struct device *dev)

Patches currently in stable-queue which might be from [email protected] are

queue-4.5/revert-usb-pm-allow-usb-devices-to-remain-runtime-suspended-when-sleeping.patch queue-4.5/usb-serial-cp210x-add-id-for-link-ecu.patch queue-4.5/usb-serial-cp210x-add-straizona-focusers-device-ids.patch