id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc,blockedby,blocking,platform 13792,xhci: stall error does not recover,GregCrain,nobody,"I have an early revision NEC USB 3.0 chip. {{{ : PCI: class_base 0c, class_function 03, class_api 30 : PCI: vendor 1033: NEC Corporation : PCI: device 0194: uPD720200 USB 3.0 Host Controller : PCI: info: Serial bus controller (USB controller, XHCI) usb xhci -1: interface version: 0x0096 usb xhci -1: structural parameters: 1:0x04000820 2:0x00000011 3:0x00000000 usb xhci -1: capability params: 0x014042cb During normal operation, a sequence of events occurs and transfers seem ok: usb xhci -1: SubmitTransfer() usb xhci -1: Ding Dong! slot:1 endpoint 1 usb xhci -1: event[14] = 32 (0x000000000d8a1020 0x01000000 0x02018001) usb xhci -1: slot=1 epno=1 remainder=0 status=1 halted=0 }}} . . . With some additional debugging code borrowed from FreeBSD: {{{ /* check if error means halted */ halted = (completionCode != COMP_SHORT_PACKET && completionCode != COMP_SUCCESS); TRACE_ALWAYS(""slot=%u epno=%u remainder=%lu status=%u halted=%u\n"", slot, endpointNumber, remainder, completionCode, halted); }}} But at some point in the function ""HandleTransferComplete(xhci_trb* trb)"", A Stall Error occurs. {{{ usb xhci -1: slot=1 epno=1 remainder=9 status=6 halted=1 }}} A Stall Error is reported by the status=6, TRB completion code. Then at some point after: {{{ usb error xhci -1: _LinkDescriptorForPipe max transfers count exceeded 8 }}} There are no interrupts that occur after this. It occurs very soon on my 0x0096 revision chipset, but I believe that it happens on other chipsets eventually. The driver doesn't seem to recover from a Stall Error, or do anything. It eventually stops, and even though {{{ usb xhci -1: SubmitTransfer() }}} transfers are being issued, no more interrupts occur.",bug,closed,normal,R1/beta2,Drivers/USB/XHCI,R1/Development,fixed,,,,14756,All