Reapply "usb: handle warm-reset port requests on hub resume"
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Matthew Ruffell | ||
Disco |
Won't Fix
|
Undecided
|
Unassigned | ||
Eoan |
Won't Fix
|
Undecided
|
Unassigned |
Bug Description
BugLink: https:/
[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 4fdc1790e6a9ef2
Author: Jan-Marek Glogowski <email address hidden>
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.
Changed in linux (Ubuntu Bionic): | |
status: | New → Confirmed |
Changed in linux (Ubuntu Disco): | |
status: | New → Confirmed |
Changed in linux (Ubuntu Eoan): | |
status: | New → Confirmed |
Changed in linux (Ubuntu Focal): | |
status: | New → Confirmed |
Changed in linux (Ubuntu Disco): | |
status: | Confirmed → Won't Fix |
no longer affects: | linux (Ubuntu Focal) |
Changed in linux (Ubuntu): | |
status: | Confirmed → Fix Released |
Changed in linux (Ubuntu Bionic): | |
status: | Confirmed → In Progress |
Changed in linux (Ubuntu Eoan): | |
status: | Confirmed → In Progress |
description: | updated |
description: | updated |
tags: | added: sts |
Changed in linux (Ubuntu Bionic): | |
assignee: | nobody → Matthew Ruffell (mruffell) |
Changed in linux (Ubuntu Eoan): | |
assignee: | nobody → Matthew Ruffell (mruffell) |
Changed in linux (Ubuntu Eoan): | |
status: | In Progress → Won't Fix |
assignee: | Matthew Ruffell (mruffell) → nobody |
Changed in linux (Ubuntu Bionic): | |
status: | In Progress → Fix Committed |
This bug is awaiting verification that the kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification- needed- bionic' to 'verification- done-bionic' . If the problem still exists, change the tag 'verification- needed- bionic' to 'verification- failed- bionic' .
If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed.
See https:/ /wiki.ubuntu. com/Testing/ EnableProposed for documentation how to enable and use -proposed. Thank you!