On 12/30/2011 11:10 PM, Bora Sahin wrote: > >>> xhci_hcd 0000:00:00.0: `MEM_WRITE_DWORD(3'b000, 32'h79003004, 32'h4, 4'hf); >>> xhci_hcd 0000:00:00.0: Cancel URB 834086c0 >>> >> >> Here xhci_urb_dequeue() is called, means usb core wants to unlink or >> kill a URB. Seems the driver does not handle that correctly. To dequeue >> a URB, xHCI driver needs to do many things, including adding the >> unfinished TDs to a list, issue a stop endpoint command, giveback the >> URB when the command is executed successfully, and ring the doorbell to >> continue transfer or issue a set TRDP command if necessary. It's a >> complex process. Perhaps you can ask Fresco to check that part. > > I see. Why might USB core want to kill or unlink the URB? How can I trace it? > It's a cancellation mechanism. Quite normal, though not as frequently as normal completion occurs. You can check the command ring and event ring after the cancellation happens. See if there is stop endpoint command/Set TRDP command issued on command ring, and if there is corresponding successful event on the event ring. Suppose if everything is OK, the transfer should continue after that. Thanks, Andiry -- 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