[PATCH v2 0/3] usb: xhci: add xhci-no-soft-retry-quirk

Matt Eaton via B4 Relay posted 3 patches 4 weeks ago
drivers/usb/dwc3/core.c      |  3 +++
drivers/usb/dwc3/core.h      |  3 +++
drivers/usb/dwc3/dwc3-qcom.c | 17 ++++++++++++++++-
drivers/usb/dwc3/glue.h      |  3 +++
drivers/usb/dwc3/host.c      |  5 ++++-
drivers/usb/host/xhci-plat.c |  3 +++
6 files changed, 32 insertions(+), 2 deletions(-)
[PATCH v2 0/3] usb: xhci: add xhci-no-soft-retry-quirk
Posted by Matt Eaton via B4 Relay 4 weeks ago
The dwc3 instances on Qualcomm IPQ4019 mishandle xHCI 1.0 Soft Retry. A
Stop Endpoint command landing on a just-soft-retry-reset endpoint wedges
the command ring, and the stop-endpoint watchdog kills the host five
seconds later. Reproducible by unplugging a USB-tethered phone
mid-transfer; the port stays dead until the platform device is rebound.

XHCI_NO_SOFT_RETRY already exists for this class of defect but is only
reachable from xhci-pci, matched against two AMD Promontory PCI ids.

Patch 1 adds a device property so platform hosts can request it. Patch 2
carries it through the dwc3 core as a software property. Patch 3 sets it
from the qcom glue on the SoC compatible.

The match entry in patch 3 has no effect until the ipq4019 devicetree
moves to the qcom,snps-dwc3 glue, sent separately:
https://lore.kernel.org/r/20260829-ipq4019-dwc3-migration-v1-0-cc66b54ce21c@divinehawk.com

This series applies and builds independently of that.

Tested on a Ubiquiti UniFi Travel Router.

Signed-off-by: Matt Eaton <linux@divinehawk.com>
---
Changes in v2:
- Drop the dt-bindings patch; Krzysztof pointed out this is implied by
  compatible and shouldn't be a devicetree property.
- Set the quirk from the dwc3 core instead, via a new dwc3_properties
  field carried as match data in the qcom glue, per Thinh's review.
- Link to v1: https://lore.kernel.org/r/20260828-xhci-no-soft-retry-v1-0-b9c264b56601@divinehawk.com

---
Matt Eaton (3):
      usb: xhci-plat: add xhci-no-soft-retry-quirk device property
      usb: dwc3: add xhci_no_soft_retry software property
      usb: dwc3: qcom: set xhci_no_soft_retry for IPQ4019

 drivers/usb/dwc3/core.c      |  3 +++
 drivers/usb/dwc3/core.h      |  3 +++
 drivers/usb/dwc3/dwc3-qcom.c | 17 ++++++++++++++++-
 drivers/usb/dwc3/glue.h      |  3 +++
 drivers/usb/dwc3/host.c      |  5 ++++-
 drivers/usb/host/xhci-plat.c |  3 +++
 6 files changed, 32 insertions(+), 2 deletions(-)
---
base-commit: 45c13f3f9e3bb15fd89ff2864c6f627a3b4b4229
change-id: 20260828-xhci-no-soft-retry-4af6c93dc7d2

Best regards,
--  
Matt Eaton <linux@divinehawk.com>