RE: [PATCH][RFC] xhci fixes

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

 



> From: Xu, Andiry [mailto:Andiry.Xu@xxxxxxx]
> Hi Sarah,
> 
> When a missed service interval event is encountered, we just set the
> ep->skip flag, increase the event ring dequeue pointer, and then return.
> We will enter the do-while loop and process missed tds the next time we
> encounter a transfer event from this endpoint.
> 
> If the next event after a missed service interval isn't for that
> endpoint, I think is OK. This endpoint does not have its skip flag set,
> and the do-while loop will run only once and then returns. If this
> endpoint's skip flag is also set, then we'll process its missed tds,
> since it must have a missed service interval event some time ago.
> 
> If we get two missed service intervals for the same endpoint in a row,
> it will be two cases: the two missed service interval events are
> consecutive, or not. If they are consecutive, we just return and process
> the missed tds next time when it's not a missed service interval event;
> if they are not consecutive and there's a transfer event between them,
> we should process the missed tds for twice.
> 
> If a missed service interval is followed by a Ring Underrun/overrun
> event for that isoc ring, there may be problems. In this case the
> handle_tx_event() should return. I think ep->skip flag should get
> cleared when encounter a Ring Underrun/overrun event. Maybe this causes
> Paul's issue?
> 
> If Paul can print his event ring when the infinite loop case happens,
> that may help to find the actual case.
> 
> Thanks & Best regards,
> Andiry

Hi Andiry,

Attached is a dmesg log from when this happens. I have added calls to
xhci_debug_ring, xhci_dbg_ring_ptrs, and xhci_dbg_ep_rings (for each of
the active slots) when I see that event_seg is NULL. You can search for
the message "event_seg is NULL" to find where this happens.

Note, I have removed some of the other debug messages, because the log
was way too verbose otherwise, and also added one or two of my own.

Let me know if you need any more info. Thanks.

-- 
Paul

Attachment: dmesg.log.gz
Description: dmesg.log.gz


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

  Powered by Linux