RE: [PATCH][RFC] xhci fixes

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

 



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


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

  Powered by Linux