mbox series

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

Message ID 20200726232457.9107-1-matthew.ruffell@canonical.com
Headers show
Series Reapply "usb: handle warm-reset port requests on hub resume" | expand

Message

Matthew Ruffell July 26, 2020, 11:24 p.m. UTC
BugLink: https://bugs.launchpad.net/bugs/1859873

[Impact]

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.

[Fix]

We reapply upstream commit:

commit 4fdc1790e6a9ef22399c6bc6e63b80f4609f3b7e
Author: Jan-Marek Glogowski <glogow@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.

[Testcase]

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.

Jan-Marek Glogowski (1):
  usb: handle warm-reset port requests on hub resume

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

Comments

Khalid Elmously Aug. 7, 2020, 9:57 p.m. UTC | #1
On 2020-07-27 11:24:56 , Matthew Ruffell wrote:
> BugLink: https://bugs.launchpad.net/bugs/1859873
> 
> [Impact]
> 
> 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.
> 
> [Fix]
> 
> We reapply upstream commit:
> 
> commit 4fdc1790e6a9ef22399c6bc6e63b80f4609f3b7e
> Author: Jan-Marek Glogowski <glogow@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.
> 
> [Testcase]
> 
> 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.
> 
> Jan-Marek Glogowski (1):
>   usb: handle warm-reset port requests on hub resume
> 
>  drivers/usb/core/hub.c | 7 +++++++
>  1 file changed, 7 insertions(+)
> 
> -- 
> 2.25.1
> 
> 
> -- 
> kernel-team mailing list
> kernel-team@lists.ubuntu.com
> https://lists.ubuntu.com/mailman/listinfo/kernel-team