[PATCH] usb: xhci: reset endpoint on USB stall

Stefan Agner stefan at agner.ch
Mon Jan 24 15:23:23 CET 2022


Hi Bin,

On 2022-01-05 02:21, Bin Meng wrote:
> Hi Stefan,
> 
> On Wed, Jan 5, 2022 at 3:48 AM Stefan Agner <stefan at agner.ch> wrote:
>>
>> Bin Meng,
>>
>> On 2021-09-27 17:14, Marek Vasut wrote:
>> > On 9/27/21 2:42 PM, Stefan Agner wrote:
>> >> There are devices which cause a USB stall when trying to read strings.
>> >> Specifically Arduino Mega R3 stalls when trying to read the product
>> >> string.
>> >>
>> >> The stall currently remains unhandled, and subsequent retries submit new
>> >> transfers on a stopped endpoint which ultimately cause a crash in
>> >> abort_td():
>> >> WARN halted endpoint, queueing URB anyway.
>> >> XHCI control transfer timed out, aborting...
>> >> Unexpected XHCI event TRB, skipping... (3affe040 00000000 13000000 02008401)
>> >> BUG at drivers/usb/host/xhci-ring.c:505/abort_td()!
>> >> BUG!
>> >> resetting ...
>> >>
>> >> Linux seems to be able to recover from the stall by issuing a
>> >> TRB_RESET_EP command.
>> >>
>> >> Introduce reset_ep() which issues a TRB_RESET_EP followed by setting the
>> >> transfer ring dequeue pointer via TRB_SET_DEQ. This allows to properly
>> >> recover from a USB stall error and continue communicating with the USB
>> >> device.
>> >>
>> >> Signed-off-by: Stefan Agner <stefan at agner.ch>
>> >
>> > I hope to get AB/RB from Bin here, then it can go into this release I think.
>>
>> Any chance you could have a look at this to get it into this release :)
>>
> 
> Sorry I missed this. I suspect it's too late for 2022.01 to include
> such big changes :(

I understand. Now that 2022.01 is out, could you have a look at this?

--
Stefan


More information about the U-Boot mailing list