NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/58139: xhci controller data toggle can get out of sync with device resulting in stalled transfers



>Number:         58139
>Category:       kern
>Synopsis:       xhci controller data toggle can get out of sync with device resulting in stalled transfers
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Thu Apr 11 14:05:00 +0000 2024
>Originator:     Jason Thorpe
>Release:        NetBSD 10 and 10.99.x (and earlier as well)
>Organization:
United Federation of GAL Programmers
>Environment:
NetBSD the-ripe-vessel 10.99.10 NetBSD 10.99.10 (GENERIC) #68: Fri Nov 17 14:40:27 PST 2023  thorpej@the-ripe-vessel:/space/src/sys/arch/amd64/compile/GENERIC amd64
>Description:
It is possible for the data toggle (i.e. which data PID is expected next during a transfer) to get out of sync between the xhci controller and a device, resulting in a stalled transfer.  The issue is described in a 2018 issue report for libusb:

     https://github.com/libusb/libusb/issues/399

This can be easily reproduced using the "minipro" program with a TL866II+ programmer; running "minipro" (to e.g. query the programmer) the first time succeeds, but running it a second time stalls until the device is disconnected and reconnected.

The solution is to issue a CONFIGURE_ENDPOINT with both a DROP and an ADD of the endpoint in question at the correct time.  The discussion in the libusb issue above references the change to the Linux xhci driver that addresses the problem.
>How-To-Repeat:
See above.
>Fix:
See above.  Someone who groks the xhci driver should be able to make heads-or-tails of it.



Home | Main Index | Thread Index | Old Index