Linux USB
 help / color / mirror / Atom feed
* [PATCH v2] xhci: pci: Disable soft retry for Renesas uPD720201
@ 2026-06-17 10:09 raoxu
  2026-06-18 14:03 ` Mathias Nyman
  0 siblings, 1 reply; 2+ messages in thread
From: raoxu @ 2026-06-17 10:09 UTC (permalink / raw)
  To: mathias.nyman; +Cc: gregkh, linux-usb, linux-kernel, raoxu, stable

From: Xu Rao <raoxu@uniontech.com>

The Renesas uPD720201 xHCI controller can fail to complete
a Stop Endpoint command after a transaction error on an interrupt
endpoint when soft retry is used.

This was reproduced with this setup:

  xHCI: Renesas uPD720201, PCI ID 1912:0014 rev 03
  dev:  USB Ethernet device with an integrated Genesys Logic
        USB3.1 hub, USB ID 05e3:0626, and a Realtek RTL8153
        Ethernet function, USB ID 0bda:8153

Reproducer:

  1. Plug the integrated USB hub and Ethernet device into the
     1912:0014 xHCI controller.
  2. Let r8152 bind to the 0bda:8153 RTL8153 Ethernet function
     behind the integrated hub.
  3. Bring the Ethernet device up.
  4. Hot-unplug the device.

The host reports a transaction error on the RTL8153 interrupt
endpoint, queues a soft reset, and later times out the Stop
Endpoint command while disconnecting the device:

  Transfer error for slot 8 ep 6 on endpoint
  Soft-reset ep 6, slot 8
  Ignoring reset ep completion code of 1
  xHCI host not responding to stop endpoint command
  xHCI host controller not responding, assume dead
  HC died; cleaning up

The Renesas 1912:0014 controller cannot safely use the xHCI soft
retry path. Set XHCI_NO_SOFT_RETRY for this controller so
transaction errors use the pre-soft-retry recovery path. With
this quirk the same hot-unplug test no longer times out the Stop
Endpoint command and the RTL8153 remains usable and stable.

Fixes: f8f80be501aa ("xhci: Use soft retry to recover faster from transaction errors")
Cc: stable@vger.kernel.org
Signed-off-by: Xu Rao <raoxu@uniontech.com>
---
Changes in v2:
- Add Cc: stable@vger.kernel.org.

 drivers/usb/host/xhci-pci.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
index 585b2f3117b0..d70c6a6a64bb 100644
--- a/drivers/usb/host/xhci-pci.c
+++ b/drivers/usb/host/xhci-pci.c
@@ -427,6 +427,7 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci)
 	if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
 	    pdev->device == 0x0014) {
 		xhci->quirks |= XHCI_ZERO_64B_REGS;
+		xhci->quirks |= XHCI_NO_SOFT_RETRY;
 	}
 	if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
 	    pdev->device == 0x0015) {
--
2.50.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v2] xhci: pci: Disable soft retry for Renesas uPD720201
  2026-06-17 10:09 [PATCH v2] xhci: pci: Disable soft retry for Renesas uPD720201 raoxu
@ 2026-06-18 14:03 ` Mathias Nyman
  0 siblings, 0 replies; 2+ messages in thread
From: Mathias Nyman @ 2026-06-18 14:03 UTC (permalink / raw)
  To: raoxu, mathias.nyman; +Cc: gregkh, linux-usb, linux-kernel, stable

On 6/17/26 13:09, raoxu wrote:
> From: Xu Rao <raoxu@uniontech.com>
> 
> The Renesas uPD720201 xHCI controller can fail to complete
> a Stop Endpoint command after a transaction error on an interrupt
> endpoint when soft retry is used.
> 
> This was reproduced with this setup:
> 
>    xHCI: Renesas uPD720201, PCI ID 1912:0014 rev 03
>    dev:  USB Ethernet device with an integrated Genesys Logic
>          USB3.1 hub, USB ID 05e3:0626, and a Realtek RTL8153
>          Ethernet function, USB ID 0bda:8153
> 
> Reproducer:
> 
>    1. Plug the integrated USB hub and Ethernet device into the
>       1912:0014 xHCI controller.
>    2. Let r8152 bind to the 0bda:8153 RTL8153 Ethernet function
>       behind the integrated hub.
>    3. Bring the Ethernet device up.
>    4. Hot-unplug the device.
> 
> The host reports a transaction error on the RTL8153 interrupt
> endpoint, queues a soft reset, and later times out the Stop
> Endpoint command while disconnecting the device:
> 
>    Transfer error for slot 8 ep 6 on endpoint
>    Soft-reset ep 6, slot 8
>    Ignoring reset ep completion code of 1
>    xHCI host not responding to stop endpoint command
>    xHCI host controller not responding, assume dead
>    HC died; cleaning up
> 
> The Renesas 1912:0014 controller cannot safely use the xHCI soft
> retry path. Set XHCI_NO_SOFT_RETRY for this controller so
> transaction errors use the pre-soft-retry recovery path. With
> this quirk the same hot-unplug test no longer times out the Stop
> Endpoint command and the RTL8153 remains usable and stable.
> 
> Fixes: f8f80be501aa ("xhci: Use soft retry to recover faster from transaction errors")
> Cc: stable@vger.kernel.org
> Signed-off-by: Xu Rao <raoxu@uniontech.com>
> ---

Thanks, added

I'd appreciate your opinion on a related issue.
I'm thinking about trying to recover from these stop endpoint command timeouts.

While debugging this, did xHC controller otherwise seem somewhat functional?
Did you for example see port status change events, or transfer events
between queuing the stop endpoint command and the timeout?

Thanks
Mathias

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-06-18 14:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-17 10:09 [PATCH v2] xhci: pci: Disable soft retry for Renesas uPD720201 raoxu
2026-06-18 14:03 ` Mathias Nyman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox