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

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

 



On Wed, 2010-04-28 at 11:33 -0700, Sarah Sharp wrote:
> 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.
> 
So it's the same issue. I will try to fix this. Thanks for the
verification.

Andiry Xu


--
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