tm6000 hangs after starting playback

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

 



Hi,

I have a piece of software that uses libvlc to playback analog video using
V4L2. When stress-testing the software by repeatedly starting and stopping
playback, the device I use (TerraTec Cinergy Hybrid Stick [0ccd:00a5]) goes
into a very strange state, where it hangs when dequeuing a buffer. This is
to where I traced the problem:

	videobuf_dqbuf() ->
		stream_next_buffer() ->
			videobuf_waiton() ->
				wait_event_interruptible()

When the device enters this particular state, the vb->done wait queue is
never woken. I was able to trace the cause of that further down to a problem
with ISOC transfers from the device no longer working properly:

	tm6000_irq_callback() ->
		tm6000_isoc_copy()

In this particular state, *all* ISO packet descriptors report an actual
transfer length of 0. This in turn seems to be the reason why the wait queue
is never woken (buffer_filled() is never called).

I've tried to unload and reload the tm6000 module when this issue occurs, but
that doesn't help. The problem persists the next time playback is started.
The only thing that seems to help is disconnecting and reconnecting the
device or, alternatively, reset the USB device using the USBDEVFS_RESET
ioctl.

I'm wondering whether this is a known problem, or if there is anything I can
do to help track this down further.

Cheers,
Thierry

Attachment: pgpiekOfFOaSP.pgp
Description: PGP signature


[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux