> -----Original Message----- > From: Paul Zimmerman [mailto:Paul.Zimmerman@xxxxxxxxxxxx] > Sent: Wednesday, August 25, 2010 2:20 AM > To: Xu, Andiry > Cc: Sarah Sharp; linux-usb@xxxxxxxxxxxxxxx > Subject: RE: [PATCH][RFC] xhci fixes > > > From: Andiry Xu [mailto:andiry.xu@xxxxxxx] > > <snip> > > > But I haven't seen td bd415150 and following tds on the endpoint ring. > > I'm afraid the full endpoint ring is not printed, because I allocate 8 > > segments for isoc endpoint, but there is only one segment showed in the > > log. Perhaps you only print one segment of isoc endpoint ring? > > > > With your patch, every time when event_seg is NULL, you break out and > > returns. But event_seg will be NULL when a missed service interval event > > is encountered and it's quite normal for isoc transfer. Your patch may > > workaround the issue but it does not help to find the root cause. And > > suppose the do-while will not run infinity. ep->skip is cleared when > > irq_handler found the td on the ring, or when the td_list is empty. > > Since urb_enqueue needs to acquire the lock which is hold by > > irq_handler, it cannot insert tds to the ring. Eventually the td_list is > > empty, and ep->skip is clear. > > Hi Andiry, > > I have some good/bad news (depending on how you look at it). > > I have updated my debug code to print all the ring segments instead of > just > one. > > However, our xHCI controller hardware was just updated to the latest > version. > With this version, the "event_seg is NULL" case happens *much* less > frequently > than before. So far, I have only been able to reproduce it once in over an > hour of intensive testing. Unfortunately, the debug messages had already > been > flushed from the log by the time I realized it had occurred. > > Previously, it would happen after just a few startup/shutdown cycles of > the > webcam app. > > So it's possible that the problematic case I was seeing was related to > some > sort of hardware issue that has now been resolved. > > I will keep trying to capture a dmesg log from when it does happen, just > to be > sure. > > -- Well, I'm still wondering what causes your system freeze symptom. Suppose event_seg is NULL should not cause this, and I haven't seen such issue in my stress test. Actually, you should see "Miss service interval error, set skip flag" message before event_seg is NULL, and then there will be "Found td, clear skip flag" message. That should be the normal case. Print the segments only when event_seg is NULL, and you should be able to avoid the verbose logs. 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