linux_dsm_epyc7002/drivers/usb
Kai-Heng Feng b3d71abd13 xhci: Poll for U0 after disabling USB2 LPM
USB2 devices with LPM enabled may interrupt the system suspend:
[  932.510475] usb 1-7: usb suspend, wakeup 0
[  932.510549] hub 1-0:1.0: hub_suspend
[  932.510581] usb usb1: bus suspend, wakeup 0
[  932.510590] xhci_hcd 0000:00:14.0: port 9 not suspended
[  932.510593] xhci_hcd 0000:00:14.0: port 8 not suspended
..
[  932.520323] xhci_hcd 0000:00:14.0: Port change event, 1-7, id 7, portsc: 0x400e03
..
[  932.591405] PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
[  932.591414] PM: dpm_run_callback(): pci_pm_suspend+0x0/0x160 returns -16
[  932.591418] PM: Device 0000:00:14.0 failed to suspend async: error -16

During system suspend, USB core will let HC suspends the device if it
doesn't have remote wakeup enabled and doesn't have any children.
However, from the log above we can see that the usb 1-7 doesn't get bus
suspended due to not in U0. After a while the port finished U2 -> U0
transition, interrupts the suspend process.

The observation is that after disabling LPM, port doesn't transit to U0
immediately and can linger in U2. xHCI spec 4.23.5.2 states that the
maximum exit latency for USB2 LPM should be BESL + 10us. The BESL for
the affected device is advertised as 400us, which is still not enough
based on my testing result.

So let's use the maximum permitted latency, 10000, to poll for U0
status to solve the issue.

Cc: stable@vger.kernel.org
Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
Signed-off-by: Mathias Nyman <mathias.nyman@linux.intel.com>
Link: https://lore.kernel.org/r/20200624135949.22611-6-mathias.nyman@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-06-24 16:03:41 +02:00
..
atm USB: atm: Use the correct style for SPDX License Identifier 2020-03-17 20:03:28 +01:00
c67x00 USB: c67x00: Use the correct style for SPDX License Identifier 2020-03-17 20:03:28 +01:00
cdns3 usb: cdns3: ep0: add spinlock for cdns3_check_new_setup 2020-06-24 16:02:58 +02:00
chipidea - Some improvments for ci_hdrc_usb2.c 2020-05-26 10:27:14 +02:00
class cdc-acm: Add DISABLE_ECHO quirk for Microchip/SMSC chip 2020-06-18 10:42:52 +02:00
common usb: common: usb-conn-gpio: Don't log an error on probe deferral 2019-12-10 11:41:20 +01:00
core usb: add USB_QUIRK_DELAY_INIT for Logitech C922 2020-06-18 10:42:18 +02:00
dwc2 usb: dwc2: Postponed gadget registration to the udc class driver 2020-06-18 10:42:52 +02:00
dwc3 usb: dwc3: meson-g12a: fix USB2 PHY initialization on G12A and A1 SoCs 2020-05-29 12:21:26 +02:00
early Merge 5.7-rc3 into usb-next 2020-04-27 09:32:30 +02:00
gadget SCSI misc on 20200613 2020-06-13 13:17:49 -07:00
host xhci: Poll for U0 after disabling USB2 LPM 2020-06-24 16:03:41 +02:00
image treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
isp1760 USB: isp1760: Use the correct style for SPDX License Identifier 2020-04-16 14:32:47 +02:00
misc usb: usbtest: fix missing kfree(dev->buf) in usbtest_disconnect 2020-06-18 10:42:52 +02:00
mon USB: mon: Use scnprintf() for avoiding potential buffer overflow 2020-03-12 09:49:28 +01:00
mtu3 USB: mtu3: Use the correct style for SPDX License Identifier 2020-05-25 11:09:37 +03:00
musb usb: musb: Fix runtime PM imbalance on error 2020-05-25 13:36:31 +02:00
phy Merge 5.7-rc6 into usb-next 2020-05-18 07:55:55 +02:00
renesas_usbhs usb: renesas_usbhs: Use the correct style for SPDX License Identifier 2020-05-25 11:09:38 +03:00
roles usb: roles: Switch on role-switch uevent reporting 2020-05-13 14:20:49 +02:00
serial treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
storage treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
typec usb: typec: tcpci_rt1711h: avoid screaming irq causing boot hangs 2020-06-18 10:42:53 +02:00
usbip treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Kconfig treewide: replace '---help---' in Kconfig files with 'help' 2020-06-14 01:57:21 +09:00
Makefile USB: Changes for v5.4 merge window 2019-09-02 19:20:57 +02:00
usb-skeleton.c USB: usb-skeleton: drop redundant in-urb check 2019-10-10 12:41:19 +02:00