On 27.11.2019 17.30, Ard Biesheuvel wrote:
When using a USB webcam on a ThunderX2 workstation, the kernel log
gets flooded with messages like
xhci_hcd 0000:00:0f.0:
WARN Successful completion on short TX for slot 7 ep 2: needs XHCI_TRUST_TX_LENGTH quirk?
Enabling the quirk manually makes the issue go away, so let's enable
it unconditionally for this hardware.
This issue starts to be common for many vendors, many report successful
completions after a initial short transfer in a TD
Does the patch below help in your case? It worked for a Renesas controller
with similar issues. It's a more generic solution.
diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c
index 9ebaa8e132a9..d23f7408c81f 100644
--- a/drivers/usb/host/xhci-ring.c
+++ b/drivers/usb/host/xhci-ring.c
@@ -2381,7 +2381,8 @@ static int handle_tx_event(struct xhci_hcd *xhci,
case COMP_SUCCESS:
if (EVENT_TRB_LEN(le32_to_cpu(event->transfer_len)) == 0)
break;
- if (xhci->quirks & XHCI_TRUST_TX_LENGTH)
+ if (xhci->quirks & XHCI_TRUST_TX_LENGTH ||
+ ep_ring->last_td_was_short)
trb_comp_code = COMP_SHORT_PACKET;
else
xhci_warn_ratelimited(xhci,