From: Michal Pecio <michal.pecio@gmail.com>
To: Henry Tseng <henrytseng@qnap.com>
Cc: Mathias Nyman <mathias.nyman@intel.com>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
linux-usb@vger.kernel.org
Subject: Re: [PATCH 0/2] xhci: handshake timeout overrun and configure endpoint hang on device disconnect
Date: Fri, 2 Oct 2026 11:30:12 +0200 [thread overview]
Message-ID: <20261002113012.271ceead.michal.pecio@gmail.com> (raw)
In-Reply-To: <20260930101752.15794-1-henrytseng@qnap.com>
On Wed, 30 Sep 2026 18:17:50 +0800, Henry Tseng wrote:
> This series addresses two problems found while debugging an AMD Raven
> USB 3.1 xHCI (1022:15e0) that gets declared dead when a USB storage
> enclosure is unplugged. During teardown a command fails to complete,
> aborting the command ring also fails, and the whole host is declared
> dead, taking unrelated devices on other root ports down with it:
>
> xhci_hcd 0000:0c:00.3: Command timeout, USBSTS: 0x00000010 PCD
> xhci_hcd 0000:0c:00.3: Abort command ring
> xhci_hcd 0000:0c:00.3: Abort failed to stop command ring: -110
> xhci_hcd 0000:0c:00.3: xHCI host controller not responding, assume dead
Sounds like UAS, because I doubt that similar problems with ordinary
bulk endpoints could remain unknown for long.
I wonder if the kernel may be doing something crazy or out of spec
to deserve "undefined xHC behavior". See notes in xHCI 4.6.6, similar
requirements are also spelled in 4.6.4.
Is this easily reproducible? Could you send debugfs of this failure,
preferably before the "assume dead" message? See also my patch below.
zip -r debugfs.zip /sys/kernel/debug/usb/xhci/0000:0c:00.3/
> Reproduced on mainline v7.3-rc5:
Any other known affected or unaffected releases?
> Patch 2 fixes the host death on disconnect. The command that never
> completed is a configure endpoint command issued during teardown of a
> device behind the disconnected root port, right before disable slot for
> the same slot. Skip it when the roothub port is gone, as
> xhci_check_bandwidth() already does when the host is being removed.
That's not exactly the same, becasue with the xHC gone, we need not
worry what happens later. You found that Disable Slot works, so that's
OK, at least with this HC. Not sure about Reset Device, in case it's
not a disconnection but SS.Inactive due to link error.
> Patch 1 is an independent handshake overrun noticed during the same
> debugging, and does not fix the disconnect hang on its own. The
> command abort handshake has a 5 s timeout but took 15.8 s with
> interrupts disabled.
This patch should fix the "interrupts disabled" part:
https://lore.kernel.org/linux-usb/20260824095944.1c8335fa.michal.pecio@gmail.com/
And yes, the timeout is actually longer than intended. Interesting that
this is apparently a regression due to core changes, not an xhci-hcd
bug. It's possible that other drivers were similarly affected.
Regards,
Michal
next prev parent reply other threads:[~2026-10-02 9:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-30 10:17 [PATCH 0/2] xhci: handshake timeout overrun and configure endpoint hang on device disconnect Henry Tseng
2026-09-30 10:17 ` [PATCH 1/2] xhci: make xhci_handshake() timeout wall-clock based again Henry Tseng
2026-09-30 10:17 ` [PATCH 2/2] xhci: skip configure endpoint when dropping endpoints of a disconnected device Henry Tseng
2026-10-02 9:30 ` Michal Pecio [this message]
2026-10-07 9:52 ` [PATCH 0/2] xhci: handshake timeout overrun and configure endpoint hang on device disconnect Henry Tseng
2026-10-08 9:06 ` Michal Pecio
2026-10-08 9:13 ` Michal Pecio
2026-10-08 10:25 ` Henry Tseng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20261002113012.271ceead.michal.pecio@gmail.com \
--to=michal.pecio@gmail.com \
--cc=gregkh@linuxfoundation.org \
--cc=henrytseng@qnap.com \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox