[SRU][B][E][PATCH 0/1] Reapply "usb: handle warm-reset port requests on hub resume"

Matthew Ruffell matthew.ruffell at canonical.com
Fri Jul 24 04:36:48 UTC 2020

BugLink: https://bugs.launchpad.net/bugs/1859873


We wish to reapply "usb: handle warm-reset port requests on hub resume".

We reverted "usb: handle warm-reset port requests on hub resume" from the Ubuntu
kernels due to a perceived regression it introduced (bug 1856608).

Only one customer saw this regression, and only in very specific systems. We
have now determined that the root cause of the regression was that the systems
used defective USB cables, which had Tx and Rx lines mixed up.

Signals were being sent down the wrong wires, placing the USB devices into a
SS_INVALID link state, and this patch simply revealed the problems going on in
the USB3 subsystem. USB3 devices never worked with these cables, but for some
reason USB2 worked, which led to the long drawn out debugging timeframe.

We have confirmation from device hardware teams that USB cables on affected
systems have their Tx and Rx wires mixed up, and this has also been confirmed
by the USB cable manufacturer that these cables are a bad batch.

New USB cables fix the problem, and "usb: handle warm-reset port requests on hub
resume" is safe to reapply.


We reapply upstream commit:

commit 4fdc1790e6a9ef22399c6bc6e63b80f4609f3b7e
Author: Jan-Marek Glogowski <glogow at fbihome.de>
Date:   Fri Feb 1 13:52:31 2019 +0100
Subject: usb: handle warm-reset port requests on hub resume

To the Bionic and Eoan kernels.

This commit fixes a real problem for users of a particular external hard disk,
so it has value for Ubuntu users, and we do not want to diverge from upstream
stable patches.


For users with defective non-complaint USB cables:

dmesg | grep "Cannot enable"

For users with a particular USB-C external hard disk:

The disk will work as expected when it is plugged in.

[Regression Potential]

If any users in the community happen to use USB cables with Tx and Rx lines
mixed up, they may see messages like: 

"usb usb2-port2: Cannot enable. Maybe the USB cable is bad?"

These users need to swap out their USB cables for a non-defective one.

The commit landed in 5.1, and was backported to all stable kernels. As of
5.8-rc6, the commit is still in place, and has no fixup commits. I believe
that re-introducing this commit will not cause any regressions for users
with USB compliant hardware.

Matthew Ruffell (1):
  UBUNTU: SAUCE: Reapply "usb: handle warm-reset port requests on hub

 drivers/usb/core/hub.c | 7 +++++++
 1 file changed, 7 insertions(+)


More information about the kernel-team mailing list