On Tue, Dec 20, 2011 at 02:10:04PM -0800, Sarah Sharp wrote: > On Tue, Dec 20, 2011 at 04:01:32PM +0800, Andiry Xu wrote: > > There is some code related to Set TRDP command completion, in patch 3 > > "count free TRBs on transfer ring", when process a set TRDP event, > > driver will update num_trbs_free by walking over the ring when update > > dequeue pointer. Can you check the code to see if that's right? Hi Andiry, I haven't had time to test your patchset closely, but I think it is the Set TR dequeue pointer code that's bad. I was able to trigger a hard-hang when I plugged in a new USB 3.0 card reader that I got for Christmas. The card reader was empty, and it stalled one of the first SCSI commands that came to it. When handling the Set TR dequeue pointer event, the machine hung. So you don't have to trigger the ring expansion at all to trigger the bug. I don't have time to look at your code this week, but maybe you could re-look at the TRB counting code and test with a USB storage device that stalls SCSI commands? Thanks, Sarah Sharp -- 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