Stress testing suspend and resume with several Link Power Management (LPM) capable USB3 hubs and devices reveal that hub workqueue may be blocked from handling device disconnects due to slow processing LPM requests over a bad link. Enabling and disabling USB3 LPM requires sending four USB requests. These requests are sent in the hub workqueue. If the link is bad then the requests need to fail first before other port issues are handled. Fail fast if these USB3 LPM requests fail. Don't try to recover a failure to disable LPM with enabling LPM. This just causes even more blocking requests to be sent over a possibly broken link. Mathias Nyman (5): usb: hub: Block less in USB3 link power management LPM disable path usb: hub: verify device is configured in usb_device_may_initiate_lpm() usb: hub: Don't disable LPM completely if device initiated LPM fails usb: hub: reorder USB3 link power management enable requests usb: hub: Fail fast in USB3 link power management enable path drivers/usb/core/hub.c | 74 ++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 35 deletions(-) -- 2.43.0