On an Orin Nano 8GB module (P3767-0000) on a custom carrier board (not the NVIDIA Orin Nano devkit), tegra-xusb 3610000.usb intermittently dies under sustained high-pps USB-Ethernet traffic. The whole USB3 bus drops at once and the controller never auto-recovers — only a
controller unbind/bind or reboot brings it back. dmesg:
Both USB-Ethernet NICs stall tx in the SAME microsecond:
[57252.271330] NETDEV WATCHDOG: enu2u4 (ax88179_178a): transmit queue 0 timed out
[57252.271330] NETDEV WATCHDOG: enu2u2 (r8152): transmit queue 0 timed out
tx-timeout recovery issues a stop-endpoint command; controller never answers:
tegra-xusb 3610000.usb: xHCI host not responding to stop endpoint command
tegra-xusb 3610000.usb: xHCI host controller not responding, assume dead
tegra-xusb 3610000.usb: HC died; cleaning up
all downstream USB devices then disconnect (root hubs persist)
(Representative of the observed sequence; the same-microsecond 57252.271330 NETDEV WATCHDOG pair is the value we have recorded. A full verbatim dmesg — including the per-CPU WARNING: backtraces and the xusb probe banner — can be captured from an affected unit on request.)
Two things this is NOT, to save us all a round-trip:
- Not a USB-device/dongle bug. Two different-chipset USB-Ethernet adapters (ASIX AX88179 + Realtek RTL8156B) behind this controller logged NETDEV WATCHDOG at the same microsecond (identical timestamps above), on different CPUs. The only thing the two paths share is this
controller, so we read the NIC tx-timeouts as a downstream symptom of the controller stalling rather than a fault on either adapter. That’s what points us at the controller. - Not fixed by a newer kernel/JetPack. We’re on mainline linux-yocto 6.6. We already know the JP5-era tegra_xhci_hcd_reinit() / en_hcd_reinit recovery is gone in JP6, and it keyed off the mbox FW_HANG interrupt anyway — which this crash never raises. This is the generic “assume
dead” path, silent, no controller firmware hang log, no mbox interrupt. So no in-kernel recovery (current or back-ported) would even fire. We have an external watchdog that unbind/binds the controller and recovers it cleanly with no reboot — recovery is solved; we want the root
cause.
It’s load-correlated and sporadic (hours to days, heavier under traffic) — looks like a race in the controller’s command/event-ring handling when stop-endpoint recovery hits an already-saturated controller, not a fixed timer.
Questions:
- Why does the controller enter an unrecoverable command-ring-dead state under sustained load with no FW_HANG mbox?
- Known errata / newer firmware for xusb FW 2023-02-10 on command-ring stalls under load?
- What do xHCI quirks 0x810 enable here, and are any relevant under saturation?
- Recommended controller-side prevention (USB3 U1/U2 LPM / ELPG off?) and tradeoffs.
Can capture and provide a full dmesg from an affected unit, and run a controlled bench repro (LPM off, pps sweep), on request. Like said earlier, it may take hours or days for the issue to come up so it would require coordinating a dedicated set up to get this if necessary.
Env: Orin Nano 8GB module (P3767-0000) on a custom carrier (not the devkit), JetPack 6 / L4T 36.x (OE4T meta-tegra), mainline linux-yocto 6.6, xusb FW 2023-02-10, xHCI quirks 0x810.
Possibly-related reports (Tegra xHCI failing/disconnecting under load, across platforms/JetPacks):
- Orin Nano — xHCI host controller not responding, assume dead: xHCI host controller not responding, assume dead
- Orin Nano — all USB devices fail; “xHCI host not responding to stop endpoint command”: All usb devices not work, see log: xHCI host not responding to stop endpoint command
- Orin Nano, JP6.2 — Transfer event TRB DMA ptr not part of current TD during sustained USB3 streaming:
Usb 3.1 error with jetpack 6.2 r36.4.4. tegra-xusb 3610000.usb: ERROR Transfer event TRB DMA ptr not part of current TD ep_index 2 comp_code 4 - AGX Orin — USB controller randomly failing and disconnecting all devices: USB controller randomly failing and disconnecting all the devices
- Orin NX — xHCI host not responding to stop endpoint command: xHCI host not responding to stop endpoint command
- AGX Orin, JP6.2 — tegra-xusb mbox interrupt no longer triggers controller recovery: JetPack 6.2: tegra-xusb mbox interrupt no longer triggers controller recovery
- TX2 — USB3 bus degrades after sustained high-throughput traffic; no software reset available: Is there a way to "reset" the tegra-xusb driver if it is not built as a kernel module?