提交 b2c0a863 编写于 作者: A Alan Stern 提交者: Rafael J. Wysocki

USB: Update last_busy time after autosuspend fails

Originally, the runtime PM core would send an idle notification
whenever a suspend attempt failed.  The idle callback routine could
then schedule a delayed suspend for some time later.

However this behavior was changed by commit
f71648d7 (PM / Runtime: Remove idle
notification after failing suspend).  No notifications were sent, and
there was no clear mechanism to retry failed suspends.

This caused problems for the usbhid driver, because it fails
autosuspend attempts as long as a key is being held down.  A companion
patch changes the PM core's behavior, but we also need to change the
USB core.  In particular, this patch (as1493) updates the device's
last_busy time when an autosuspend fails, so that the PM core will
retry the autosuspend in the future when the delay time expires
again.
Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
Tested-by: NHenrik Rydberg <rydberg@euromail.se>
Cc: <stable@kernel.org>
Acked-by: NGreg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
上级 886486b7
...@@ -1667,6 +1667,11 @@ int usb_runtime_suspend(struct device *dev) ...@@ -1667,6 +1667,11 @@ int usb_runtime_suspend(struct device *dev)
return -EAGAIN; return -EAGAIN;
status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND); status = usb_suspend_both(udev, PMSG_AUTO_SUSPEND);
/* Allow a retry if autosuspend failed temporarily */
if (status == -EAGAIN || status == -EBUSY)
usb_mark_last_busy(udev);
/* The PM core reacts badly unless the return code is 0, /* The PM core reacts badly unless the return code is 0,
* -EAGAIN, or -EBUSY, so always return -EBUSY on an error. * -EAGAIN, or -EBUSY, so always return -EBUSY on an error.
*/ */
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册