Re: [PATCH 0/3 v4] ISOC supporting for USB 3.0

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

 



On Thu, Apr 29, 2010 at 02:51:50AM +0800, Andiry Xu wrote:
> On Tue, 2010-04-27 at 14:59 -0700, Sarah Sharp wrote:
> > What the log shows is that the hardware gave back a transfer completion
> > with a DMA pointer of all zeros (the suspect DMA = 0x0 line).  I can't
> > tell what the completion code was, only that the endpoint ring that was
> > indexed in the event had at least one TD on the ring.
> > 
> > After the transfer event with the zeroed DMA pointer, the host attempted
> > to give back several TDs.  It looks like those events are for the same
> > isoc ring, after the TD at the head of the endpoint list.  The ring
> > handler doesn't complete the queued TD when it receives an event that
> > looks erroneous, so the endpoint gets stuck at one TD.
> > 
> >From the log, that's possibly what happens.
> 
> > 
> > Now, I see there's this note in the xHCI spec:
> > 
> > "Note: The TRB Pointer field of Missed Service Error Transfer Event may
> > be ‘0’."
> > 
> > Section 4.10.3.2 talks about what happens when the host can't transfer
> > the data within the requested service interval, and it says that it may
> > give a transfer event completion code of "Missed Service Error" with a
> > DMA pointer of zero.  I wonder if that's what I'm seeing?
> > 
> Probably. Ring Overrun and Underrun event also have DMA pointer of zero.
> But it should be processed within the patch. 

Ok, I verified that it is a Missed Service Error that I'm seeing:

Apr 28 11:12:13 xanatos kernel: [71478.902155] xhci_hcd 0000:05:00.0: Giveback URB ffff880037af6c00, len = 384, status = 0
Apr 28 11:12:13 xanatos kernel: [71478.906188] xhci_hcd 0000:05:00.0: Giveback URB ffff88007680cc00, len = 42000, status = 0
Apr 28 11:12:13 xanatos kernel: [71478.907126] xhci_hcd 0000:05:00.0: ERROR Transfer event TRB DMA ptr not part of current TD
Apr 28 11:12:13 xanatos kernel: [71478.907135] xhci_hcd 0000:05:00.0: Event TRB with TRB type ID 32
Apr 28 11:12:13 xanatos kernel: [71478.907142] xhci_hcd 0000:05:00.0: Offset 0x0 = 0x0
Apr 28 11:12:13 xanatos kernel: [71478.907148] xhci_hcd 0000:05:00.0: Offset 0x4 = 0x0
Apr 28 11:12:13 xanatos kernel: [71478.907154] xhci_hcd 0000:05:00.0: Offset 0x8 = 0x17000000
Apr 28 11:12:13 xanatos kernel: [71478.907160] xhci_hcd 0000:05:00.0: Offset 0xc = 0x1038001
Apr 28 11:12:13 xanatos kernel: [71478.907166] xhci_hcd 0000:05:00.0: Current td->first_trb (DMA) = 0x1779f580
Apr 28 11:12:13 xanatos kernel: [71478.907172] trb_in_td - suspect DMA = 0x0
Apr 28 11:12:13 xanatos kernel: [71478.907178] trb_in_td - start DMA = 0x1779f580, end DMA = 0x1779f580,seg end DMA = 0x1779f7f0

The event ring output was garbled, but the next transfer event with a
valid DMA pointer was for the TD at 0x1779f5a0.  The transfer ring
looked like this:

Apr 28 11:12:13 xanatos kernel: [71478.909688] xhci_hcd 0000:05:00.0: @1779f580 53fa47b8 00000000 00040bf4 80001424
Apr 28 11:12:13 xanatos kernel: [71478.909696] xhci_hcd 0000:05:00.0: @1779f590 53fa53ac 00000000 00040bf4 80001424
Apr 28 11:12:13 xanatos kernel: [71478.909703] xhci_hcd 0000:05:00.0: @1779f5a0 53fa5fa0 00000000 00040bf4 80001424

So the xHC skipped the TD at @1779f590.

This was with the bug fix for len=0 applied.

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

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

  Powered by Linux