RE: xhci_hcd ERROR no room on ep ring, xhci_hcd WARN Event TRB for slot 1 ep 4 with no TDs queued?

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

 



Sander,

Please try this patch3. Before you apply this patch, make sure to apply
"xHCI: update ring dequeue pointer when process missed tds" patch first.
I attach it too.

Thanks & Best regards,
Andiry
 

> -----Original Message-----
> From: Sarah Sharp [mailto:sarah.a.sharp@xxxxxxxxxxxxxxx]
> Sent: Wednesday, August 11, 2010 1:41 AM
> To: Sander Eikelenboom
> Cc: Xu, Andiry; linux-usb@xxxxxxxxxxxxxxx
> Subject: Re: xhci_hcd ERROR no room on ep ring, xhci_hcd WARN Event
TRB
> for slot 1 ep 4 with no TDs queued?
> 
> On Sun, Aug 08, 2010 at 12:44:19PM +0200, Sander Eikelenboom wrote:
> > Hello Andiry,
> >
> > Attached is the syslog output with the DMA error on a kernel with
patch3
> applied.
> 
> What's the base kernel you're patching?  Is it from my master branch,
or
> are you taking a stock kernel and patching it with Andiry's isoc
> patches?  Which driver is loaded for your device?
> 
> > BTW, i haven't seen a pull request for xhci and the isoc patches for
the
> 2.6.36 merge window yet ?
> 
> Greg has the patches in his queue (he has a quilt patchset, so he
> doesn't ask for pull requests).
> 
> So the interesting part of your isoc endpoint ring is this:
> @c7df5660 c7a2a5d0 00000000 00040b4c 80001424
> @c7df5670 c7a2b11c 00000000 00040b4c 80001424
> @c7df5680 c7a2bc68 00000000 00040b4c 80001424
> @c7df5690 c7a2c7b4 00000000 00040b4c 80001424
> @c7df56a0 c7f103d4 00000000 00040b4c 80001425
> @c7df56b0 c7f10f20 00000000 00040b4c 80001425
> ...
> ERROR Transfer event TRB DMA ptr not part of current TD
> ep 4, skip is not set
> isoc ep
> ep_ring->deq_seg = ffff88001f7362a0
> ep_ring->dequeue = ffff88001f798120
> td->last_trb = ffff88001f798120
> event_dma = 0xc7df5680, @ffff88001e6eb4b0
> 
> The printed dequeue pointer is a virtual pointer, so it's not very
> helpful in correlating where the endpoint dequeue pointer is.
> 
> Andiry, maybe you can rev the third patch to use
xhci_trb_virt_to_dma()?
> That way you can see why the xHCI driver claims the event isn't part
of
> the current TD, when the transfer events on the ring look fairly sane
(a
> successful event for c7df5660, c7df5670, and c7df5680).
> 
> Your log shows some other interesting events on the event ring:
> 
> Event Ring:
> @c7df3490 c7df5660 00000000 01000000 01058001
> @c7df34a0 c7df5670 00000000 01000000 01058001
> @c7df34b0 c7df5680 00000000 01000000 01058001
> @c7df34c0 00000000 00000000 15000000 00009401
> @c7df34d0 c7df5690 00000000 01000000 01058001
> @c7df34e0 00000000 00000000 15000000 00009401
> @c7df34f0 00000000 00000000 0f000000 01058001
> @c7df3500 c7df52a0 00000000 01000000 01058000
> 
> This TRB in particular:
> @c7df34c0 00000000 00000000 15000000 00009401
> 
> The completion code is 0x15, or 21, which is an Event Ring Full Error.
> There's a second one on the ring, which is very odd.  If the ring was
> full, how could the host manage to fit two events on the event ring?
> 
> The xHCI driver currently doesn't handle expanding the event ring, but
I
> had thought that it wouldn't get 62 events in one interrupt.  I think
> there's some deeper issue here.  Maybe my commit to move the hardware
> event ring dequeue pointer writes after all events have been handled
is
> to blame?
> 
> Sander, do you have a commit with this short description:
> "xhci: Minimize HW event ring dequeue pointer writes."?
> 
> The last TRB on the event ring is an isochronous Ring Overrun Event:
> @c7df34f0 00000000 00000000 0f000000 01058001
> 
> That should be harmless.  It just means the driver didn't queue an
> isochronous transfer before the host went to look at the ring.  The
> periodic schedule will be started on the next transfer when the
doorbell
> is rung.  Perhaps since you're using Xen, the computer is rather slow?
> 
> Sarah Sharp

Attachment: isoc_length3.patch
Description: isoc_length3.patch

Attachment: 0001-xHCI-update-ring-dequeue-pointer-when-process-missed.patch
Description: 0001-xHCI-update-ring-dequeue-pointer-when-process-missed.patch


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

  Powered by Linux