Re: [PATCH] xhci: Fix hang on back-to-back Set TR Deq Ptr commands.

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

 



Sarah Sharp <sarah.a.sharp@...> writes:

> 
> The Microsoft LifeChat 3000 USB headset was causing a very reproducible
> hang whenever it was plugged in.  At first, I thought the host
> controller was producing bad transfer events, because the log was filled
> with errors like:
> 
> xhci_hcd 0000:00:14.0: ERROR Transfer event TRB DMA ptr not part of current TD
> 
> However, it turned out to be an xHCI driver bug in the ring expansion
> patches.  The bug is triggered When there are two ring segments, and a
> TD that ends just before a link TRB, like so:

[snip]

> The transfer event would get ignored, the transfer would eventually
> timeout, and we would mistakenly convert the finished transfer to no-op
> TRBs.  Some kernel driver (maybe xHCI?) would then get stuck in an
> infinite loop in interrupt context, and the whole machine would hang.
> 
> This patch should be backported to kernels as old as 3.4, that contain
> the commit b008df60c6369ba0290fa7daa177375407a12e07 "xHCI: count free
> TRBs on transfer ring"
> 
> Signed-off-by: Sarah Sharp <sarah.a.sharp@...>
> Cc: Andiry Xu <andiry.xu@...>

Running into this semi-consistently with a pl2303 usb serial adapter on v3.4 
after upgrading from v3.3 to get the mentioned fix ("no room on ep ring").

Building a 3.4 with this patch at the moment, will report back with the outcome.

--Carey Underwood

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux