[linux-dvb] Multiple vp7045 DVB USB devices and lockups

Tim Davies tim at opensystems.net.au
Wed Jan 25 02:49:34 CET 2006


Well, I had a quick play around with this:

- The problem is scheduling while atomic: during the msleep in the 
vp7045_usb_op function (vp7045.c) initiated by the wakeup of the second 
frontend.
- I did try turning off kernel preemption, but no change
- I also tried a few hacks with the driver code, but got nothing conclusive.

My config is:

2 x DigitalNow TwinDVB-T device (4 vp7045 tuners)
Kernel is  2.4.15-gentoo-r1 running on a Gentoo 2005.1 system
Processor is AMD64 3200+
DVB drivers are the latest from CVS

Not that my knowledge of Linux semaphores and USB is all that great, but 
wouldn't locking around the send and receive usb_control_msg (with a 
potentially long mdelay in between) cause problems?  Is the semaphore a 
per-device thing?

Maybe it's time for me to read up on USB drivers...


Tim.


Hilton wrote:
> Does anyone successfully have multiple vp7045 dvb-t usb devices 
> working? (Twinhan Alpha II, Digitalnow TwinDVB-T, multiple Tinyusb2 
> devices etc)
>
> I also have the same problem as has been posted about over the last 
> few months (see quoted below from Tim Davies), with dual vp7045 usb 
> devices (DigitalNow TwinDVB-T device - rebadged DVICO Tinyusb 2 devices).
>
> This post is mostly configuration info - along with Tim's debug output 
> quoted below.
>
> Currently using Fedora Core 4's 2.6.14-1.1656_FC4 kernel, all updates 
> applies, and the latest cvs build of the v4l/dvb modules, along with 
> the dvb-usb-vp7045-01.fw firmware.  I've also had the same problem 
> with the default 2.6.14 kernel modules, and also the Jan 16th build of 
> 2.6.16-RC1 kernel (yes, I've done a lot of compiling in the last week ;)
>
> Both devices work fine (tested on the same hardware with Windows XP) 
> at the same time, so its not a usb power-rail problem.
>
> If anyone can help shed some light on a solution, I'd be grateful - 
> done a lot of reading and found a lot of people with the same issue, 
> but no resolution yet.
>
> I'm happy to test any potential solutions - or enable debug in my 
> current module builds to provide more specific info than is included 
> below. :)
>
> Thanks,
>
> Hilton.
>
> My dmesg output is:
>
> [mythtv at tv ~]$ dmesg | grep dvb
> dvb-usb: found a 'Twinhan USB2.0 DVB-T receiver (TwinhanDTV 
> Alpha/MagicBox II)' in warm state.
> dvb-usb: will pass the complete MPEG2 transport stream to the software 
> demuxer.
> dvb-usb: MAC address: 08:ca:17:4e:bc:ff
> dvb-usb: schedule remote query interval to 400 msecs.
> dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) 
> successfully initialized and connected.
> dvb-usb: found a 'Twinhan USB2.0 DVB-T receiver (TwinhanDTV 
> Alpha/MagicBox II)' in warm state.
> dvb-usb: will pass the complete MPEG2 transport stream to the software 
> demuxer.
> dvb-usb: MAC address: 08:ca:17:4e:b8:ff
> dvb-usb: schedule remote query interval to 400 msecs.
> dvb-usb: Twinhan USB2.0 DVB-T receiver (TwinhanDTV Alpha/MagicBox II) 
> successfully initialized and connected.
> usbcore: registered new driver dvb_usb_vp7045
>
> My /dev/dvb is:
>
> [mythtv at tv ~]$ ls -laR /dev/dvb
> /dev/dvb:
> total 0
> drwxr-xr-x   4 root   root     80 Jan 21  2006 .
> drwxr-xr-x  12 root   root   4480 Jan 21 12:04 ..
> drwxr-xr-x   2 mythtv mythtv  120 Jan 21  2006 adapter0
> drwxr-xr-x   2 mythtv mythtv  120 Jan 21  2006 adapter1
>
> /dev/dvb/adapter0:
> total 0
> drwxr-xr-x  2 mythtv mythtv    120 Jan 21  2006 .
> drwxr-xr-x  4 root   root       80 Jan 21  2006 ..
> crw-rw----  1 mythtv mythtv 212, 4 Jan 21  2006 demux0
> crw-rw----  1 mythtv mythtv 212, 5 Jan 21  2006 dvr0
> crw-rw----  1 mythtv mythtv 212, 3 Jan 21  2006 frontend0
> crw-rw----  1 mythtv mythtv 212, 7 Jan 21  2006 net0
>
> /dev/dvb/adapter1:
> total 0
> drwxr-xr-x  2 mythtv mythtv     120 Jan 21  2006 .
> drwxr-xr-x  4 root   root        80 Jan 21  2006 ..
> crw-rw----  1 mythtv mythtv 212, 68 Jan 21  2006 demux0
> crw-rw----  1 mythtv mythtv 212, 69 Jan 21  2006 dvr0
> crw-rw----  1 mythtv mythtv 212, 67 Jan 21  2006 frontend0
> crw-rw----  1 mythtv mythtv 212, 71 Jan 21  2006 net0
>
> Performing a scan works fine for adapter0
>
> [mythtv at tv ~]$ scandvb files/frequency.artarmon
> scanning files/frequency.artarmon
> using '/dev/dvb/adapter0/frontend0' and '/dev/dvb/adapter0/demux0'
> initial transponder 226500000 1 2 0 3 1 2 0
> initial transponder 191625000 1 2 0 3 1 2 0
> initial transponder 571500000 1 2 0 3 1 2 0
> initial transponder 219500000 1 3 0 3 1 1 0
> initial transponder 177500000 1 2 0 3 1 2 0
> >>> tune to: 
> 226500000:INVERSION_AUTO:BANDWIDTH_7_MHZ:FEC_2_3:FEC_NONE:QAM_64:TRANSMISSION_MODE_8K:GUARD_INTERVAL_1_8:HIERARCHY_NONE 
>
>
> But with adapter1 (scandvb -a 1 )  I get the "using 
> '/dev/dvb/adapter1/frontend0' and '/dev/dvb/adapter0/demux0', then the 
> PC hard-locks about 15s later with not output.
>
> And finally, Tim's quoted debug for the same issue.
>
>
>
>> Hi,
>>
>> I noticed in November there was a problem running multiple Twinhan 
>> DTV MagicBox II devices, which causes the kernel to lock up.  As far 
>> as I could tell, the issue was abandoned - with a copy of the kernel 
>> oops being needed to continue...
>>
>> Well, I also have multiple vp7045 based tuners (the DNTV version) and 
>> have the same problem.  I have an excerpt of the kernel oops text below.
>>
>> Basically the problem seems to occur if any tuner apart from the 
>> first one is opened, and there is normally a delay (15-20sec?) before 
>> the crash.  I am using the CVS driver from the 16/1/06 (the most 
>> recent).
>>
>> Thanks,
>>
>> Tim.
>>
>>
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>>
>> ... <repeated ~100 times>
>>
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff8012cde4>{deactivate_task+20}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff885f7f5b>{:dvb_core:dvb_frontend_thread+219}
>> Jan 16 10:39:20 mediabox <ffffffff80130031>{copy_process+4241} 
>> <ffffffff8010f31e>{child_rip+8}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff885f7e80>{:dvb_core:dvb_frontend_thread+0}
>> Jan 16 10:39:20 mediabox <ffffffff8010f316>{child_rip+0}
>> Jan 16 10:39:20 mediabox scheduling while atomic: 
>> kdvb-fe-1/0xffff8100/14284
>> Jan 16 10:39:20 mediabox
>> Jan 16 10:39:20 mediabox Call Trace:<ffffffff803ca99a>{schedule+122} 
>> <ffffffff8032dbd0>{timeout_kill+0}
>> Jan 16 10:39:20 mediabox <ffffffff803cb7b4>{schedule_timeout+148} 
>> <ffffffff80139670>{process_timeout+0}
>> Jan 16 10:39:20 mediabox <ffffffff80139a4a>{msleep+42} 
>> <ffffffff8860c11c>{:dvb_usb_vp7045:vp7045_usb_op+284}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860c3fa>{:dvb_usb_vp7045:.text.lock.vp7045+5}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860c24a>{:dvb_usb_vp7045:vp7045_power_ctrl+42}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860784c>{:dvb_usb:dvb_usb_fe_wakeup+44} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>>
>> ...
>>
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff8012cde4>{deactivate_task+20}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff885f7f5b>{:dvb_core:dvb_frontend_thread+219}
>> Jan 16 10:39:20 mediabox <ffffffff80130031>{copy_process+4241} 
>> <ffffffff8010f31e>{child_rip+8}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff885f7e80>{:dvb_core:dvb_frontend_thread+0}
>> Jan 16 10:39:20 mediabox <ffffffff8010f316>{child_rip+0}
>> Jan 16 10:39:20 mediabox scheduling while atomic: 
>> kdvb-fe-1/0xffff8100/14284
>> Jan 16 10:39:20 mediabox
>> Jan 16 10:39:20 mediabox Call Trace:<ffffffff803ca99a>{schedule+122} 
>> <ffffffff803cb7b4>{schedule_timeout+148}
>> Jan 16 10:39:20 mediabox <ffffffff80139670>{process_timeout+0} 
>> <ffffffff80139a4a>{msleep+42}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860c11c>{:dvb_usb_vp7045:vp7045_usb_op+284}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860c3fa>{:dvb_usb_vp7045:.text.lock.vp7045+5}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff8860c24a>{:dvb_usb_vp7045:vp7045_power_ctrl+42}
>> Jan 16 10:39:20 mediabox 861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>> Jan 16 10:39:20 mediabox 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65} 
>> <ffffffff88607861>{:dvb_usb:dvb_usb_fe_wakeup+65}
>>
>> ...
>>
>
>
> _______________________________________________
> linux-dvb mailing list
> linux-dvb at linuxtv.org
> http://www.linuxtv.org/cgi-bin/mailman/listinfo/linux-dvb



More information about the linux-dvb mailing list