android_kernel_oneplus_msm8998/drivers/usb/core
Zhengjun Xing b286fd4a7d USB:fix USB3 devices behind USB3 hubs not resuming at hibernate thaw
commit 64627388b50158fd24d6ad88132525b95a5ef573 upstream.

USB3 hubs don't support global suspend.

USB3 specification 10.10, Enhanced SuperSpeed hubs only support selective
suspend and resume, they do not support global suspend/resume where the
hub downstream facing ports states are not affected.

When system enters hibernation it first enters freeze process where only
the root hub enters suspend, usb_port_suspend() is not called for other
devices, and suspend status flags are not set for them. Other devices are
expected to suspend globally. Some external USB3 hubs will suspend the
downstream facing port at global suspend. These devices won't be resumed
at thaw as the suspend status flag is not set.

A USB3 removable hard disk connected through a USB3 hub that won't resume
at thaw will fail to synchronize SCSI cache, return “cmd cmplt err -71”
error, and needs a 60 seconds timeout which causing system hang for 60s
before the USB host reset the port for the USB3 removable hard disk to
recover.

Fix this by always calling usb_port_suspend() during freeze for USB3
devices.

Signed-off-by: Zhengjun Xing <zhengjun.xing@linux.intel.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-04-24 09:32:06 +02:00
..
buffer.c
config.c USB: Fix off by one in type-specific length check of BOS SSP capability 2018-01-02 20:33:27 +01:00
devices.c
devio.c USB: usbfs: Filter flags passed in from user space 2017-12-09 18:42:44 +01:00
driver.c usb: hub: Do not attempt to autosuspend disconnected devices 2017-05-20 14:26:59 +02:00
endpoint.c
file.c USB: Proper handling of Race Condition when two USB class drivers try to call init_usb_class simultaneously 2017-05-20 14:26:58 +02:00
generic.c USB:fix USB3 devices behind USB3 hubs not resuming at hibernate thaw 2018-04-24 09:32:06 +02:00
hcd-pci.c
hcd.c usb: hcd: initialize hcd->flags to 0 when rm hcd 2017-11-15 17:13:10 +01:00
hub.c usb: hub: Cycle HUB power when initialization fails 2017-12-09 18:42:43 +01:00
hub.h
Kconfig
Makefile
message.c usb: quirks: add control message delay for 1b1c:1b20 2018-03-18 11:17:53 +01:00
notify.c
otg_whitelist.h
port.c
quirks.c usb: quirks: add control message delay for 1b1c:1b20 2018-03-18 11:17:53 +01:00
sysfs.c
urb.c USB: core: replace %p with %pK 2017-05-25 14:30:07 +02:00
usb-acpi.c usb: optimize acpi companion search for usb port devices 2017-08-24 17:02:36 -07:00
usb.c
usb.h