From: bugzilla-daemon@kernel.org
To: linux-usb@vger.kernel.org
Subject: [Bug 221184] mouse/keyboard (connected via hub) usb reset under system load with weak cpu
Date: Wed, 11 Mar 2026 08:06:30 +0000 [thread overview]
Message-ID: <bug-221184-208809-IBwKN02Vqe@https.bugzilla.kernel.org/> (raw)
In-Reply-To: <bug-221184-208809@https.bugzilla.kernel.org/>
https://bugzilla.kernel.org/show_bug.cgi?id=221184
--- Comment #36 from Liam Mitchell (mitchell.liam@gmail.com) ---
(In reply to Alan Stern from comment #35)
> Yes, EPROTO represents a communication failure. However, it only means that
> the host thinks there was a failure; there's no way to know what the device
> thinks. Furthermore, xHCI controllers require an endpoint reset in order to
> recover from the failure.
>
> As a result of these two facts, it is entirely possible that the endpoint
> state held in the host is no longer in agreement with the state held in the
> device. If it isn't, a retry would apparently succeed but in fact the
> device would ignore the data that was sent or repeat the data that it sent
> previously, or maybe not respond at all.
>
> The only way to make sure the two states are back in agreement is to reset
> them both. That's what usb_clear_halt() does.
I see this comment in drivers/usb/host/xhci-ring.c:
> * Proper error code is unknown here, it would be -EPIPE if device side
> * of enadpoit halted (aka STALL), and -EPROTO if not (transaction
>error)
> * We use -EPROTO, if device is stalled it should return a stall error
>on
> * next transfer, which then will return -EPIPE, and device side stall
>is
> * noted and cleared by class driver.
From this I understand:
1. xhci has the same understanding of error codes
EPIPE is a stall, driver should clear with usb_clear_halt()
EPROTO has no expectation of driver clearing halt
2. xhci clears non-stall halts automatically
3. stalled devices should continue to report stall even if first report was
missed
My understanding of usbhid is that it only listens to independent event
packets. There is no protocol state to keep in sync.
If that's correct, the optimal handling of EPROTO is to resubmit URB as soon as
possible (with backoff on repeated errors) to reduce the chance of missed
events.
If the device is actually stalled, an EPIPE should come eventually and be fixed
with usb_clear_halt().
--
You may reply to this email to add a comment.
You are receiving this mail because:
You are watching the assignee of the bug.
next prev parent reply other threads:[~2026-03-11 8:06 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-07 11:55 [Bug 221184] New: mouse/keyboard (connected via hub) usb reset under system load with weak cpu bugzilla-daemon
2026-03-07 11:56 ` [Bug 221184] " bugzilla-daemon
2026-03-07 11:58 ` bugzilla-daemon
2026-03-07 16:51 ` bugzilla-daemon
2026-03-07 18:56 ` bugzilla-daemon
2026-03-07 18:57 ` bugzilla-daemon
2026-03-07 19:03 ` bugzilla-daemon
2026-03-07 22:44 ` bugzilla-daemon
2026-03-08 4:24 ` bugzilla-daemon
2026-03-08 5:49 ` bugzilla-daemon
2026-03-08 11:47 ` bugzilla-daemon
2026-03-08 15:02 ` bugzilla-daemon
2026-03-08 15:19 ` bugzilla-daemon
2026-03-08 15:39 ` bugzilla-daemon
2026-03-08 16:16 ` bugzilla-daemon
2026-03-08 21:28 ` bugzilla-daemon
2026-03-09 3:43 ` bugzilla-daemon
2026-03-09 5:04 ` bugzilla-daemon
2026-03-09 5:08 ` bugzilla-daemon
2026-03-09 11:32 ` bugzilla-daemon
2026-03-09 14:13 ` bugzilla-daemon
2026-03-09 15:31 ` bugzilla-daemon
2026-03-09 15:46 ` bugzilla-daemon
2026-03-09 15:58 ` bugzilla-daemon
2026-03-09 16:02 ` bugzilla-daemon
2026-03-09 16:08 ` bugzilla-daemon
2026-03-09 17:24 ` bugzilla-daemon
2026-03-09 18:56 ` bugzilla-daemon
2026-03-09 22:02 ` bugzilla-daemon
2026-03-10 5:31 ` bugzilla-daemon
2026-03-10 5:59 ` bugzilla-daemon
2026-03-10 9:54 ` bugzilla-daemon
2026-03-10 10:09 ` bugzilla-daemon
2026-03-10 14:48 ` bugzilla-daemon
2026-03-10 19:42 ` bugzilla-daemon
2026-03-10 21:41 ` bugzilla-daemon
2026-03-11 8:06 ` bugzilla-daemon [this message]
2026-03-11 9:23 ` bugzilla-daemon
2026-03-11 11:04 ` bugzilla-daemon
2026-03-11 12:54 ` bugzilla-daemon
2026-03-11 14:38 ` bugzilla-daemon
2026-03-11 18:37 ` bugzilla-daemon
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=bug-221184-208809-IBwKN02Vqe@https.bugzilla.kernel.org/ \
--to=bugzilla-daemon@kernel.org \
--cc=linux-usb@vger.kernel.org \
/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