linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* 2.6.25-rc[12] Video4Linux Bttv Regression
@ 2008-02-17  8:36 Bongani Hlope
  2008-02-18 16:11 ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-02-17  8:36 UTC (permalink / raw)
  To: video4linux-list; +Cc: linux-kernel

The bttv driver seems to be experiencing problems in the 2.6.25-rcX kernels. I 
have the divided by error that  Robert Fitzsimons has already reported (I'll 
test his patch and see if it fixes it for me) and I have the following Oops 
when I try to use the radio:

BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<ffffffff8045723d>] __mutex_lock_slowpath+0x3b/0xb2
PGD 67671067 PUD 63f47067 PMD 0
Oops: 0002 [1] PREEMPT SMP
CPU 0
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs dm_mod thermal 
processor fan container button pcspkr snd_pcm_oss snd_mixer_oss tuner tea5767 
tda8290 tuner_xc2028 tda9887 tuner_simple mt20xx tea5761 snd_emu10k1 
snd_rawmidi bttv snd_ac97_codec videodev ac97_bus v4l1_compat snd_pcm 
ir_common firewire_ohci firewire_core snd_seq_device compat_ioctl32 snd_timer 
uhci_hcd ehci_hcd v4l2_common ide_cd_mod crc_itu_t snd_page_alloc usbcore 
videobuf_dma_sg snd_util_mem videobuf_core ohci1394 btcx_risc i2c_viapro 
sr_mod snd_hwdep ieee1394 emu10k1_gp snd tg3 cdrom tveeprom gameport sg evdev 
soundcore
Pid: 7197, comm: radio Tainted: G   M     2.6.25-rc1 #20
RIP: 0010:[<ffffffff8045723d>]  [<ffffffff8045723d>] 
__mutex_lock_slowpath+0x3b/0xb2
RSP: 0018:ffff81007df515e8  EFLAGS: 00010246
RAX: ffff81007f13ef10 RBX: ffff81007f13ef08 RCX: 0000000000000000
RDX: ffff81007df515e8 RSI: ffffffff88184050 RDI: ffff81007f13ef0c
RBP: ffff81007df51628 R08: 0000000000000004 R09: ffff81007df51aa8
R10: ffff81007e680a40 R11: 0000000000000202 R12: ffff81007f13ef0c
R13: ffff81007f13ef08 R14: ffff810063cfc040 R15: ffffffff88184050
FS:  00007fa8d92ba6f0(0000) GS:ffffffff805b2000(0000) knlGS:00000000f61fb980
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 00000000676dc000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process radio (pid: 7197, threadinfo ffff81007df50000, task ffff810063cfc040)
Stack:  ffff81007f13ef10 0005049900000000 018060f7018060fa 0000000000000024
 ffff81007df51aa8 ffff81007f13e800 ffff81007f13ef08 ffff81007e0e5800
 ffff81007df51638 ffffffff80457083 ffff81007df51668 ffffffff88162f2f
Call Trace:
 [<ffffffff80457083>] mutex_lock+0xe/0x10
 [<ffffffff88162f2f>] :bttv:radio_g_tuner+0x40/0xa6
 [<ffffffff8813df7d>] :videodev:__video_do_ioctl+0x2a6e/0x2e25
 [<ffffffff8813503c>] :v4l1_compat:v4l_compat_translate_ioctl+0xea9/0x1af5
 [<ffffffff8813b50f>] ? :videodev:__video_do_ioctl+0x0/0x2e25
 [<ffffffff80301f4b>] ? blk_recount_segments+0x3e/0x62
 [<ffffffff80260f7b>] ? mempool_alloc_slab+0x11/0x13
 [<ffffffff80261085>] ? mempool_alloc+0x48/0xf9
 [<ffffffff802e3369>] ? ext3_get_acl+0x87/0x332
 [<ffffffff80296c65>] ? __d_lookup+0x125/0x137
 [<ffffffff8028d54f>] ? do_lookup+0x63/0x1b1
 [<ffffffff802961c3>] ? dput+0x22/0x120
 [<ffffffff8028f6a6>] ? __link_path_walk+0xbbd/0xd1b
 [<ffffffff802e3369>] ? ext3_get_acl+0x87/0x332
 [<ffffffff802115d1>] ? native_read_tsc+0x11/0x22
 [<ffffffff80310e1b>] ? __delay+0x27/0x59
last message repeated 2 times
 [<ffffffff80310ecf>] ? __udelay+0x40/0x42
 [<ffffffff803c0950>] ? i2c_stop+0x47/0x4b
 [<ffffffff803c1117>] ? bit_xfer+0x412/0x423
 [<ffffffff803bef99>] ? i2c_transfer+0x79/0x85
 [<ffffffff881cc31c>] ? :tuner_simple:simple_set_params+0x2bd/0xc1c
 [<ffffffff80284607>] ? get_unused_fd_flags+0x10d/0x11c
 [<ffffffff8029965b>] ? touch_atime+0xe3/0xec
 [<ffffffff8029b113>] ? mntput_no_expire+0x20/0x8f
 [<ffffffff881e3447>] ? :tuner:fe_set_params+0x46/0x48
 [<ffffffff881e285c>] ? :tuner:set_radio_freq+0x159/0x162
 [<ffffffff80449dfb>] ? klist_dec_and_del+0x14/0x16
 [<ffffffff80449e68>] ? klist_next+0x6b/0x8a
 [<ffffffff803c075a>] ? i2c_cmd+0x0/0x3e
 [<ffffffff8037c62f>] ? device_for_each_child+0x4c/0x5c
 [<ffffffff8813b648>] :videodev:__video_do_ioctl+0x139/0x2e25
 [<ffffffff88168b56>] ? :bttv:bttv_call_i2c_clients+0x16/0x18
 [<ffffffff88161ed2>] ? :bttv:audio_mux+0x105/0x1b5
 [<ffffffff80260d39>] ? filemap_fault+0x1fe/0x371
 [<ffffffff8813e6d4>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8026dc63>] ? handle_mm_fault+0x341/0x697
 [<ffffffff80291c36>] vfs_ioctl+0x5e/0x77
 [<ffffffff80291e9c>] do_vfs_ioctl+0x24d/0x262
 [<ffffffff8045a9d7>] ? do_page_fault+0x434/0x7aa
 [<ffffffff80291ef3>] sys_ioctl+0x42/0x67
 [<ffffffff8020b36b>] system_call_after_swapgs+0x7b/0x80
Feb 15 08:42:03 bongani64 kernel:
Feb 15 08:42:03 bongani64 kernel:
Code: 89 fb 4c 89 e7 48 83 ec 20 65 4c 8b 34 25 00 00 00 00 e8 19 12 00 00 48 
8d 43 08 48 8d 55 c0 48 8b 48 08 48 89 45 c0 48 89 50 08 <48> 89 11 48 83 ca 
ff 48 89 4d c8 4c 89 75 d0 48 89 d0 87 03 ff
RIP  [<ffffffff8045723d>] __mutex_lock_slowpath+0x3b/0xb2
 RSP <ffff81007df515e8>
CR2: 0000000000000000
---[ end trace fdf145f4fc51dccd ]---
note: radio[7197] exited with preempt_count 1

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-17  8:36 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
@ 2008-02-18 16:11 ` Mauro Carvalho Chehab
  2008-02-18 21:20   ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-02-18 16:11 UTC (permalink / raw)
  To: Bongani Hlope; +Cc: video4linux-list, linux-kernel

On Sun, 17 Feb 2008 10:36:19 +0200
Bongani Hlope <bonganilinux@mweb.co.za> wrote:

> The bttv driver seems to be experiencing problems in the 2.6.25-rcX kernels. I 
> have the divided by error that  Robert Fitzsimons has already reported (I'll 
> test his patch and see if it fixes it for me) and I have the following Oops 
> when I try to use the radio:

Have you tested Robert's patch?

I can't see anything wrong on bttv_g_tuner lock. I suspect that the divide
error caused some bad effects at some data on bttv.

I've already applied his fix to my -git tree:

http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git

Hopefully, Linus will pull soon the fixes there.


Cheers,
Mauro

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-18 16:11 ` Mauro Carvalho Chehab
@ 2008-02-18 21:20   ` Bongani Hlope
  2008-02-18 23:21     ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-02-18 21:20 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: video4linux-list, linux-kernel

On Monday 18 February 2008 18:11:25 Mauro Carvalho Chehab wrote:
> On Sun, 17 Feb 2008 10:36:19 +0200
>
> Bongani Hlope <bonganilinux@mweb.co.za> wrote:
> > The bttv driver seems to be experiencing problems in the 2.6.25-rcX
> > kernels. I have the divided by error that  Robert Fitzsimons has already
> > reported (I'll test his patch and see if it fixes it for me) and I have
> > the following Oops when I try to use the radio:
>
> Have you tested Robert's patch?
>

Sorry almost forgot, I have and it fixes the TV but not the radio.

> I can't see anything wrong on bttv_g_tuner lock. I suspect that the divide
> error caused some bad effects at some data on bttv.
>

 The problems don't seem related because one is caused by opening the "radio" 
application, the divide error is caused by using a TV viewing application (I 
tried fbtv)

> I've already applied his fix to my -git tree:

Thanx, I'll try to bisect

>
> http://git.kernel.org/?p=linux/kernel/git/mchehab/v4l-dvb.git
>
> Hopefully, Linus will pull soon the fixes there.
>

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-18 21:20   ` Bongani Hlope
@ 2008-02-18 23:21     ` Bongani Hlope
  2008-02-19 14:16       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-02-18 23:21 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: video4linux-list, linux-kernel

On Monday 18 February 2008 23:20:40 Bongani Hlope wrote:
> On Monday 18 February 2008 18:11:25 Mauro Carvalho Chehab wrote:
> > Have you tested Robert's patch?
>
> Sorry almost forgot, I have and it fixes the TV but not the radio.
>
> > I can't see anything wrong on bttv_g_tuner lock. I suspect that the
> > divide error caused some bad effects at some data on bttv.
>
>  The problems don't seem related because one is caused by opening the
> "radio" application, the divide error is caused by using a TV viewing
> application (I tried fbtv)
>
> > I've already applied his fix to my -git tree:
>
> Thanx, I'll try to bisect

I tried to bisect but the V4L/DVB changes are not bisect friendly, on two 
occursions I just selected "git bisect bad" because the bttv driver wouldn't 
compile, so I couldn't pin-point what causes the oops and hang.

Here are some few observations I made though (I started bisecting between 
2.6.24 and 2.6.25-rc1, saved me ~1000 commits):
1. On the third bisect, there's no oops my PC just hangs a I can't use any 
open terminals
2. When I reached the V4L/DVB changes, my PC did not hag or oops, the radio 
just didn't work (something about invalid VID**AUD**). This made it harder to 
bisect, because it is not working and not breaking so is it good or bad...

Cheers

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-18 23:21     ` Bongani Hlope
@ 2008-02-19 14:16       ` Mauro Carvalho Chehab
  2008-02-19 20:37         ` Bongani Hlope
  2008-02-26 15:41         ` Robert Fitzsimons
  0 siblings, 2 replies; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-02-19 14:16 UTC (permalink / raw)
  To: Bongani Hlope; +Cc: video4linux-list, linux-kernel

On Tue, 19 Feb 2008 01:21:36 +0200
Bongani Hlope <bonganilinux@mweb.co.za> wrote:

> On Monday 18 February 2008 23:20:40 Bongani Hlope wrote:
> > On Monday 18 February 2008 18:11:25 Mauro Carvalho Chehab wrote:
> > > Have you tested Robert's patch?
> >
> > Sorry almost forgot, I have and it fixes the TV but not the radio.
> >
> > > I can't see anything wrong on bttv_g_tuner lock. I suspect that the
> > > divide error caused some bad effects at some data on bttv.
> >
> >  The problems don't seem related because one is caused by opening the
> > "radio" application, the divide error is caused by using a TV viewing
> > application (I tried fbtv)
> >
> > > I've already applied his fix to my -git tree:
> >
> > Thanx, I'll try to bisect
> 
> I tried to bisect but the V4L/DVB changes are not bisect friendly, on two 
> occursions I just selected "git bisect bad" because the bttv driver wouldn't 
> compile, so I couldn't pin-point what causes the oops and hang.
> 
> Here are some few observations I made though (I started bisecting between 
> 2.6.24 and 2.6.25-rc1, saved me ~1000 commits):
> 1. On the third bisect, there's no oops my PC just hangs a I can't use any 
> open terminals
> 2. When I reached the V4L/DVB changes, my PC did not hag or oops, the radio 
> just didn't work (something about invalid VID**AUD**). This made it harder to 
> bisect, because it is not working and not breaking so is it good or bad...

Bisecting this won't be that easy. The support for the depreciated V4L1 API
were removed from bttv driver. Now, it uses v4l1-compat module, that translates
a V4L1 call into a V4L2 one. I'll try to seek for troubles at the current code.


Cheers,
Mauro

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-19 14:16       ` Mauro Carvalho Chehab
@ 2008-02-19 20:37         ` Bongani Hlope
  2008-02-21  9:03           ` Bongani Hlope
  2008-02-26 15:41         ` Robert Fitzsimons
  1 sibling, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-02-19 20:37 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: video4linux-list, linux-kernel, Ingo Molnar

More info add Ingo to CC, maybe he can explain what might cause such failure 
in the mutex code (sorry Ingo, I need to bother you once more)

Ingo:

I got the oops bellow whilst using the radio functionality of the 
bttv-drivers, nothing seems obvious except that I dies while calling 
__mutex_lock_slowpath. I've been trying to follow Linus' and Al's advise on 
oops tracing and I got as far as the _spin_lock code:


BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<ffffffff8045723d>] __mutex_lock_slowpath+0x3b/0xb2
PGD 67671067 PUD 63f47067 PMD 0
Oops: 0002 [1] PREEMPT SMP
CPU 0
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs dm_mod thermal 
processor fan container button pcspkr snd_pcm_oss snd_mixer_oss tuner tea5767 
tda8290 tuner_xc2028 tda9887 tuner_simple mt20xx tea5761 snd_emu10k1 
snd_rawmidi bttv snd_ac97_codec videodev ac97_bus v4l1_compat snd_pcm 
ir_common firewire_ohci firewire_core snd_seq_device compat_ioctl32 snd_timer 
uhci_hcd ehci_hcd v4l2_common ide_cd_mod crc_itu_t snd_page_alloc usbcore 
videobuf_dma_sg snd_util_mem videobuf_core ohci1394 btcx_risc i2c_viapro 
sr_mod snd_hwdep ieee1394 emu10k1_gp snd tg3 cdrom tveeprom gameport sg evdev 
soundcore
Pid: 7197, comm: radio Tainted: G   M     2.6.25-rc1 #20
RIP: 0010:[<ffffffff8045723d>]  [<ffffffff8045723d>] 
__mutex_lock_slowpath+0x3b/0xb2
RSP: 0018:ffff81007df515e8  EFLAGS: 00010246
RAX: ffff81007f13ef10 RBX: ffff81007f13ef08 RCX: 0000000000000000
RDX: ffff81007df515e8 RSI: ffffffff88184050 RDI: ffff81007f13ef0c
RBP: ffff81007df51628 R08: 0000000000000004 R09: ffff81007df51aa8
R10: ffff81007e680a40 R11: 0000000000000202 R12: ffff81007f13ef0c
R13: ffff81007f13ef08 R14: ffff810063cfc040 R15: ffffffff88184050
FS:  00007fa8d92ba6f0(0000) GS:ffffffff805b2000(0000) knlGS:00000000f61fb980
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 00000000676dc000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process radio (pid: 7197, threadinfo ffff81007df50000, task ffff810063cfc040)
Stack:  ffff81007f13ef10 0005049900000000 018060f7018060fa 0000000000000024
 ffff81007df51aa8 ffff81007f13e800 ffff81007f13ef08 ffff81007e0e5800
 ffff81007df51638 ffffffff80457083 ffff81007df51668 ffffffff88162f2f
Call Trace:
 [<ffffffff80457083>] 
 [<ffffffff88162f2f>] :bttv:radio_g_tuner+0x40/0xa6
 [<ffffffff8813df7d>] :videodev:__video_do_ioctl+0x2a6e/0x2e25
 [<ffffffff8813503c>] :v4l1_compat:v4l_compat_translate_ioctl+0xea9/0x1af5
 [<ffffffff8813b50f>] ? :videodev:__video_do_ioctl+0x0/0x2e25
 [<ffffffff80301f4b>] ? blk_recount_segments+0x3e/0x62
 [<ffffffff80260f7b>] ? mempool_alloc_slab+0x11/0x13
 [<ffffffff80261085>] ? mempool_alloc+0x48/0xf9
 [<ffffffff802e3369>] ? ext3_get_acl+0x87/0x332
 [<ffffffff80296c65>] ? __d_lookup+0x125/0x137
 [<ffffffff8028d54f>] ? do_lookup+0x63/0x1b1
 [<ffffffff802961c3>] ? dput+0x22/0x120
 [<ffffffff8028f6a6>] ? __link_path_walk+0xbbd/0xd1b
 [<ffffffff802e3369>] ? ext3_get_acl+0x87/0x332
 [<ffffffff802115d1>] ? native_read_tsc+0x11/0x22
 [<ffffffff80310e1b>] ? __delay+0x27/0x59
last message repeated 2 times
 [<ffffffff80310ecf>] ? __udelay+0x40/0x42
 [<ffffffff803c0950>] ? i2c_stop+0x47/0x4b
 [<ffffffff803c1117>] ? bit_xfer+0x412/0x423
 [<ffffffff803bef99>] ? i2c_transfer+0x79/0x85
 [<ffffffff881cc31c>] ? :tuner_simple:simple_set_params+0x2bd/0xc1c
 [<ffffffff80284607>] ? get_unused_fd_flags+0x10d/0x11c
 [<ffffffff8029965b>] ? touch_atime+0xe3/0xec
 [<ffffffff8029b113>] ? mntput_no_expire+0x20/0x8f
 [<ffffffff881e3447>] ? :tuner:fe_set_params+0x46/0x48
 [<ffffffff881e285c>] ? :tuner:set_radio_freq+0x159/0x162
 [<ffffffff80449dfb>] ? klist_dec_and_del+0x14/0x16
 [<ffffffff80449e68>] ? klist_next+0x6b/0x8a
 [<ffffffff803c075a>] ? i2c_cmd+0x0/0x3e
 [<ffffffff8037c62f>] ? device_for_each_child+0x4c/0x5c
 [<ffffffff8813b648>] :videodev:__video_do_ioctl+0x139/0x2e25
 [<ffffffff88168b56>] ? :bttv:bttv_call_i2c_clients+0x16/0x18
 [<ffffffff88161ed2>] ? :bttv:audio_mux+0x105/0x1b5
 [<ffffffff80260d39>] ? filemap_fault+0x1fe/0x371
 [<ffffffff8813e6d4>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8026dc63>] ? handle_mm_fault+0x341/0x697
 [<ffffffff80291c36>] vfs_ioctl+0x5e/0x77
 [<ffffffff80291e9c>] do_vfs_ioctl+0x24d/0x262
 [<ffffffff8045a9d7>] ? do_page_fault+0x434/0x7aa
 [<ffffffff80291ef3>] sys_ioctl+0x42/0x67
 [<ffffffff8020b36b>] system_call_after_swapgs+0x7b/0x80
Feb 15 08:42:03 bongani64 kernel:
Feb 15 08:42:03 bongani64 kernel:
Code: 89 fb 4c 89 e7 48 83 ec 20 65 4c 8b 34 25 00 00 00 00 e8 19 12 00 00 48 
8d 43 08 48 8d 55 c0 48 8b 48 08 48 89 45 c0 48 89 50 08 <48> 89 11 48 83 ca 
ff 48 89 4d c8 4c 89 75 d0 48 89 d0 87 03 ff
RIP  [<ffffffff8045723d>] __mutex_lock_slowpath+0x3b/0xb2
 RSP <ffff81007df515e8>
CR2: 0000000000000000
---[ end trace fdf145f4fc51dccd ]---
note: radio[7197] exited with preempt_count 1

Code dissamble:

0x4005c0 <array>:       mov    %edi,%ebx
0x4005c2 <array+2>:     mov    %r12,%rdi
0x4005c5 <array+5>:     sub    $0x20,%rsp
0x4005c9 <array+9>:     mov    %gs:0x0,%r14
0x4005d2 <array+18>:    callq  0x4017f0
0x4005d7 <array+23>:    lea    0x8(%rbx),%rax
0x4005db <array+27>:    lea    0xffffffffffffffc0(%rbp),%rdx
0x4005df <array+31>:    mov    0x8(%rax),%rcx
0x4005e3 <array+35>:    mov    %rax,0xffffffffffffffc0(%rbp)
0x4005e7 <array+39>:    mov    %rdx,0x8(%rax)
0x4005eb <array+43>:    mov    %rdx,(%rcx) 	<============= Here
0x4005ee <array+46>:    or     $0xffffffffffffffff,%rdx
0x4005f2 <array+50>:    mov    %rcx,0xffffffffffffffc8(%rbp)
0x4005f6 <array+54>:    mov    %r14,0xffffffffffffffd0(%rbp)
0x4005fa <array+58>:    mov    %rdx,%rax
0x4005fd <array+61>:    xchg   %eax,(%rbx)
0x4005ff <array+63>:    incl   (%rax)
0x400601:       and    $0xa70,%eax
0x400606:       add    %al,(%rax)
0x400608:       add    %ebx,(%rbx)

kernel/mutext.c dissamble:

__mutex_lock_slowpath:
        pushq   %rbp    #
        movq    %rsp, %rbp      #,
        pushq   %r14    #
        pushq   %r13    #
        pushq   %r12    #
        leaq    4(%rdi), %r12   #, D.13845
        pushq   %rbx    #
        movq    %rdi, %rbx      # lock_count, lock
        movq    %r12, %rdi      # D.13845, D.13845
        subq    $32, %rsp       #,
#APP
        movq %gs:0,%r14 #, tsk
#NO_APP
        call    _spin_lock      #
        leaq    8(%rbx), %rax   #, next
        leaq    -64(%rbp), %rdx #, tmp81
        movq    8(%rax), %rcx   # <variable>.prev, prev
        movq    %rax, -64(%rbp) # next, waiter.list.next
        movq    %rdx, 8(%rax)   # tmp81, <variable>.prev
        movq    %rdx, (%rcx)    # tmp81, <variable>.next <========= Here
        orq     $-1, %rdx       #, tmp83
        movq    %rcx, -56(%rbp) # prev, waiter.list.prev
        movq    %r14, -48(%rbp) # tsk, waiter.task
        movq    %rdx, %rax      # tmp83, x

Hope this helps

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-19 20:37         ` Bongani Hlope
@ 2008-02-21  9:03           ` Bongani Hlope
  0 siblings, 0 replies; 23+ messages in thread
From: Bongani Hlope @ 2008-02-21  9:03 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: video4linux-list, linux-kernel, Ingo Molnar

I've enabled MUTEX and SPINLOCK DEBUG, this is what I get

------------[ cut here ]------------
WARNING: at /home/bongani/kernel/git/linux-2.6/kernel/mutex.c:134 
mutex_lock_nested+0xc0/0x2a3()
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs dm_mod thermal 
processor fan container button pcspkr snd_pcm_oss snd_mixer_oss tuner 
snd_emu10k1 tea5767 tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi 
mt20xx snd_ac97_codec tea5761 ac97_bus snd_pcm bttv snd_seq_device snd_timer 
firewire_ohci videodev snd_page_alloc firewire_core v4l1_compat snd_util_mem 
uhci_hcd ehci_hcd ir_common snd_hwdep ide_cd_mod compat_ioctl32 crc_itu_t 
usbcore snd sr_mod v4l2_common ohci1394 videobuf_dma_sg cdrom ieee1394 
i2c_viapro videobuf_core emu10k1_gp tg3 btcx_risc gameport soundcore tveeprom 
sg evdev
Pid: 4563, comm: radio Not tainted 2.6.25-rc2-00015-g1309d4e #36
kernel:
Call Trace:
 [<ffffffff802324a3>] warn_on_slowpath+0x58/0x6b
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff8039a269>] ? ide_dma_intr+0x0/0x8f
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8046482e>] mutex_lock_nested+0xc0/0x2a3
 [<ffffffff88133f3f>] ? :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff88133f3f>] :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff88118f83>] :videodev:__video_do_ioctl+0x2a6e/0x2e25
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff80220d2d>] ? kernel_map_pages+0x130/0x13b
 [<ffffffff8810103c>] :v4l1_compat:v4l_compat_translate_ioctl+0xea9/0x1af5
 [<ffffffff88116515>] ? :videodev:__video_do_ioctl+0x0/0x2e25
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff802afb2e>] ? __find_get_block+0x171/0x183
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff8026895f>] ? mempool_alloc_slab+0x11/0x13
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8020b9c3>] ? restore_args+0x0/0x3d
 [<ffffffff8031bbe7>] ? __delay+0x33/0x4f
last message repeated 2 times
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff80464740>] ? __mutex_unlock_slowpath+0xf9/0x11c
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8811664e>] :videodev:__video_do_ioctl+0x139/0x2e25
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff881196b1>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8046668b>] ? _spin_unlock_irqrestore+0x3f/0x68
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff8029b22e>] vfs_ioctl+0x5e/0x77
 [<ffffffff8029b4a2>] do_vfs_ioctl+0x25b/0x270
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff8029b4f9>] sys_ioctl+0x42/0x65
 [<ffffffff8020b36b>] system_call_after_swapgs+0x7b/0x80
kernel:
---[ end trace bb0fc13470ac3add ]---
BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<ffffffff8031f5d4>] __list_add+0x2e/0x5b
PGD 68e90067 PUD 6833a067 PMD 0
Oops: 0000 [1] PREEMPT SMP DEBUG_PAGEALLOC
CPU 1
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs dm_mod thermal 
processor fan container button pcspkr snd_pcm_oss snd_mixer_oss tuner 
snd_emu10k1 tea5767 tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi 
mt20xx snd_ac97_codec tea5761 ac97_bus snd_pcm bttv snd_seq_device snd_timer 
firewire_ohci videodev snd_page_alloc firewire_core v4l1_compat snd_util_mem 
uhci_hcd ehci_hcd ir_common snd_hwdep ide_cd_mod compat_ioctl32 crc_itu_t 
usbcore snd sr_mod v4l2_common ohci1394 videobuf_dma_sg cdrom ieee1394 
i2c_viapro videobuf_core emu10k1_gp tg3 btcx_risc gameport soundcore tveeprom 
sg evdev
Pid: 4563, comm: radio Not tainted 2.6.25-rc2-00015-g1309d4e #36
RIP: 0010:[<ffffffff8031f5d4>]  [<ffffffff8031f5d4>] __list_add+0x2e/0x5b
RSP: 0018:ffff81005231d5b8  EFLAGS: 00010046
RAX: 0000000000000000 RBX: ffffffffffffffff RCX: 0000000000000000
RDX: ffff81007f2bc378 RSI: ffff81007f2bc378 RDI: ffff81005231d5d8
RBP: ffff81005231d5b8 R08: 0000000000000000 R09: 0000000000000001
R10: ffff81005231d2d8 R11: 0000000000007420 R12: ffff81007f2bc338
R13: 0000000000000246 R14: ffff81007f2bc3a0 R15: ffff81005da847c0
FS:  00007f3c348aa6f0(0000) GS:ffff81007f0554c8(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000075c6e000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process radio (pid: 4563, threadinfo ffff81005231c000, task ffff81005da847c0)
Stack:  ffff81005231d638 ffffffff8046487f ffffffff88133f3f 000000005da84808
 ffff81005231d5d8 ffff81005231d5d8 1111111111111111 ffff81007f2bc338
 ffff81005231d5d8 ffff81006002d000 ffff81005231d6e8 ffff81005231daa8
Call Trace:
 [<ffffffff8046487f>] mutex_lock_nested+0x111/0x2a3
 [<ffffffff88133f3f>] ? :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff88133f3f>] :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff88118f83>] :videodev:__video_do_ioctl+0x2a6e/0x2e25
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff80220d2d>] ? kernel_map_pages+0x130/0x13b
 [<ffffffff8810103c>] :v4l1_compat:v4l_compat_translate_ioctl+0xea9/0x1af5
 [<ffffffff88116515>] ? :videodev:__video_do_ioctl+0x0/0x2e25
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff802afb2e>] ? __find_get_block+0x171/0x183
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff8026895f>] ? mempool_alloc_slab+0x11/0x13
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8020b9c3>] ? restore_args+0x0/0x3d
 [<ffffffff8031bbe7>] ? __delay+0x33/0x4f
last message repeated 2 times
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff80464740>] ? __mutex_unlock_slowpath+0xf9/0x11c
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8811664e>] :videodev:__video_do_ioctl+0x139/0x2e25
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff881196b1>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8046668b>] ? _spin_unlock_irqrestore+0x3f/0x68
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff8029b22e>] vfs_ioctl+0x5e/0x77
 [<ffffffff8029b4a2>] do_vfs_ioctl+0x25b/0x270
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff8029b4f9>] sys_ioctl+0x42/0x65
 [<ffffffff8020b36b>] system_call_after_swapgs+0x7b/0x80
kernel:
kernel:
Code: 42 08 49 89 f0 48 89 d6 48 89 e5 4c 39 c0 74 1b 48 89 d1 4c 89 c6 48 89 
c2 48 c7 c7 b4 ed 54 80 31 c0 e8 6d 3d f1 ff 0f 0b eb fe <48> 8b 10 48 39 f2 
74 15 48 89 c1 48 c7 c7 04 ee 54 80 31 c0 e8
RIP  [<ffffffff8031f5d4>] __list_add+0x2e/0x5b
 RSP <ffff81005231d5b8>
CR2: 0000000000000000
---[ end trace bb0fc13470ac3add ]---

BUG: sleeping function called from invalid context 
at /home/bongani/kernel/git/linux-2.6/kernel/rwsem.c:21
in_atomic():0, irqs_disabled():1
INFO: lockdep is turned off.
irq event stamp: 7544
hardirqs last  enabled at (7543): [<ffffffff804659dd>] 
trace_hardirqs_on_thunk+0x35/0x3a
hardirqs last disabled at (7544): [<ffffffff804647ea>] 
mutex_lock_nested+0x7c/0x2a3
softirqs last  enabled at (7516): [<ffffffff802377c7>] __do_softirq+0xbf/0xc8
softirqs last disabled at (7511): [<ffffffff8020c65c>] call_softirq+0x1c/0x28
Pid: 4563, comm: radio Tainted: G      D  2.6.25-rc2-00015-g1309d4e #36
kernel:
Call Trace:
 [<ffffffff8024e6bf>] ? print_irqtrace_events+0x110/0x114
 [<ffffffff80229c52>] __might_sleep+0xda/0xdc
 [<ffffffff80464ecf>] down_read+0x20/0x68
 [<ffffffff802604ed>] acct_collect+0x42/0x1a9
 [<ffffffff80235bfe>] do_exit+0x20a/0x6f3
 [<ffffffff8036be33>] ? do_unblank_screen+0x29/0x125
 [<ffffffff80466eae>] oops_begin+0x0/0x95
 [<ffffffff80468d15>] do_page_fault+0x708/0x7bf
 [<ffffffff804669ad>] error_exit+0x0/0xa9
 [<ffffffff8031f5d4>] ? __list_add+0x2e/0x5b
 [<ffffffff8046487f>] ? mutex_lock_nested+0x111/0x2a3
 [<ffffffff88133f3f>] ? :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff88133f3f>] ? :bttv:radio_g_tuner+0x42/0xa8
 [<ffffffff88118f83>] ? :videodev:__video_do_ioctl+0x2a6e/0x2e25
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff80220d2d>] ? kernel_map_pages+0x130/0x13b
 [<ffffffff8810103c>] ? :v4l1_compat:v4l_compat_translate_ioctl+0xea9/0x1af5
 [<ffffffff88116515>] ? :videodev:__video_do_ioctl+0x0/0x2e25
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff802afb2e>] ? __find_get_block+0x171/0x183
 [<ffffffff802203de>] ? virt_to_highmap+0x9/0x18
 [<ffffffff80220566>] ? __change_page_attr+0x179/0x697
 [<ffffffff80220af0>] ? __change_page_attr_set_clr+0x6c/0xc0
 [<ffffffff8026895f>] ? mempool_alloc_slab+0x11/0x13
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8020b9c3>] ? restore_args+0x0/0x3d
 [<ffffffff8031bbe7>] ? __delay+0x33/0x4f
last message repeated 2 times
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff80250dfb>] ? mark_held_locks+0x59/0x75
 [<ffffffff80464740>] ? __mutex_unlock_slowpath+0xf9/0x11c
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb31>] ? get_lock_stats+0x16/0x49
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8811664e>] ? :videodev:__video_do_ioctl+0x139/0x2e25
 [<ffffffff802520d7>] ? __lock_acquire+0xc93/0xcb4
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff8024eb72>] ? put_lock_stats+0xe/0x27
 [<ffffffff8024ebe1>] ? lock_release_holdtime+0x56/0x5e
 [<ffffffff80211799>] ? native_sched_clock+0x4d/0x6c
 [<ffffffff881196b1>] ? :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8046668b>] ? _spin_unlock_irqrestore+0x3f/0x68
 [<ffffffff80250fa5>] ? trace_hardirqs_on+0xf9/0x124
 [<ffffffff8029b22e>] ? vfs_ioctl+0x5e/0x77
 [<ffffffff8029b4a2>] ? do_vfs_ioctl+0x25b/0x270
 [<ffffffff804659dd>] ? trace_hardirqs_on_thunk+0x35/0x3a
 [<ffffffff8029b4f9>] ? sys_ioctl+0x42/0x65
 [<ffffffff8020b36b>] ? system_call_after_swapgs+0x7b/0x80


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-19 14:16       ` Mauro Carvalho Chehab
  2008-02-19 20:37         ` Bongani Hlope
@ 2008-02-26 15:41         ` Robert Fitzsimons
  2008-02-27  1:42           ` Robert Fitzsimons
  1 sibling, 1 reply; 23+ messages in thread
From: Robert Fitzsimons @ 2008-02-26 15:41 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Bongani Hlope, video4linux-list, linux-kernel

> Bisecting this won't be that easy. The support for the depreciated V4L1 API
> were removed from bttv driver. Now, it uses v4l1-compat module, that translates
> a V4L1 call into a V4L2 one. I'll try to seek for troubles at the current code.

I think I might have seen this problem but it didn't cause a oops for
me, just that the radio program would hang waiting for the ioctl syscall
to return.  I did tried looking for a new radio program that used the
V4L2 API but couldn't find one.  I'll have a more in-depth look at the
bttv driver when I get home tonight.

Robert


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-26 15:41         ` Robert Fitzsimons
@ 2008-02-27  1:42           ` Robert Fitzsimons
  2008-02-27  1:44             ` [PATCH] bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls Robert Fitzsimons
                               ` (2 more replies)
  0 siblings, 3 replies; 23+ messages in thread
From: Robert Fitzsimons @ 2008-02-27  1:42 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Bongani Hlope, video4linux-list, linux-kernel

> I think I might have seen this problem but it didn't cause a oops for
> me,

Ok, I found the cause of the oops.  Some of radio tuner code was
expecting a struct bttv_fh to be allocated but this wasn't done in
radio_open.  So it would dereference an invalid data structure, causing
a hang for me and an oops for Bongani.  I also had to add support for
the radio tuner to some shared functions.  Patches to follow.

Robert


^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH] bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls.
  2008-02-27  1:42           ` Robert Fitzsimons
@ 2008-02-27  1:44             ` Robert Fitzsimons
  2008-02-27  1:47             ` [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh Robert Fitzsimons
  2008-03-17 21:51             ` 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
  2 siblings, 0 replies; 23+ messages in thread
From: Robert Fitzsimons @ 2008-02-27  1:44 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Bongani Hlope, video4linux-list, linux-kernel

Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
---
 drivers/media/video/bt8xx/bttv-driver.c |    5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 5404fcc..817a961 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -1990,7 +1990,7 @@ static int bttv_g_frequency(struct file *file, void *priv,
 	if (0 != err)
 		return err;
 
-	f->type = V4L2_TUNER_ANALOG_TV;
+	f->type = btv->radio_user ? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV;
 	f->frequency = btv->freq;
 
 	return 0;
@@ -2009,7 +2009,8 @@ static int bttv_s_frequency(struct file *file, void *priv,
 
 	if (unlikely(f->tuner != 0))
 		return -EINVAL;
-	if (unlikely(f->type != V4L2_TUNER_ANALOG_TV))
+	if (unlikely(f->type != (btv->radio_user
+		? V4L2_TUNER_RADIO : V4L2_TUNER_ANALOG_TV)))
 		return -EINVAL;
 	mutex_lock(&btv->lock);
 	btv->freq = f->frequency;
-- 
1.5.4.34.g053d9


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh.
  2008-02-27  1:42           ` Robert Fitzsimons
  2008-02-27  1:44             ` [PATCH] bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls Robert Fitzsimons
@ 2008-02-27  1:47             ` Robert Fitzsimons
  2008-02-27  9:52               ` Mauro Carvalho Chehab
  2008-02-27 21:45               ` Bongani Hlope
  2008-03-17 21:51             ` 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
  2 siblings, 2 replies; 23+ messages in thread
From: Robert Fitzsimons @ 2008-02-27  1:47 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Bongani Hlope, video4linux-list, linux-kernel

A number of the radio tuner ioctl functions are shared with the TV
tuner, these functions require a struct bttv_fh data structure to be
allocated and initialized.

Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
---
 drivers/media/video/bt8xx/bttv-driver.c |   21 ++++++++++++++++-----
 1 files changed, 16 insertions(+), 5 deletions(-)


Mauro, the radio_open function may want to do more initialisation then
the amount I copied from bttv_open.


diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 817a961..04a8263 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3417,6 +3417,7 @@ static int radio_open(struct inode *inode, struct file *file)
 {
 	int minor = iminor(inode);
 	struct bttv *btv = NULL;
+	struct bttv_fh *fh;
 	unsigned int i;
 
 	dprintk("bttv: open minor=%d\n",minor);
@@ -3431,12 +3432,19 @@ static int radio_open(struct inode *inode, struct file *file)
 		return -ENODEV;
 
 	dprintk("bttv%d: open called (radio)\n",btv->c.nr);
+
+	/* allocate per filehandle data */
+	fh = kmalloc(sizeof(*fh),GFP_KERNEL);
+	if (NULL == fh)
+		return -ENOMEM;
+	file->private_data = fh;
+	*fh = btv->init;
+	v4l2_prio_open(&btv->prio,&fh->prio);
+
 	mutex_lock(&btv->lock);
 
 	btv->radio_user++;
 
-	file->private_data = btv;
-
 	bttv_call_i2c_clients(btv,AUDC_SET_RADIO,NULL);
 	audio_input(btv,TVAUDIO_INPUT_RADIO);
 
@@ -3446,7 +3454,8 @@ static int radio_open(struct inode *inode, struct file *file)
 
 static int radio_release(struct inode *inode, struct file *file)
 {
-	struct bttv *btv = file->private_data;
+	struct bttv_fh *fh = file->private_data;
+	struct bttv *btv = fh->btv;
 	struct rds_command cmd;
 
 	btv->radio_user--;
@@ -3571,7 +3580,8 @@ static int radio_g_input(struct file *filp, void *priv, unsigned int *i)
 static ssize_t radio_read(struct file *file, char __user *data,
 			 size_t count, loff_t *ppos)
 {
-	struct bttv    *btv = file->private_data;
+	struct bttv_fh *fh = file->private_data;
+	struct bttv *btv = fh->btv;
 	struct rds_command cmd;
 	cmd.block_count = count/3;
 	cmd.buffer = data;
@@ -3585,7 +3595,8 @@ static ssize_t radio_read(struct file *file, char __user *data,
 
 static unsigned int radio_poll(struct file *file, poll_table *wait)
 {
-	struct bttv    *btv = file->private_data;
+	struct bttv_fh *fh = file->private_data;
+	struct bttv *btv = fh->btv;
 	struct rds_command cmd;
 	cmd.instance = file;
 	cmd.event_list = wait;
-- 
1.5.4.34.g053d9


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh.
  2008-02-27  1:47             ` [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh Robert Fitzsimons
@ 2008-02-27  9:52               ` Mauro Carvalho Chehab
  2008-02-27 21:45               ` Bongani Hlope
  1 sibling, 0 replies; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-02-27  9:52 UTC (permalink / raw)
  To: Robert Fitzsimons; +Cc: Bongani Hlope, video4linux-list, linux-kernel

On Wed, 27 Feb 2008 01:47:29 +0000
Robert Fitzsimons <robfitz@273k.net> wrote:

> A number of the radio tuner ioctl functions are shared with the TV
> tuner, these functions require a struct bttv_fh data structure to be
> allocated and initialized.
> 
> Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
> ---
>  drivers/media/video/bt8xx/bttv-driver.c |   21 ++++++++++++++++-----
>  1 files changed, 16 insertions(+), 5 deletions(-)
> 
> 
> Mauro, the radio_open function may want to do more initialisation then
> the amount I copied from bttv_open.

Maybe, but the proper way would be to use just one open for both radio and
video, like cx88. This driver violates V4L2 API, since the spec says that
opening /dev/radio will select radio, by default, but it is possible to listen
video also on that interface (the opposite is valid also for /dev/video).

I'll apply the fixes, for now. The better would be if you could try to use the
same approach present on cx88.

Cheers,
Mauro

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh.
  2008-02-27  1:47             ` [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh Robert Fitzsimons
  2008-02-27  9:52               ` Mauro Carvalho Chehab
@ 2008-02-27 21:45               ` Bongani Hlope
  2008-02-28  9:25                 ` Robert Fitzsimons
  1 sibling, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-02-27 21:45 UTC (permalink / raw)
  To: Robert Fitzsimons; +Cc: Mauro Carvalho Chehab, video4linux-list, linux-kernel

On Wednesday 27 February 2008 03:47:29 Robert Fitzsimons wrote:
> A number of the radio tuner ioctl functions are shared with the TV
> tuner, these functions require a struct bttv_fh data structure to be
> allocated and initialized.
>
> Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
> ---
>  drivers/media/video/bt8xx/bttv-driver.c |   21 ++++++++++++++++-----
>  1 files changed, 16 insertions(+), 5 deletions(-)
> 
> 
> Mauro, the radio_open function may want to do more initialisation then
> the amount I copied from bttv_open.

Thanx Robert

I have applied both your patches and my radio works, but my TV doesn't work 
anymore (no picture or sound). But when I exit the radio program I get this 
oops:


BUG: unable to handle kernel NULL pointer dereference at 0000000000000010
IP: [<ffffffff8030cd72>] kref_get+0xc/0x29
PGD 72230067 PUD 6dbd1067 PMD 0
Oops: 0000 [1] PREEMPT SMP
CPU 1
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs thermal processor fan 
container button pcspkr snd_pcm_oss snd_mixer_oss snd_emu10k1 tuner tea5767 
tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi mt20xx snd_ac97_codec 
tea5761 bttv ac97_bus snd_pcm ir_common snd_seq_device firewire_ohci 
compat_ioctl32 snd_timer firewire_core videodev snd_page_alloc v4l1_compat 
uhci_hcd snd_util_mem ehci_hcd crc_itu_t v4l2_common snd_hwdep 
videobuf_dma_sg ohci1394 usbcore sr_mod ide_cd_mod snd videobuf_core ieee1394 
emu10k1_gp tg3 cdrom btcx_risc sg i2c_viapro gameport tveeprom evdev 
soundcore
Pid: 4319, comm: radio Not tainted 2.6.25-rc3-dirty #42
RIP: 0010:[<ffffffff8030cd72>]  [<ffffffff8030cd72>] kref_get+0xc/0x29
RSP: 0018:ffff810065211db8  EFLAGS: 00010296
RAX: ffff81006d815880 RBX: 0000000000000010 RCX: 0000000000000000
RDX: 0000000000000000 RSI: ffff810065211e28 RDI: 0000000000000010
RBP: ffff810065211dc8 R08: 0000000000000000 R09: 0000001000000000
R10: 0000000000000000 R11: 0000000000000246 R12: ffff810065211e28
R13: 0000000000000000 R14: 0000000000000000 R15: fffffffffffffff8
FS:  00007fe0f915f6f0(0000) GS:ffff81007fb89dc0(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000010 CR3: 0000000063e8f000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process radio (pid: 4319, threadinfo ffff810065210000, task ffff810068e534e0)
Stack:  ffff810065211ea8 0000000000000000 ffff810065211e08 ffffffff8044b362
 ffff810063dc0440 ffff810065211e28 0000000000000000 ffffffff803c0b75
 ffff810065211e78 ffff81007fb55580 ffff810065211e18 ffffffff8037be03
Call Trace:
 [<ffffffff8044b362>] klist_next+0x5d/0x8a
 [<ffffffff803c0b75>] ? i2c_cmd+0x0/0x3b
 [<ffffffff8037be03>] next_device+0x9/0x19
 [<ffffffff8037be4a>] device_for_each_child+0x37/0x5c
 [<ffffffff803bf371>] i2c_clients_command+0x23/0x25
 [<ffffffff88149b2a>] :bttv:bttv_call_i2c_clients+0x16/0x18
 [<ffffffff88142bf3>] :bttv:radio_release+0x23/0x27
 [<ffffffff802862dd>] __fput+0xac/0x16c
 [<ffffffff80286547>] fput+0x14/0x16
 [<ffffffff802838e7>] filp_close+0x66/0x71
 [<ffffffff80284d1c>] sys_close+0x8e/0xd1
 [<ffffffff8020b34b>] system_call_after_swapgs+0x7b/0x80


Code: ff f0 ff 0b 0f 94 c0 31 d2 84 c0 74 0b 48 89 df 41 ff d4 ba 01 00 00 00 
5b 41 5c c9 89 d0 c3 55 48 89 e5 53 48 89 fb 48 83 ec 08 <83> 3f 00 75 11 be 
2b 00 00 00 48 c7 c7 46 b9 53 80 e8 d7 33 f2
RIP  [<ffffffff8030cd72>] kref_get+0xc/0x29
 RSP <ffff810065211db8>
CR2: 0000000000000010
---[ end trace 7ada9aa1e484b38f ]---


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh.
  2008-02-27 21:45               ` Bongani Hlope
@ 2008-02-28  9:25                 ` Robert Fitzsimons
  0 siblings, 0 replies; 23+ messages in thread
From: Robert Fitzsimons @ 2008-02-28  9:25 UTC (permalink / raw)
  To: Bongani Hlope
  Cc: Robert Fitzsimons, Mauro Carvalho Chehab, video4linux-list, linux-kernel

> I have applied both your patches and my radio works, but my TV doesn't work 
> anymore (no picture or sound). But when I exit the radio program I get this 
> oops:

I've had a quick look and nothing stands out as the cause of the oops,
but I did notice that I introduced a small memory leak.  Over the next
day or so I'll have a look at Mauro's suggestion of combining the opens
like the cx88 driver.

Robert


^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-02-27  1:42           ` Robert Fitzsimons
  2008-02-27  1:44             ` [PATCH] bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls Robert Fitzsimons
  2008-02-27  1:47             ` [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh Robert Fitzsimons
@ 2008-03-17 21:51             ` Bongani Hlope
  2008-03-20 17:22               ` Mauro Carvalho Chehab
  2 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-03-17 21:51 UTC (permalink / raw)
  To: Robert Fitzsimons; +Cc: Mauro Carvalho Chehab, video4linux-list, linux-kernel

On Wednesday 27 February 2008 03:42:38 Robert Fitzsimons wrote:
> > I think I might have seen this problem but it didn't cause a oops for
> > me,
>
> Ok, I found the cause of the oops.  Some of radio tuner code was
> expecting a struct bttv_fh to be allocated but this wasn't done in
> radio_open.  So it would dereference an invalid data structure, causing
> a hang for me and an oops for Bongani.  I also had to add support for
> the radio tuner to some shared functions.  Patches to follow.
>
> Robert

More info... 

The Oops seems to be caused by a size mismatch that causes memset to write 
over other variables in the stack... The following debug hack moved oops to 
another point in the v4l1-compact code..

So memset(&tun2,0,sizeof(tun2))  seems to be overwriting btv->lock->wait_list:

--- drivers/media/video/v4l1-compat.c~  2007-11-13 10:25:52.000000000 +0200
+++ drivers/media/video/v4l1-compat.c   2008-03-17 23:17:38.000000000 +0200
@@ -688,7 +688,7 @@
        {
                struct video_tuner      *tun = arg;

-               memset(&tun2,0,sizeof(tun2));
+               memset(&tun2,-1,sizeof(tun2));
                err = drv(inode, file, VIDIOC_G_TUNER, &tun2);
                if (err < 0) {
                        dprintk("VIDIOCGTUNER / VIDIOC_G_TUNER: %d\n",err);

The new oops, where there's another memset(&tun2,0,sizeof(tun2)):

BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
IP: [<ffffffff8045a329>] __mutex_lock_slowpath+0x3b/0xb2
PGD 699d9067 PUD 65837067 PMD 0
Oops: 0002 [1] PREEMPT SMP
CPU 1
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs thermal processor fan 
container button pcspkr snd_pcm_oss snd_mixer_oss snd_emu10k1 tuner tea5767 
tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi mt20xx snd_ac97_codec 
tea5761 bttv ac97_bus snd_pcm ir_common firewire_ohci snd_seq_device 
compat_ioctl32 firewire_core snd_timer uhci_hcd videodev ehci_hcd 
snd_page_alloc v4l1_compat crc_itu_t snd_util_mem usbcore v4l2_common 
snd_hwdep videobuf_dma_sg ohci1394 ide_cd_mod snd videobuf_core emu10k1_gp 
ieee1394 sr_mod btcx_risc evdev gameport i2c_viapro tveeprom cdrom sg tg3 
soundcore
Pid: 4230, comm: radio Not tainted 2.6.25-rc5-dirty #46
RIP: 0010:[<ffffffff8045a329>]  [<ffffffff8045a329>] 
__mutex_lock_slowpath+0x3b/0xb2
RSP: 0018:ffff8100658455e8  EFLAGS: 00010246
RAX: ffff81007fbeff10 RBX: ffff81007fbeff08 RCX: 0000000000000000
RDX: ffff8100658455e8 RSI: ffffffff8816711c RDI: ffff81007fbeff0c
RBP: ffff810065845628 R08: ffffffff880e98df R09: 0000000000000002
R10: ffff810065845f38 R11: 0000000000000246 R12: ffff81007fbeff0c
R13: 0000000000000000 R14: ffff8100699d0d10 R15: ffffffff88167110
FS:  00007f0c740e46f0(0000) GS:ffff81007fb6adc0(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000000 CR3: 0000000065835000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process radio (pid: 4230, threadinfo ffff810065844000, task ffff8100699d0d10)
Stack:  ffff81007fbeff10 ffff810065845774 0000000265845688 ffff810065845768
 ffff81007fbef800 ffff810065845c68 0000000000000000 ffff81007fbeff08
 ffff810065845638 ffffffff8045a16f ffff810065845668 ffffffff8814692f
Call Trace:
 [<ffffffff8045a16f>] mutex_lock+0xe/0x10
 [<ffffffff8814692f>] :bttv:bttv_s_frequency+0x46/0x9f
 [<ffffffff880ec583>] :videodev:__video_do_ioctl+0x2ca4/0x2e16
 [<ffffffff8022b6fe>] ? hrtick_set+0xdf/0xe8
 [<ffffffff8020a003>] ? default_idle+0x0/0x5f
 [<ffffffff80459c51>] ? thread_return+0x6c/0xbf
 [<ffffffff880d52a9>] :v4l1_compat:v4l_compat_translate_ioctl+0x1116/0x1b01
 [<ffffffff802ff5bb>] ? generic_unplug_device+0x2c/0x30
 [<ffffffff880e98df>] ? :videodev:__video_do_ioctl+0x0/0x2e16
 [<ffffffff80266946>] ? mark_page_accessed+0x20/0x36
 [<ffffffff802a57af>] ? __find_get_block+0x153/0x165
 [<ffffffff802a57e1>] ? __getblk+0x20/0x22b
 [<ffffffff803021ff>] ? blk_recount_segments+0x3e/0x68
 [<ffffffff80260795>] ? mempool_alloc+0x48/0xf9
 [<ffffffff8028073b>] ? cache_alloc_refill+0x1cc/0x233
 [<ffffffff80302a5a>] ? blk_rq_map_sg+0x12b/0x24b
 [<ffffffff80238971>] ? lock_timer_base+0x26/0x4a
 [<ffffffff8038df34>] ? dma_timer_expiry+0x0/0x6d
 [<ffffffff80238b1c>] ? __mod_timer+0xc4/0xd6
 [<ffffffff80311a3b>] ? __delay+0x27/0x59
 [<ffffffff80311a3b>] ? __delay+0x27/0x59
 [<ffffffff80311a3b>] ? __delay+0x27/0x59
 [<ffffffff80311a3b>] ? __delay+0x27/0x59
 [<ffffffff80311a3b>] ? __delay+0x27/0x59
 [<ffffffff80311aef>] ? __udelay+0x40/0x42
 [<ffffffff803c1ba4>] ? i2c_stop+0x47/0x4b
 [<ffffffff803c236b>] ? bit_xfer+0x412/0x423
 [<ffffffff803c01ed>] ? i2c_transfer+0x79/0x85
 [<ffffffff881a3318>] ? :tuner_simple:simple_set_params+0x2b9/0xc18
 [<ffffffff8022589b>] ? enqueue_task_fair+0x179/0x186
 [<ffffffff80227ff2>] ? task_rq_lock+0x3d/0x73
 [<ffffffff802284b9>] ? try_to_wake_up+0x1ae/0x1bf
 [<ffffffff8021a49d>] ? smp_send_reschedule+0x1d/0x1f
 [<ffffffff802284d7>] ? default_wake_function+0xd/0xf
 [<ffffffff802246cc>] ? __wake_up_common+0x46/0x75
 [<ffffffff880e9a18>] :videodev:__video_do_ioctl+0x139/0x2e16
 [<ffffffff80357b8c>] ? n_tty_receive_buf+0xf18/0xf77
 [<ffffffff80260449>] ? filemap_fault+0x1fe/0x371
 [<ffffffff880eca95>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff802426de>] ? remove_wait_queue+0x3c/0x41
 [<ffffffff80226ea2>] ? __wake_up+0x43/0x4f
 [<ffffffff80291252>] vfs_ioctl+0x5e/0x77
 [<ffffffff802914b8>] do_vfs_ioctl+0x24d/0x262
 [<ffffffff8029150f>] sys_ioctl+0x42/0x67
 [<ffffffff802862af>] ? sys_write+0x47/0x70
 [<ffffffff8020b32b>] system_call_after_swapgs+0x7b/0x80


Code: 89 fb 4c 89 e7 48 83 ec 20 65 4c 8b 34 25 00 00 00 00 e8 e5 0f 00 00 48 
8d 43 08 48 8d 55 c0 48 8b 48 08 48 89 45 c0 48 89 50 08 <48> 89 11 48 83 ca 
ff 48 89 4d c8 4c 89 75 d0 48 89 d0 87 03 ff
RIP  [<ffffffff8045a329>] __mutex_lock_slowpath+0x3b/0xb2
 RSP <ffff8100658455e8>
CR2: 0000000000000000
---[ end trace 821f8e64b81db17b ]---





^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-03-17 21:51             ` 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
@ 2008-03-20 17:22               ` Mauro Carvalho Chehab
  2008-03-21 14:55                 ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-03-20 17:22 UTC (permalink / raw)
  To: Bongani Hlope; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

On Mon, 17 Mar 2008 23:51:56 +0200
Bongani Hlope <bonganilinux@mweb.co.za> wrote:

> On Wednesday 27 February 2008 03:42:38 Robert Fitzsimons wrote:
> > > I think I might have seen this problem but it didn't cause a oops for
> > > me,
> >
> > Ok, I found the cause of the oops.  Some of radio tuner code was
> > expecting a struct bttv_fh to be allocated but this wasn't done in
> > radio_open.  So it would dereference an invalid data structure, causing
> > a hang for me and an oops for Bongani.  I also had to add support for
> > the radio tuner to some shared functions.  Patches to follow.
> >
> > Robert
> 
> More info... 
> 
> The Oops seems to be caused by a size mismatch that causes memset to write 
> over other variables in the stack... The following debug hack moved oops to 
> another point in the v4l1-compact code..
> 
> So memset(&tun2,0,sizeof(tun2))  seems to be overwriting btv->lock->wait_list:
> 
> --- drivers/media/video/v4l1-compat.c~  2007-11-13 10:25:52.000000000 +0200
> +++ drivers/media/video/v4l1-compat.c   2008-03-17 23:17:38.000000000 +0200
> @@ -688,7 +688,7 @@
>         {
>                 struct video_tuner      *tun = arg;
> 
> -               memset(&tun2,0,sizeof(tun2));
> +               memset(&tun2,-1,sizeof(tun2));
>                 err = drv(inode, file, VIDIOC_G_TUNER, &tun2);
>                 if (err < 0) {
>                         dprintk("VIDIOCGTUNER / VIDIOC_G_TUNER: %d\n",err);
> 
> The new oops, where there's another memset(&tun2,0,sizeof(tun2)):
> 
> BUG: unable to handle kernel NULL pointer dereference at 0000000000000000
> IP: [<ffffffff8045a329>] __mutex_lock_slowpath+0x3b/0xb2
> PGD 699d9067 PUD 65837067 PMD 0
> Oops: 0002 [1] PREEMPT SMP
> CPU 1
> Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
> binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs thermal processor fan 
> container button pcspkr snd_pcm_oss snd_mixer_oss snd_emu10k1 tuner tea5767 
> tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi mt20xx snd_ac97_codec 
> tea5761 bttv ac97_bus snd_pcm ir_common firewire_ohci snd_seq_device 
> compat_ioctl32 firewire_core snd_timer uhci_hcd videodev ehci_hcd 
> snd_page_alloc v4l1_compat crc_itu_t snd_util_mem usbcore v4l2_common 
> snd_hwdep videobuf_dma_sg ohci1394 ide_cd_mod snd videobuf_core emu10k1_gp 
> ieee1394 sr_mod btcx_risc evdev gameport i2c_viapro tveeprom cdrom sg tg3 
> soundcore
> Pid: 4230, comm: radio Not tainted 2.6.25-rc5-dirty #46
> RIP: 0010:[<ffffffff8045a329>]  [<ffffffff8045a329>] 
> __mutex_lock_slowpath+0x3b/0xb2
> RSP: 0018:ffff8100658455e8  EFLAGS: 00010246
> RAX: ffff81007fbeff10 RBX: ffff81007fbeff08 RCX: 0000000000000000
> RDX: ffff8100658455e8 RSI: ffffffff8816711c RDI: ffff81007fbeff0c
> RBP: ffff810065845628 R08: ffffffff880e98df R09: 0000000000000002
> R10: ffff810065845f38 R11: 0000000000000246 R12: ffff81007fbeff0c
> R13: 0000000000000000 R14: ffff8100699d0d10 R15: ffffffff88167110
> FS:  00007f0c740e46f0(0000) GS:ffff81007fb6adc0(0000) knlGS:0000000000000000
> CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000000 CR3: 0000000065835000 CR4: 00000000000006e0
> DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
> Process radio (pid: 4230, threadinfo ffff810065844000, task ffff8100699d0d10)
> Stack:  ffff81007fbeff10 ffff810065845774 0000000265845688 ffff810065845768
>  ffff81007fbef800 ffff810065845c68 0000000000000000 ffff81007fbeff08
>  ffff810065845638 ffffffff8045a16f ffff810065845668 ffffffff8814692f
> Call Trace:
>  [<ffffffff8045a16f>] mutex_lock+0xe/0x10
>  [<ffffffff8814692f>] :bttv:bttv_s_frequency+0x46/0x9f
>  [<ffffffff880ec583>] :videodev:__video_do_ioctl+0x2ca4/0x2e16
>  [<ffffffff8022b6fe>] ? hrtick_set+0xdf/0xe8
>  [<ffffffff8020a003>] ? default_idle+0x0/0x5f
>  [<ffffffff80459c51>] ? thread_return+0x6c/0xbf
>  [<ffffffff880d52a9>] :v4l1_compat:v4l_compat_translate_ioctl+0x1116/0x1b01
>  [<ffffffff802ff5bb>] ? generic_unplug_device+0x2c/0x30
>  [<ffffffff880e98df>] ? :videodev:__video_do_ioctl+0x0/0x2e16
>  [<ffffffff80266946>] ? mark_page_accessed+0x20/0x36
>  [<ffffffff802a57af>] ? __find_get_block+0x153/0x165
>  [<ffffffff802a57e1>] ? __getblk+0x20/0x22b
>  [<ffffffff803021ff>] ? blk_recount_segments+0x3e/0x68
>  [<ffffffff80260795>] ? mempool_alloc+0x48/0xf9
>  [<ffffffff8028073b>] ? cache_alloc_refill+0x1cc/0x233
>  [<ffffffff80302a5a>] ? blk_rq_map_sg+0x12b/0x24b
>  [<ffffffff80238971>] ? lock_timer_base+0x26/0x4a
>  [<ffffffff8038df34>] ? dma_timer_expiry+0x0/0x6d
>  [<ffffffff80238b1c>] ? __mod_timer+0xc4/0xd6
>  [<ffffffff80311a3b>] ? __delay+0x27/0x59
>  [<ffffffff80311a3b>] ? __delay+0x27/0x59
>  [<ffffffff80311a3b>] ? __delay+0x27/0x59
>  [<ffffffff80311a3b>] ? __delay+0x27/0x59
>  [<ffffffff80311a3b>] ? __delay+0x27/0x59
>  [<ffffffff80311aef>] ? __udelay+0x40/0x42
>  [<ffffffff803c1ba4>] ? i2c_stop+0x47/0x4b
>  [<ffffffff803c236b>] ? bit_xfer+0x412/0x423
>  [<ffffffff803c01ed>] ? i2c_transfer+0x79/0x85
>  [<ffffffff881a3318>] ? :tuner_simple:simple_set_params+0x2b9/0xc18
>  [<ffffffff8022589b>] ? enqueue_task_fair+0x179/0x186
>  [<ffffffff80227ff2>] ? task_rq_lock+0x3d/0x73
>  [<ffffffff802284b9>] ? try_to_wake_up+0x1ae/0x1bf
>  [<ffffffff8021a49d>] ? smp_send_reschedule+0x1d/0x1f
>  [<ffffffff802284d7>] ? default_wake_function+0xd/0xf
>  [<ffffffff802246cc>] ? __wake_up_common+0x46/0x75
>  [<ffffffff880e9a18>] :videodev:__video_do_ioctl+0x139/0x2e16
>  [<ffffffff80357b8c>] ? n_tty_receive_buf+0xf18/0xf77
>  [<ffffffff80260449>] ? filemap_fault+0x1fe/0x371
>  [<ffffffff880eca95>] :videodev:video_ioctl2+0x1b8/0x259
>  [<ffffffff802426de>] ? remove_wait_queue+0x3c/0x41
>  [<ffffffff80226ea2>] ? __wake_up+0x43/0x4f
>  [<ffffffff80291252>] vfs_ioctl+0x5e/0x77
>  [<ffffffff802914b8>] do_vfs_ioctl+0x24d/0x262
>  [<ffffffff8029150f>] sys_ioctl+0x42/0x67
>  [<ffffffff802862af>] ? sys_write+0x47/0x70
>  [<ffffffff8020b32b>] system_call_after_swapgs+0x7b/0x80
> 
> 
> Code: 89 fb 4c 89 e7 48 83 ec 20 65 4c 8b 34 25 00 00 00 00 e8 e5 0f 00 00 48 
> 8d 43 08 48 8d 55 c0 48 8b 48 08 48 89 45 c0 48 89 50 08 <48> 89 11 48 83 ca 
> ff 48 89 4d c8 4c 89 75 d0 48 89 d0 87 03 ff
> RIP  [<ffffffff8045a329>] __mutex_lock_slowpath+0x3b/0xb2
>  RSP <ffff8100658455e8>
> CR2: 0000000000000000
> ---[ end trace 821f8e64b81db17b ]---

Could you please test this small patch?

diff -r 134d43b48b4a linux/drivers/media/video/bt8xx/bttv-driver.c
--- a/linux/drivers/media/video/bt8xx/bttv-driver.c	Tue Mar 18 23:46:37 2008 +0000
+++ b/linux/drivers/media/video/bt8xx/bttv-driver.c	Thu Mar 20 14:20:54 2008 -0300
@@ -3288,6 +3288,7 @@ static int bttv_open(struct inode *inode
 		return -ENOMEM;
 	file->private_data = fh;
 	*fh = btv->init;
+	fh->btv = btv;
 	fh->type = type;
 	fh->ov.setup_ok = 0;
 	v4l2_prio_open(&btv->prio,&fh->prio);


Cheers,
Mauro

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: 2.6.25-rc[12] Video4Linux Bttv Regression
  2008-03-20 17:22               ` Mauro Carvalho Chehab
@ 2008-03-21 14:55                 ` Bongani Hlope
  2008-03-22  0:05                   ` [PATCH] bttv: Add a radio compat_ioctl file operation Robert Fitzsimons
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-03-21 14:55 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

On Thursday 20 March 2008 19:22:12 Mauro Carvalho Chehab wrote:
> On Mon, 17 Mar 2008 23:51:56 +0200
>
8<
>
> Could you please test this small patch?
>
> diff -r 134d43b48b4a linux/drivers/media/video/bt8xx/bttv-driver.c
> --- a/linux/drivers/media/video/bt8xx/bttv-driver.c	Tue Mar 18 23:46:37
> 2008 +0000 +++ b/linux/drivers/media/video/bt8xx/bttv-driver.c	Thu Mar 20
> 14:20:54 2008 -0300 @@ -3288,6 +3288,7 @@ static int bttv_open(struct inode
> *inode
>  		return -ENOMEM;
>  	file->private_data = fh;
>  	*fh = btv->init;
> +	fh->btv = btv;
>  	fh->type = type;
>  	fh->ov.setup_ok = 0;
>  	v4l2_prio_open(&btv->prio,&fh->prio);
>
>
> Cheers,
> Mauro

Latest git with or without your patch still causes the oops..

The call trace that seems to be causing this oops is

radio
|-> ioctl(
       |->videodev.c:__video_do_ioctl
          |->v4l1-compat.c:v4l_compat_translate_ioctl
          |  case VIDIOCGTUNER: /*  get tuner information  */
          | {
          |      struct video_tuner      *tun = arg;
          |
          |      memset(&tun2,0,sizeof(tun2));
          |__ err = drv(inode, file, VIDIOC_G_TUNER, &tun2);
               |->videodev.c:__video_do_ioctl
               |   case VIDIOC_G_TUNER:
               |   {
               |      struct v4l2_tuner *p=arg;
               |     __u32 index=p->index;
               |
               |      if (!vfd->vidioc_g_tuner)
               |          break;
               |
               |     memset(p,0,sizeof(*p));
               |     p->index=index;
               |
               |     ret=vfd->vidioc_g_tuner(file, fh, p);
               |_
                  |-> bttv_driver.c:radio_g_tuner
                  |  struct bttv_fh *fh = priv;
                  |  struct bttv *btv = fh->btv;
                  |  
                  |  if (UNSET == bttv_tvcards[btv->c.type].tuner)
                  |      return -EINVAL;
                  |  if (0 != t->index)
                  |    return -EINVAL;
                  |  mutex_lock(&btv->lock); 
                  |__
                       |-> mutex.c:__mutex_lock_common 
                       |  struct task_struct *task = current;
                       |  struct mutex_waiter waiter;
                       |  unsigned int old_val;
                       |  unsigned long flags;
                       |
                       |  spin_lock_mutex(&lock->wait_lock, flags);
                       |
                       |  debug_mutex_lock_common(lock, &waiter);
                       |  mutex_acquire(&lock->dep_map, subclass, 0, ip);
                       |  debug_mutex_add_waiter(lock, &waiter, 
task_thread_info(task));
                       |
                       |        /* add waiting tasks to the end of the 
waitqueue (FIFO): */
                       | list_add_tail(&waiter.list, &lock->wait_list); 
                         ^^^^
This is where it oops because lock->wait_list->next is NULL.

BUT, changing: 
memset(&tun2,0,sizeof(tun2));
to
memset(&tun2,-1,sizeof(tun2));
in
v4l1-compat.c:v4l_compat_translate_ioctl
...
 case VIDIOCGTUNER:

changes
lock->wait_list->next from being NULL to something else, and the oops move to 
the next case statement i.e. VIDIOCGFREQ






^ permalink raw reply	[flat|nested] 23+ messages in thread

* [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-21 14:55                 ` Bongani Hlope
@ 2008-03-22  0:05                   ` Robert Fitzsimons
  2008-03-22 18:17                     ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Robert Fitzsimons @ 2008-03-22  0:05 UTC (permalink / raw)
  To: Bongani Hlope
  Cc: Mauro Carvalho Chehab, Robert Fitzsimons, video4linux-list, linux-kernel

Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
---
 drivers/media/video/bt8xx/bttv-driver.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)


Hi Bongani

I only noticed that you might be using a 32 bit userspace, so the radio
compat_ioctl needs to be implmented.

Robert



diff --git a/drivers/media/video/bt8xx/bttv-driver.c b/drivers/media/video/bt8xx/bttv-driver.c
index 5404fcc..1bdb726 100644
--- a/drivers/media/video/bt8xx/bttv-driver.c
+++ b/drivers/media/video/bt8xx/bttv-driver.c
@@ -3601,6 +3601,7 @@ static const struct file_operations radio_fops =
 	.read     = radio_read,
 	.release  = radio_release,
 	.ioctl	  = video_ioctl2,
+	.compat_ioctl	= v4l_compat_ioctl32,
 	.llseek	  = no_llseek,
 	.poll     = radio_poll,
 };
-- 
1.5.4.3.484.g60e3


^ permalink raw reply related	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-22  0:05                   ` [PATCH] bttv: Add a radio compat_ioctl file operation Robert Fitzsimons
@ 2008-03-22 18:17                     ` Bongani Hlope
  2008-03-23  1:01                       ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-03-22 18:17 UTC (permalink / raw)
  To: Robert Fitzsimons; +Cc: Mauro Carvalho Chehab, video4linux-list, linux-kernel

On Saturday 22 March 2008 02:05:57 Robert Fitzsimons wrote:
> Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
> ---
>  drivers/media/video/bt8xx/bttv-driver.c |    1 +
>  1 files changed, 1 insertions(+), 0 deletions(-)
>
>
> Hi Bongani
>
> I only noticed that you might be using a 32 bit userspace, so the radio
> compat_ioctl needs to be implmented.
>
> Robert
>
>
>
> diff --git a/drivers/media/video/bt8xx/bttv-driver.c
> b/drivers/media/video/bt8xx/bttv-driver.c index 5404fcc..1bdb726 100644
> --- a/drivers/media/video/bt8xx/bttv-driver.c
> +++ b/drivers/media/video/bt8xx/bttv-driver.c
> @@ -3601,6 +3601,7 @@ static const struct file_operations radio_fops =
>  	.read     = radio_read,
>  	.release  = radio_release,
>  	.ioctl	  = video_ioctl2,
> +	.compat_ioctl	= v4l_compat_ioctl32,
>  	.llseek	  = no_llseek,
>  	.poll     = radio_poll,
>  };

I run a 64-bit kernel and 64-bit user-space, only a chrooted version of 
mplayer and it's dependencies are 32 bit, and I don't use them that often.

file /usr/bin/radio
/usr/bin/radio: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for 
GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped

That patch doesn't help also...



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-22 18:17                     ` Bongani Hlope
@ 2008-03-23  1:01                       ` Mauro Carvalho Chehab
  2008-03-23 13:25                         ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-03-23  1:01 UTC (permalink / raw)
  To: Bongani Hlope; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

On Sat, 22 Mar 2008, Bongani Hlope wrote:

> On Saturday 22 March 2008 02:05:57 Robert Fitzsimons wrote:
>> Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
>> ---
>>  drivers/media/video/bt8xx/bttv-driver.c |    1 +
>>  1 files changed, 1 insertions(+), 0 deletions(-)
>>
>>
>> Hi Bongani
>>
>> I only noticed that you might be using a 32 bit userspace, so the radio
>> compat_ioctl needs to be implmented.
>>
>> Robert
>>
>>
>>
>> diff --git a/drivers/media/video/bt8xx/bttv-driver.c
>> b/drivers/media/video/bt8xx/bttv-driver.c index 5404fcc..1bdb726 100644
>> --- a/drivers/media/video/bt8xx/bttv-driver.c
>> +++ b/drivers/media/video/bt8xx/bttv-driver.c
>> @@ -3601,6 +3601,7 @@ static const struct file_operations radio_fops =
>>  	.read     = radio_read,
>>  	.release  = radio_release,
>>  	.ioctl	  = video_ioctl2,
>> +	.compat_ioctl	= v4l_compat_ioctl32,
>>  	.llseek	  = no_llseek,
>>  	.poll     = radio_poll,
>>  };
>
> I run a 64-bit kernel and 64-bit user-space, only a chrooted version of
> mplayer and it's dependencies are 32 bit, and I don't use them that often.
>
> file /usr/bin/radio
> /usr/bin/radio: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for
> GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped
>
> That patch doesn't help also...

Unfortunately, I coudn't reproduce your bug here.

I tested with a bttv board, plus two radio applications - radio and kradio
(radio-3.95-7mdv2008.0 and kradio-1.0-0.r497.3mdv2008.0 packages). None of 
them used V4L1 API. I also tested reading frequency, using
 	v4l-info /dev/radio0

I also used ioctl-test, running all V4L1 API calls, with this result 
(I've enabled debug on v4l1-compat, and added a small patch to bttv to use 
video_ioctl2 debug):

Linux video capture interface: v2.00
bttv: driver version 0.9.17 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt848 (rev 17) at 0000:05:06.0, irq: 16, latency: 32, mmio: 0xce000000
bttv0: using: STB, Gateway P/N 6000699 (bt848) [card=3,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00fbffff [init]
bttv0: tuner type=2
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_STREAMOFF, dir=-w (0x40045613)
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_OVERLAY, dir=-w (0x4004560e)
v4l1-compat: VIDIOCCAPTURE / VIDIOC_PREVIEW: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_AUDIO, dir=r- (0x80345621)
BT848 radio (STB, Gateway P/N 6: Get for index=0
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, capability=0, mode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=9963785, type=2, name=Mute, min/max=0/1, step=0, default=0, flags=0x00000000
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_CTRL, dir=rw (0xc008561b)
BT848 radio (STB, Gateway P/N 6: Enum for index=9963785
BT848 radio (STB, Gateway P/N 6: id=9963785, value=-32512
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw (0xc054561d)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0, audmode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCAP, dir=r- (0x80685600)
BT848 radio (STB, Gateway P/N 6: driver=bttv, card=BT848 radio (STB, Gateway P/N 6, bus=PCI:0000:05:06.0, version=0x00000911, capabilities=0x00010000
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT, dir=rw (0xc050561a)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, audioset=0, tuner=0, std=00000000, status=0
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT, dir=rw (0xc050561a)
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUM_FMT, dir=rw (0xc0405602)
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT, dir=rw (0xc050561a)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, audioset=0, tuner=0, std=00000000, status=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_STD, dir=r- (0x80085617)
BT848 radio (STB, Gateway P/N 6: value=00000000
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FBUF, dir=r- (0x8030560a)
v4l1-compat: VIDIOCGFBUF / VIDIOC_G_FBUF: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FREQUENCY, dir=rw (0xc02c5638)
BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCGPICT / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw (0xc054561d)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0, audmode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_STD, dir=r- (0x80085617)
BT848 radio (STB, Gateway P/N 6: value=00000000
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=vbi-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCGVBIFMT / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-over
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCGWIN / VIDIOC_G_WIN: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCGWIN / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCMCAPTURE / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_AUDIO, dir=-w (0x40345622)
BT848 radio (STB, Gateway P/N 6: index=0, name=, capability=0, mode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=9963785, type=2, name=Mute, min/max=0/1, step=0, default=0, flags=0x00000000
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_CTRL, dir=rw (0xc008561c)
BT848 radio (STB, Gateway P/N 6: id=9963785, value=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw (0xc054561d)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0, audmode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_TUNER, dir=-w (0x4054561e)
BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0, audmode=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_INPUT, dir=rw (0xc0045627)
BT848 radio (STB, Gateway P/N 6: value=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_STD, dir=-w (0x40085618)
BT848 radio (STB, Gateway P/N 6: value=000000ff
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FBUF, dir=-w (0x4030560b)
v4l1-compat: VIDIOCSFBUF / VIDIOC_S_FBUF: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FREQUENCY, dir=rw (0xc02c5638)
BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FREQUENCY, dir=-w (0x402c5639)
BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624)
BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCSPICT / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FBUF, dir=r- (0x8030560a)
v4l1-compat: VIDIOCSPICT / VIDIOC_G_FBUF: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_INPUT, dir=rw (0xc0045627)
BT848 radio (STB, Gateway P/N 6: value=0
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_STREAMOFF, dir=-w (0x40045613)
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
BT848 radio (STB, Gateway P/N 6: type=video-cap
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw (0xc0d05604)
v4l1-compat: VIDIOCSWIN / VIDIOC_G_FMT: -22
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FMT, dir=rw (0xc0d05605)
BT848 radio (STB, Gateway P/N 6: type=video-over
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FMT, dir=rw (0xc0d05605)
v4l1-compat: VIDIOCSWIN / VIDIOC_S_FMT #2: -22
BT848 radio (STB, Gateway P/N 6: err:
BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYBUF, dir=rw (0xc0585609)
v4l1-compat: VIDIOCSYNC / VIDIOC_QUERYBUF: -22

I got no oops. The tests were done also on a 64bit kernel, on a dual-core 
machine.

Cheers,
Mauro

---

I've patched the ioctl-test program (at v4l2-apps/test dir, on v4l/dvb 
development environment, available at http://linuxtv.org/hg/v4l-dvb) with 
this diff:

diff -r f24051885fe9 v4l2-apps/test/ioctl-test.c
--- a/v4l2-apps/test/ioctl-test.c	Tue Mar 18 18:10:06 2008 -0300
+++ b/v4l2-apps/test/ioctl-test.c	Sat Mar 22 21:52:16 2008 -0300
@@ -47,6 +47,8 @@ typedef __u32 u32;
  #else
  typedef u_int32_t u32;
  #endif
+
+#define CONFIG_VIDEO_V4L1_COMPAT

  /* All possible parameters used on v4l ioctls */
  union v4l_parms {
@@ -142,7 +144,7 @@ int ioctls[] = {
  	VIDIOCSYNC,/* int */
  #endif
  	/* V4L2 ioctls */
-
+#if 0
  	VIDIOC_CROPCAP,/* struct v4l2_cropcap */
  	VIDIOC_DQBUF,/* struct v4l2_buffer */
  	VIDIOC_ENUMAUDIO,/* struct v4l2_audio */
@@ -173,7 +175,7 @@ int ioctls[] = {
  	VIDIOC_S_OUTPUT,/* int */
  	VIDIOC_S_PARM,/* struct v4l2_streamparm */
  	VIDIOC_TRY_FMT,/* struct v4l2_format */
-
+#endif
  #if 0
  	VIDIOC_G_AUDIO_OLD,/* struct v4l2_audio */
  	VIDIOC_G_AUDOUT_OLD,/* struct v4l2_audioout */
@@ -214,7 +216,7 @@ int main (void)
  {
  	int fd=0, ret=0;
  	unsigned i;
-	char *device="/dev/video0";
+	char *device="/dev/radio0";
  	union v4l_parms p;

  	if ((fd = open(device, O_RDONLY)) < 0) {

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-23  1:01                       ` Mauro Carvalho Chehab
@ 2008-03-23 13:25                         ` Bongani Hlope
  2008-03-23 13:50                           ` Mauro Carvalho Chehab
  0 siblings, 1 reply; 23+ messages in thread
From: Bongani Hlope @ 2008-03-23 13:25 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

On Sunday 23 March 2008 03:01:42 Mauro Carvalho Chehab wrote:
> On Sat, 22 Mar 2008, Bongani Hlope wrote:
> > On Saturday 22 March 2008 02:05:57 Robert Fitzsimons wrote:
> >> Signed-off-by: Robert Fitzsimons <robfitz@273k.net>
> >> ---
> >>  drivers/media/video/bt8xx/bttv-driver.c |    1 +
> >>  1 files changed, 1 insertions(+), 0 deletions(-)
> >>
> >>
> >> Hi Bongani
> >>
> >> I only noticed that you might be using a 32 bit userspace, so the radio
> >> compat_ioctl needs to be implmented.
> >>
> >> Robert
> >>
> >>
> >>
> >> diff --git a/drivers/media/video/bt8xx/bttv-driver.c
> >> b/drivers/media/video/bt8xx/bttv-driver.c index 5404fcc..1bdb726 100644
> >> --- a/drivers/media/video/bt8xx/bttv-driver.c
> >> +++ b/drivers/media/video/bt8xx/bttv-driver.c
> >> @@ -3601,6 +3601,7 @@ static const struct file_operations radio_fops =
> >>  	.read     = radio_read,
> >>  	.release  = radio_release,
> >>  	.ioctl	  = video_ioctl2,
> >> +	.compat_ioctl	= v4l_compat_ioctl32,
> >>  	.llseek	  = no_llseek,
> >>  	.poll     = radio_poll,
> >>  };
> >
> > I run a 64-bit kernel and 64-bit user-space, only a chrooted version of
> > mplayer and it's dependencies are 32 bit, and I don't use them that
> > often.
> >
> > file /usr/bin/radio
> > /usr/bin/radio: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), for
> > GNU/Linux 2.6.9, dynamically linked (uses shared libs), stripped
> >
> > That patch doesn't help also...
>
> Unfortunately, I coudn't reproduce your bug here.
>
> I tested with a bttv board, plus two radio applications - radio and kradio
> (radio-3.95-7mdv2008.0 and kradio-1.0-0.r497.3mdv2008.0 packages). None of
> them used V4L1 API. I also tested reading frequency, using
>  	v4l-info /dev/radio0
>

rpm -qa | grep radio
radio-3.95-7mdv2008.0

strace of radio
...
munmap(0x7f9796ebc000, 168278)          = 0
open("/dev/radio", O_RDONLY)            = 3
ioctl(3, SONYPI_IOCGBAT2CAP or VIDIOCGTUNER <unfinished ...>
                                                                       ^^^^
								v4l1 API
+++ killed by SIGKILL +++
Process 5164 detached


> I also used ioctl-test, running all V4L1 API calls, with this result
> (I've enabled debug on v4l1-compat, and added a small patch to bttv to use
> video_ioctl2 debug):
>
> Linux video capture interface: v2.00
> bttv: driver version 0.9.17 loaded
> bttv: using 8 buffers with 2080k (520 pages) each for capture
> bttv: Bt8xx card found (0).
> bttv0: Bt848 (rev 17) at 0000:05:06.0, irq: 16, latency: 32, mmio:
> 0xce000000 bttv0: using: STB, Gateway P/N 6000699 (bt848) [card=3,insmod
> option] bttv0: gpio: en=00000000, out=00000000 in=00fbffff [init]
> bttv0: tuner type=2
> bttv0: i2c: checking for TDA9875 @ 0xb0... not found
> bttv0: i2c: checking for TDA7432 @ 0x8a... not found
> bttv0: registered device video0
> bttv0: registered device vbi0
> bttv0: registered device radio0
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_STREAMOFF, dir=-w
> (0x40045613) BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_OVERLAY, dir=-w
> (0x4004560e) v4l1-compat: VIDIOCCAPTURE / VIDIOC_PREVIEW: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_AUDIO, dir=r-
> (0x80345621) BT848 radio (STB, Gateway P/N 6: Get for index=0
> BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, capability=0, mode=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB, Gateway P/N 6:
> id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=9963785, type=2, name=Mute, min/max=0/1, step=0,
> default=0, flags=0x00000000 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_G_CTRL, dir=rw (0xc008561b) BT848 radio (STB, Gateway P/N 6: Enum
> for index=9963785
> BT848 radio (STB, Gateway P/N 6: id=9963785, value=-32512
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw (0xc054561d) BT848 radio (STB,
> Gateway P/N 6: index=0, name=Radio, type=1, capability=0, rangelow=0,
> rangehigh=0, signal=0, afc=0, rxsubchans=0, audmode=0 BT848 radio (STB,
> Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCAP, dir=r- (0x80685600) BT848 radio
> (STB, Gateway P/N 6: driver=bttv, card=BT848 radio (STB, Gateway P/N 6,
> bus=PCI:0000:05:06.0, version=0x00000911, capabilities=0x00010000 BT848
> radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT, dir=rw (0xc050561a)
> BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1, audioset=0,
> tuner=0, std=00000000, status=0 BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT, dir=rw
> (0xc050561a) BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUM_FMT, dir=rw
> (0xc0405602) BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_ENUMINPUT,
> dir=rw (0xc050561a) BT848 radio (STB, Gateway P/N 6: index=0, name=Radio,
> type=1, audioset=0, tuner=0, std=00000000, status=0 BT848 radio (STB,
> Gateway P/N 6: v4l2 ioctl VIDIOC_G_STD, dir=r- (0x80085617) BT848 radio
> (STB, Gateway P/N 6: value=00000000
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FBUF, dir=r-
> (0x8030560a) v4l1-compat: VIDIOCGFBUF / VIDIOC_G_FBUF: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FREQUENCY, dir=rw
> (0xc02c5638) BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB, Gateway P/N 6:
> id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT,
> dir=rw (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCGPICT / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw
> (0xc054561d) BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1,
> capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0,
> audmode=0 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_STD, dir=r-
> (0x80085617) BT848 radio (STB, Gateway P/N 6: value=00000000
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=vbi-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCGVBIFMT / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-over
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCGWIN / VIDIOC_G_WIN: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCGWIN / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCMCAPTURE / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_AUDIO, dir=-w
> (0x40345622) BT848 radio (STB, Gateway P/N 6: index=0, name=, capability=0,
> mode=0 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB, Gateway P/N 6:
> id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=9963785, type=2, name=Mute, min/max=0/1, step=0,
> default=0, flags=0x00000000 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_S_CTRL, dir=rw (0xc008561c) BT848 radio (STB, Gateway P/N 6:
> id=9963785, value=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_TUNER, dir=rw
> (0xc054561d) BT848 radio (STB, Gateway P/N 6: index=0, name=Radio, type=1,
> capability=0, rangelow=0, rangehigh=0, signal=0, afc=0, rxsubchans=0,
> audmode=0 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_TUNER,
> dir=-w (0x4054561e) BT848 radio (STB, Gateway P/N 6: index=0, name=Radio,
> type=1, capability=0, rangelow=0, rangehigh=0, signal=0, afc=0,
> rxsubchans=0, audmode=0 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_S_INPUT, dir=rw (0xc0045627) BT848 radio (STB, Gateway P/N 6:
> value=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_STD, dir=-w
> (0x40085618) BT848 radio (STB, Gateway P/N 6: value=000000ff
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FBUF, dir=-w
> (0x4030560b) v4l1-compat: VIDIOCSFBUF / VIDIOC_S_FBUF: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FREQUENCY, dir=rw
> (0xc02c5638) BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FREQUENCY, dir=-w
> (0x402c5639) BT848 radio (STB, Gateway P/N 6: tuner=0, type=1, frequency=0
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl
> VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB, Gateway P/N 6:
> id=0, type=0, name=42, min/max=0/0, step=0, default=0, flags=0x00000001
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw
> (0xc0445624) BT848 radio (STB, Gateway P/N 6: id=0, type=0, name=42,
> min/max=0/0, step=0, default=0, flags=0x00000001 BT848 radio (STB, Gateway
> P/N 6: v4l2 ioctl VIDIOC_QUERYCTRL, dir=rw (0xc0445624) BT848 radio (STB,
> Gateway P/N 6: id=0, type=0, name=42, min/max=0/0, step=0, default=0,
> flags=0x00000001 BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT,
> dir=rw (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCSPICT / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FBUF, dir=r-
> (0x8030560a) v4l1-compat: VIDIOCSPICT / VIDIOC_G_FBUF: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_INPUT, dir=rw
> (0xc0045627) BT848 radio (STB, Gateway P/N 6: value=0
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_STREAMOFF, dir=-w
> (0x40045613) BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT,
> dir=rw (0xc0d05604) BT848 radio (STB, Gateway P/N 6: type=video-cap
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_G_FMT, dir=rw
> (0xc0d05604) v4l1-compat: VIDIOCSWIN / VIDIOC_G_FMT: -22
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FMT, dir=rw
> (0xc0d05605) BT848 radio (STB, Gateway P/N 6: type=video-over
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_S_FMT, dir=rw
> (0xc0d05605) v4l1-compat: VIDIOCSWIN / VIDIOC_S_FMT #2: -22
> BT848 radio (STB, Gateway P/N 6: err:
> BT848 radio (STB, Gateway P/N 6: v4l2 ioctl VIDIOC_QUERYBUF, dir=rw
> (0xc0585609) v4l1-compat: VIDIOCSYNC / VIDIOC_QUERYBUF: -22
>
> I got no oops. The tests were done also on a 64bit kernel, on a dual-core
> machine.
>

My machine is a 2 x Opteron 244, 2GB RAM, MSI K Master 2FAR Board

bttv: driver version 0.9.17 loaded
bttv: using 8 buffers with 2080k (520 pages) each for capture
bttv: Bt8xx card found (0).
bttv0: Bt878 (rev 17) at 0000:00:05.0, irq: 16, latency: 32, mmio: 0xfa015000
bttv0: using: Lifeview FlyVideo 98FM LR50 [card=56,insmod option]
bttv0: gpio: en=00000000, out=00000000 in=00e8ff00 [init]
bttv0: FlyVideo_gpio: unknown tuner type.
bttv0: FlyVideo Radio=yes RemoteControl=yes Tuner=-1 gpio=0xe8ff00
bttv0: FlyVideo  LR90=no  tda9821/tda9820=no  capture_only=no
bttv0: tuner type=1
bttv0: i2c: checking for MSP34xx @ 0x80... not found
bttv0: i2c: checking for TDA9875 @ 0xb0... not found
bttv0: i2c: checking for TDA7432 @ 0x8a... not found
bttv0: registered device video0
bttv0: registered device vbi0
bttv0: registered device radio0
bttv0: PLL: 28636363 => 35468950 .. ok


lspci
00:00.0 Host bridge: VIA Technologies, Inc. VT8385 [K8T800 AGP] Host Bridge 
(rev 01)
00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI bridge [K8T800/K8T890 
South]
00:05.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture 
(rev 11)
00:05.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 
11)
00:08.0 Multimedia audio controller: Creative Labs SB Audigy (rev 04)
00:08.1 Input device controller: Creative Labs SB Audigy Game Port (rev 04)
00:08.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port (rev 04)
00:0b.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5705 Gigabit 
Ethernet (rev 03)
00:0f.0 RAID bus controller: VIA Technologies, Inc. VIA VT6420 SATA RAID 
Controller (rev 80)
00:0f.1 IDE interface: VIA Technologies, Inc. 
VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
Controller (rev 81)
00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
Controller (rev 81)
00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 
Controller (rev 81)
00:10.4 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 86)
00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge 
[KT600/K8T800/K8T890 South]
00:18.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
HyperTransport Technology Configuration
00:18.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
Address Map
00:18.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM 
Controller
00:18.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
Miscellaneous Control
00:19.0 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
HyperTransport Technology Configuration
00:19.1 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
Address Map
00:19.2 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] DRAM 
Controller
00:19.3 Host bridge: Advanced Micro Devices [AMD] K8 [Athlon64/Opteron] 
Miscellaneous Control
01:00.0 VGA compatible controller: nVidia Corporation NV36 [GeForce FX 5700LE] 
(rev a1)


> Cheers,
> Mauro
>
> ---
>
> I've patched the ioctl-test program (at v4l2-apps/test dir, on v4l/dvb
> development environment, available at http://linuxtv.org/hg/v4l-dvb) with
> this diff:
>
> diff -r f24051885fe9 v4l2-apps/test/ioctl-test.c
> --- a/v4l2-apps/test/ioctl-test.c	Tue Mar 18 18:10:06 2008 -0300
> +++ b/v4l2-apps/test/ioctl-test.c	Sat Mar 22 21:52:16 2008 -0300
> @@ -47,6 +47,8 @@ typedef __u32 u32;
>   #else
>   typedef u_int32_t u32;
>   #endif
> +
> +#define CONFIG_VIDEO_V4L1_COMPAT
>
>   /* All possible parameters used on v4l ioctls */
>   union v4l_parms {
> @@ -142,7 +144,7 @@ int ioctls[] = {
>   	VIDIOCSYNC,/* int */
>   #endif
>   	/* V4L2 ioctls */
> -
> +#if 0
>   	VIDIOC_CROPCAP,/* struct v4l2_cropcap */
>   	VIDIOC_DQBUF,/* struct v4l2_buffer */
>   	VIDIOC_ENUMAUDIO,/* struct v4l2_audio */
> @@ -173,7 +175,7 @@ int ioctls[] = {
>   	VIDIOC_S_OUTPUT,/* int */
>   	VIDIOC_S_PARM,/* struct v4l2_streamparm */
>   	VIDIOC_TRY_FMT,/* struct v4l2_format */
> -
> +#endif
>   #if 0
>   	VIDIOC_G_AUDIO_OLD,/* struct v4l2_audio */
>   	VIDIOC_G_AUDOUT_OLD,/* struct v4l2_audioout */
> @@ -214,7 +216,7 @@ int main (void)
>   {
>   	int fd=0, ret=0;
>   	unsigned i;
> -	char *device="/dev/video0";
> +	char *device="/dev/radio0";
>   	union v4l_parms p;
>
>   	if ((fd = open(device, O_RDONLY)) < 0) {
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/



^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-23 13:25                         ` Bongani Hlope
@ 2008-03-23 13:50                           ` Mauro Carvalho Chehab
  2008-03-24  6:58                             ` Bongani Hlope
  0 siblings, 1 reply; 23+ messages in thread
From: Mauro Carvalho Chehab @ 2008-03-23 13:50 UTC (permalink / raw)
  To: Bongani Hlope; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

On Sun, 23 Mar 2008 15:25:22 +0200
Bongani Hlope <bonganilinux@mweb.co.za> wrote:

> 
> rpm -qa | grep radio
> radio-3.95-7mdv2008.0

Hmm... exactly the same version I have here.

> 00:00.0 Host bridge: VIA Technologies, Inc. VT8385 [K8T800 AGP] Host Bridge  (rev 01)
> 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI bridge [K8T800/K8T890 South]
> 00:11.0 ISA bridge: VIA Technologies, Inc. VT8237 ISA bridge [KT600/K8T800/K8T890 South]

It used to have some issues with VIA and PCI, if you're using overlay mode
(this is the default, for xawtv).

This is due to some issues on buggy VIA bridges, when handling PCI2PCI data
transfers, used in overlay mode. If a PCI2PCI conflicts with a PCI2MEM transfer
(or a MEM2PCI), you may suffer data loss.

Are you trying to use radio just after a clean reboot, or are you experiencing
those troubles after running a video application that might be using overlay
mode?

Could you please send me your .config? I'll try to run the same config as you,
with the latest -rc.

Cheers,
Mauro

^ permalink raw reply	[flat|nested] 23+ messages in thread

* Re: [PATCH] bttv: Add a radio compat_ioctl file operation.
  2008-03-23 13:50                           ` Mauro Carvalho Chehab
@ 2008-03-24  6:58                             ` Bongani Hlope
  0 siblings, 0 replies; 23+ messages in thread
From: Bongani Hlope @ 2008-03-24  6:58 UTC (permalink / raw)
  To: Mauro Carvalho Chehab; +Cc: Robert Fitzsimons, video4linux-list, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 28363 bytes --]

On Sunday 23 March 2008 15:50:17 Mauro Carvalho Chehab wrote:
> On Sun, 23 Mar 2008 15:25:22 +0200
>
> Bongani Hlope <bonganilinux@mweb.co.za> wrote:
> > rpm -qa | grep radio
> > radio-3.95-7mdv2008.0
>
> Hmm... exactly the same version I have here.
>
> > 00:00.0 Host bridge: VIA Technologies, Inc. VT8385 [K8T800 AGP] Host
> > Bridge  (rev 01) 00:01.0 PCI bridge: VIA Technologies, Inc. VT8237 PCI
> > bridge [K8T800/K8T890 South] 00:11.0 ISA bridge: VIA Technologies, Inc.
> > VT8237 ISA bridge [KT600/K8T800/K8T890 South]
>
> It used to have some issues with VIA and PCI, if you're using overlay mode
> (this is the default, for xawtv).
>

xawtv works fine, it's only radio that has a problem since 2.6.25-rc?

> This is due to some issues on buggy VIA bridges, when handling PCI2PCI data
> transfers, used in overlay mode. If a PCI2PCI conflicts with a PCI2MEM
> transfer (or a MEM2PCI), you may suffer data loss.
>
> Are you trying to use radio just after a clean reboot, or are you
> experiencing those troubles after running a video application that might be
> using overlay mode?
>

I'm trying to use radio after a clean reboot, as I said above; xatwv and 
tvtime don't seem to have a problem.

> Could you please send me your .config? I'll try to run the same config as
> you, with the latest -rc.
>

attached

> Cheers,
> Mauro

Oh... 

v4l-info /dev/radio

causes this oops (clean reboot)

BUG: unable to handle kernel NULL pointer dereference at 0000000000000250
IP: [<ffffffff8030fe54>] strlcpy+0x11/0x36
PGD 68650067 PUD 7526f067 PMD 0
Oops: 0000 [1] PREEMPT SMP
CPU 1
Modules linked in: snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq 
binfmt_misc loop nls_cp437 vfat fat nls_iso8859_1 ntfs thermal processor fan 
container button pcspkr snd_pcm_oss snd_mixer_oss tuner snd_emu10k1 tea5767 
tda8290 tuner_xc2028 tda9887 tuner_simple snd_rawmidi mt20xx snd_ac97_codec 
tea5761 bttv ac97_bus snd_pcm ir_common snd_seq_device compat_ioctl32 
snd_timer firewire_ohci videodev snd_page_alloc uhci_hcd firewire_core 
ehci_hcd snd_util_mem v4l1_compat v4l2_common snd_hwdep usbcore crc_itu_t 
ide_cd_mod videobuf_dma_sg snd sr_mod ohci1394 videobuf_core btcx_risc 
emu10k1_gp ieee1394 cdrom i2c_viapro tg3 gameport soundcore sg tveeprom evdev
Pid: 4756, comm: v4l-info Tainted: G   M     2.6.25-rc5 #44
RIP: 0010:[<ffffffff8030fe54>]  [<ffffffff8030fe54>] strlcpy+0x11/0x36
RSP: 0018:ffff81006414fcb8  EFLAGS: 00010286
RAX: 0000000000000000 RBX: ffff81006414fdf8 RCX: ffffffffffffffff
RDX: 0000000000000020 RSI: 0000000000000250 RDI: 0000000000000250
RBP: ffff81006414fcb8 R08: ffff81006414fe08 R09: ffff81006414fdf8
R10: ffff81007d885788 R11: 0000000000000202 R12: ffff81007fbe7800
R13: 0000000080685600 R14: ffff81007e76d800 R15: ffffffff88165110
FS:  00007f00eb5666f0(0000) GS:ffff81007fb6adc0(0000) knlGS:0000000000000000
CS:  0010 DS: 0000 ES: 0000 CR0: 000000008005003b
CR2: 0000000000000250 CR3: 000000007686f000 CR4: 00000000000006e0
DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
Process v4l-info (pid: 4756, threadinfo ffff81006414e000, task 
ffff81007e8da180)
Stack:  ffff81006414fcd8 ffffffff88145d33 ffff81007d885788 ffff81006414fdf8
 ffff81006414fdb8 ffffffff88100e58 ffffffffc008561c ffff81006414fd28
 ffff81006414fd08 ffffffff88149b72 ffff81006414fd58 ffffffff88142ed2
Call Trace:
 [<ffffffff88145d33>] :bttv:radio_querycap+0x39/0x6b
 [<ffffffff88100e58>] :videodev:__video_do_ioctl+0x579/0x2e16
 [<ffffffff88149b72>] ? :bttv:bttv_call_i2c_clients+0x16/0x18
 [<ffffffff88142ed2>] ? :bttv:audio_mux+0x105/0x1b5
 [<ffffffff80260449>] ? filemap_fault+0x1fe/0x371
 [<ffffffff88103a95>] :videodev:video_ioctl2+0x1b8/0x259
 [<ffffffff8026d36b>] ? handle_mm_fault+0x341/0x69b
 [<ffffffff80291252>] vfs_ioctl+0x5e/0x77
 [<ffffffff802914b8>] do_vfs_ioctl+0x24d/0x262
 [<ffffffff8045d881>] ? do_page_fault+0x434/0x7aa
 [<ffffffff8029150f>] sys_ioctl+0x42/0x67
 [<ffffffff8020b32b>] system_call_after_swapgs+0x7b/0x80


Code: 4c 29 c2 48 39 d0 72 04 48 8d 4a ff fc 4c 89 cf 4c 01 c0 f3 a4 c6 07 00 
c9 c3 55 31 c0 48 83 c9 ff fc 49 89 f8 48 89 f7 48 89 e5 <f2> ae 48 85 d2 48 
f7 d1 48 8d 41 ff 74 15 48 39 d0 48 89 c1 72
RIP  [<ffffffff8030fe54>] strlcpy+0x11/0x36
 RSP <ffff81006414fcb8>
CR2: 0000000000000250
---[ end trace 7e58c9e343c88870 ]---

but 

v4l-info /dev/video works fine

### v4l2 device info [/dev/video] ###
general info
    VIDIOC_QUERYCAP
        driver                  : "bttv"
        card                    : "BT878 video (Lifeview FlyVideo "
        bus_info                : "PCI:0000:00:05.0"
        version                 : 0.9.17
        capabilities            : 0x5010015 
[VIDEO_CAPTURE,VIDEO_OVERLAY,VBI_CAPTURE,TUNER,READWRITE,STREAMING]

standards
    VIDIOC_ENUMSTD(0)
        index                   : 0
        id                      : 0xff 
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K]
        name                    : "PAL"
        frameperiod.numerator   : 1
        frameperiod.denominator : 25
        framelines              : 625
    VIDIOC_ENUMSTD(1)
        index                   : 1
        id                      : 0x100 [PAL_M]
        name                    : "PAL-M"
        frameperiod.numerator   : 1001
        frameperiod.denominator : 30000
        framelines              : 525
    VIDIOC_ENUMSTD(2)
        index                   : 2
        id                      : 0x200 [PAL_N]
        name                    : "PAL-N"
        frameperiod.numerator   : 1
        frameperiod.denominator : 25
        framelines              : 625
    VIDIOC_ENUMSTD(3)
        index                   : 3
        id                      : 0x400 [PAL_Nc]
        name                    : "PAL-Nc"
        frameperiod.numerator   : 1
        frameperiod.denominator : 25
        framelines              : 625
    VIDIOC_ENUMSTD(4)
        index                   : 4
        id                      : 0x800 [PAL_60]
        name                    : "PAL-60"
        frameperiod.numerator   : 1001
        frameperiod.denominator : 30000
        framelines              : 525
    VIDIOC_ENUMSTD(5)
        index                   : 5
        id                      : 0xb000 [NTSC_M,NTSC_M_JP,?]
        name                    : "NTSC"
        frameperiod.numerator   : 1001
        frameperiod.denominator : 30000
        framelines              : 525
    VIDIOC_ENUMSTD(6)
        index                   : 6
        id                      : 0xff0000 
[SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
        name                    : "SECAM"
        frameperiod.numerator   : 1
        frameperiod.denominator : 25
        framelines              : 625

inputs
    VIDIOC_ENUMINPUT(0)
        index                   : 0
        name                    : "Television"
        type                    : TUNER
        audioset                : 1
        tuner                   : 0
        std                     : 0xffbfff 
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
        status                  : 0x102 [NO_SIGNAL,NO_H_LOCK]
    VIDIOC_ENUMINPUT(1)
        index                   : 1
        name                    : "Composite1"
        type                    : CAMERA
        audioset                : 1
        tuner                   : 0
        std                     : 0xffbfff 
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
        status                  : 0x0 []
    VIDIOC_ENUMINPUT(2)
        index                   : 2
        name                    : "S-Video"
        type                    : CAMERA
        audioset                : 1
        tuner                   : 0
        std                     : 0xffbfff 
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
        status                  : 0x0 []
    VIDIOC_ENUMINPUT(3)
        index                   : 3
        name                    : "Composite3"
        type                    : CAMERA
        audioset                : 1
        tuner                   : 0
        std                     : 0xffbfff 
[PAL_B,PAL_B1,PAL_G,PAL_H,PAL_I,PAL_D,PAL_D1,PAL_K,PAL_M,PAL_N,PAL_Nc,PAL_60,NTSC_M,NTSC_M_JP,?,SECAM_B,SECAM_D,SECAM_G,SECAM_H,SECAM_K,SECAM_K1,SECAM_L,?ATSC_8_VSB]
        status                  : 0x0 []

tuners
    VIDIOC_G_TUNER(0)
        index                   : 0
        name                    : "Television"
        type                    : ANALOG_TV
        capability              : 0x2 [NORM]
        rangelow                : 704
        rangehigh               : 15328
        rxsubchans              : 0x1 [MONO]
        audmode                 : MONO
        signal                  : 0
        afc                     : 0

video capture
    VIDIOC_ENUM_FMT(0,VIDEO_CAPTURE)
        index                   : 0
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "8 bpp, gray"
        pixelformat             : 0x59455247 [GREY]
    VIDIOC_ENUM_FMT(1,VIDEO_CAPTURE)
        index                   : 1
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "8 bpp, dithered color"
        pixelformat             : 0x34324948 [HI24]
    VIDIOC_ENUM_FMT(2,VIDEO_CAPTURE)
        index                   : 2
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "15 bpp RGB, le"
        pixelformat             : 0x4f424752 [RGBO]
    VIDIOC_ENUM_FMT(3,VIDEO_CAPTURE)
        index                   : 3
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "15 bpp RGB, be"
        pixelformat             : 0x51424752 [RGBQ]
    VIDIOC_ENUM_FMT(4,VIDEO_CAPTURE)
        index                   : 4
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "16 bpp RGB, le"
        pixelformat             : 0x50424752 [RGBP]
    VIDIOC_ENUM_FMT(5,VIDEO_CAPTURE)
        index                   : 5
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "16 bpp RGB, be"
        pixelformat             : 0x52424752 [RGBR]
    VIDIOC_ENUM_FMT(6,VIDEO_CAPTURE)
        index                   : 6
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "24 bpp RGB, le"
        pixelformat             : 0x33524742 [BGR3]
    VIDIOC_ENUM_FMT(7,VIDEO_CAPTURE)
        index                   : 7
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "32 bpp RGB, le"
        pixelformat             : 0x34524742 [BGR4]
    VIDIOC_ENUM_FMT(8,VIDEO_CAPTURE)
        index                   : 8
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "32 bpp RGB, be"
        pixelformat             : 0x34424752 [RGB4]
    VIDIOC_ENUM_FMT(9,VIDEO_CAPTURE)
        index                   : 9
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:2, packed, YUYV"
        pixelformat             : 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(10,VIDEO_CAPTURE)
        index                   : 10
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:2, packed, YUYV"
        pixelformat             : 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(11,VIDEO_CAPTURE)
        index                   : 11
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:2, packed, UYVY"
        pixelformat             : 0x59565955 [UYVY]
    VIDIOC_ENUM_FMT(12,VIDEO_CAPTURE)
        index                   : 12
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:2, planar, Y-Cb-Cr"
        pixelformat             : 0x50323234 [422P]
    VIDIOC_ENUM_FMT(13,VIDEO_CAPTURE)
        index                   : 13
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:0, planar, Y-Cb-Cr"
        pixelformat             : 0x32315559 [YU12]
    VIDIOC_ENUM_FMT(14,VIDEO_CAPTURE)
        index                   : 14
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:2:0, planar, Y-Cr-Cb"
        pixelformat             : 0x32315659 [YV12]
    VIDIOC_ENUM_FMT(15,VIDEO_CAPTURE)
        index                   : 15
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:1:1, planar, Y-Cb-Cr"
        pixelformat             : 0x50313134 [411P]
    VIDIOC_ENUM_FMT(16,VIDEO_CAPTURE)
        index                   : 16
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:1:0, planar, Y-Cb-Cr"
        pixelformat             : 0x39565559 [YUV9]
    VIDIOC_ENUM_FMT(17,VIDEO_CAPTURE)
        index                   : 17
        type                    : VIDEO_CAPTURE
        flags                   : 0
        description             : "4:1:0, planar, Y-Cr-Cb"
        pixelformat             : 0x39555659 [YVU9]
    VIDIOC_G_FMT(VIDEO_CAPTURE)
        type                    : VIDEO_CAPTURE
        fmt.pix.width           : 320
        fmt.pix.height          : 240
        fmt.pix.pixelformat     : 0x59565955 [UYVY]
        fmt.pix.field           : INTERLACED
        fmt.pix.bytesperline    : 640
        fmt.pix.sizeimage       : 153600
        fmt.pix.colorspace      : unknown
        fmt.pix.priv            : 0

video overlay
    VIDIOC_ENUM_FMT(0,VIDEO_OVERLAY)
        index                   : 0
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "8 bpp, gray"
        pixelformat             : 0x59455247 [GREY]
    VIDIOC_ENUM_FMT(1,VIDEO_OVERLAY)
        index                   : 1
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "8 bpp, dithered color"
        pixelformat             : 0x34324948 [HI24]
    VIDIOC_ENUM_FMT(2,VIDEO_OVERLAY)
        index                   : 2
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "15 bpp RGB, le"
        pixelformat             : 0x4f424752 [RGBO]
    VIDIOC_ENUM_FMT(3,VIDEO_OVERLAY)
        index                   : 3
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "15 bpp RGB, be"
        pixelformat             : 0x51424752 [RGBQ]
    VIDIOC_ENUM_FMT(4,VIDEO_OVERLAY)
        index                   : 4
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "16 bpp RGB, le"
        pixelformat             : 0x50424752 [RGBP]
    VIDIOC_ENUM_FMT(5,VIDEO_OVERLAY)
        index                   : 5
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "16 bpp RGB, be"
        pixelformat             : 0x52424752 [RGBR]
    VIDIOC_ENUM_FMT(6,VIDEO_OVERLAY)
        index                   : 6
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "24 bpp RGB, le"
        pixelformat             : 0x33524742 [BGR3]
    VIDIOC_ENUM_FMT(7,VIDEO_OVERLAY)
        index                   : 7
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "32 bpp RGB, le"
        pixelformat             : 0x34524742 [BGR4]
    VIDIOC_ENUM_FMT(8,VIDEO_OVERLAY)
        index                   : 8
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "32 bpp RGB, be"
        pixelformat             : 0x34424752 [RGB4]
    VIDIOC_ENUM_FMT(9,VIDEO_OVERLAY)
        index                   : 9
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "4:2:2, packed, YUYV"
        pixelformat             : 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(10,VIDEO_OVERLAY)
        index                   : 10
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "4:2:2, packed, YUYV"
        pixelformat             : 0x56595559 [YUYV]
    VIDIOC_ENUM_FMT(11,VIDEO_OVERLAY)
        index                   : 11
        type                    : VIDEO_OVERLAY
        flags                   : 0
        description             : "4:2:2, packed, UYVY"
        pixelformat             : 0x59565955 [UYVY]
    VIDIOC_G_FMT(VIDEO_OVERLAY)
        type                    : VIDEO_OVERLAY
        fmt.win.w.left          : 0
        fmt.win.w.top           : 0
        fmt.win.w.width         : 320
        fmt.win.w.height        : 240
        fmt.win.field           : ANY
        fmt.win.chromakey       : 0
        fmt.win.clips           : (nil)
        fmt.win.clipcount       : 0
        fmt.win.bitmap          : (nil)
    VIDIOC_G_FBUF
        capability              : 0x4 [LIST_CLIPPING]
        flags                   : 0x0 []
        base                    : (nil)
        fmt.width               : 0
        fmt.height              : 0
        fmt.pixelformat         : 0x59565955 [UYVY]
        fmt.field               : ANY
        fmt.bytesperline        : 0
        fmt.sizeimage           : 0
        fmt.colorspace          : unknown
        fmt.priv                : 0

vbi capture
    VIDIOC_ENUM_FMT(0,VBI_CAPTURE)
        index                   : 0
        type                    : VBI_CAPTURE
        flags                   : 0
        description             : "vbi data"
        pixelformat             : 0x59455247 [GREY]
    VIDIOC_G_FMT(VBI_CAPTURE)
        type                    : VBI_CAPTURE
        fmt.vbi.sampling_rate   : 35468950
        fmt.vbi.offset          : 244
        fmt.vbi.samples_per_line: 2048
        fmt.vbi.sample_format   : 0x59455247 [GREY]
        fmt.vbi.start[0]        : 7
        fmt.vbi.start[1]        : 320
        fmt.vbi.count[0]        : 16
        fmt.vbi.count[1]        : 16
        fmt.vbi.flags           : 0

controls
    VIDIOC_QUERYCTRL(BASE+0)
        id                      : 9963776
        type                    : INTEGER
        name                    : "Brightness"
        minimum                 : 0
        maximum                 : 65535
        step                    : 256
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+1)
        id                      : 9963777
        type                    : INTEGER
        name                    : "Contrast"
        minimum                 : 0
        maximum                 : 65535
        step                    : 128
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+2)
        id                      : 9963778
        type                    : INTEGER
        name                    : "Saturation"
        minimum                 : 0
        maximum                 : 65535
        step                    : 128
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+3)
        id                      : 9963779
        type                    : INTEGER
        name                    : "Hue"
        minimum                 : 0
        maximum                 : 65535
        step                    : 256
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+6)
        id                      : 9963782
        type                    : INTEGER
        name                    : "Balance"
        minimum                 : 0
        maximum                 : 65535
        step                    : 655
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+7)
        id                      : 9963783
        type                    : INTEGER
        name                    : "Bass"
        minimum                 : 0
        maximum                 : 65535
        step                    : 655
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+8)
        id                      : 9963784
        type                    : INTEGER
        name                    : "Treble"
        minimum                 : 0
        maximum                 : 65535
        step                    : 655
        default_value           : 32768
        flags                   : 0
    VIDIOC_QUERYCTRL(BASE+9)
        id                      : 9963785
        type                    : BOOLEAN
        name                    : "Mute"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+0)
        id                      : 134217728
        type                    : BOOLEAN
        name                    : "chroma agc"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+1)
        id                      : 134217729
        type                    : BOOLEAN
        name                    : "combfilter"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+2)
        id                      : 134217730
        type                    : BOOLEAN
        name                    : "automute"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+3)
        id                      : 134217731
        type                    : BOOLEAN
        name                    : "luma decimation filter"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+4)
        id                      : 134217732
        type                    : BOOLEAN
        name                    : "agc crush"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+5)
        id                      : 134217733
        type                    : BOOLEAN
        name                    : "vcr hack"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+6)
        id                      : 134217734
        type                    : INTEGER
        name                    : "whitecrush upper"
        minimum                 : 0
        maximum                 : 255
        step                    : 1
        default_value           : 207
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+7)
        id                      : 134217735
        type                    : INTEGER
        name                    : "whitecrush lower"
        minimum                 : 0
        maximum                 : 255
        step                    : 1
        default_value           : 127
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+8)
        id                      : 134217736
        type                    : INTEGER
        name                    : "uv ratio"
        minimum                 : 0
        maximum                 : 100
        step                    : 1
        default_value           : 50
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+9)
        id                      : 134217737
        type                    : BOOLEAN
        name                    : "full luma range"
        minimum                 : 0
        maximum                 : 1
        step                    : 0
        default_value           : 0
        flags                   : 0
    VIDIOC_QUERYCTRL(PRIVATE_BASE+10)
        id                      : 134217738
        type                    : INTEGER
        name                    : "coring"
        minimum                 : 0
        maximum                 : 3
        step                    : 1
        default_value           : 0
        flags                   : 0

### video4linux device info [/dev/video] ###
general info
    VIDIOCGCAP
        name                    : "BT878 video (Lifeview FlyVideo "
        type                    : 0x2f 
[CAPTURE,TUNER,TELETEXT,OVERLAY,CLIPPING]
        channels                : 4
        audios                  : 0
        maxwidth                : 924
        maxheight               : 576
        minwidth                : 48
        minheight               : 32

channels
    VIDIOCGCHAN(0)
        channel                 : 0
        name                    : "Television"
        tuners                  : 1
        flags                   : 0x1 [TUNER]
        type                    : TV
        norm                    : 0
    VIDIOCGCHAN(1)
        channel                 : 1
        name                    : "Composite1"
        tuners                  : 0
        flags                   : 0x0 []
        type                    : CAMERA
        norm                    : 0
    VIDIOCGCHAN(2)
        channel                 : 2
        name                    : "S-Video"
        tuners                  : 0
        flags                   : 0x0 []
        type                    : CAMERA
        norm                    : 0
    VIDIOCGCHAN(3)
        channel                 : 3
        name                    : "Composite3"
        tuners                  : 0
        flags                   : 0x0 []
        type                    : CAMERA
        norm                    : 0

tuner
    VIDIOCGTUNER
        tuner                   : 0
        name                    : "Television"
        rangelow                : 0
        rangehigh               : 704
        flags                   : 0x0 []
        mode                    : unknown
        signal                  : 0

audio
    VIDIOCGAUDIO
        audio                   : 0
        volume                  : 0
        bass                    : 0
        treble                  : 0

picture
    VIDIOCGPICT
        brightness              : 32768
        hue                     : 32768
        colour                  : 32768
        contrast                : 32768
        whiteness               : 0
        depth                   : 16
        palette                 : UYVY

buffer
    VIDIOCGFBUF
        base                    : (nil)
        height                  : 0
        width                   : 0
        depth                   : 0
        bytesperline            : 0

window
    VIDIOCGWIN
        x                       : 0
        y                       : 0
        width                   : 320
        height                  : 240
        chromakey               : 0
        flags                   : 0


[-- Attachment #2: config.gz --]
[-- Type: application/x-gzip, Size: 12055 bytes --]

^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2008-03-24  6:58 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-02-17  8:36 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
2008-02-18 16:11 ` Mauro Carvalho Chehab
2008-02-18 21:20   ` Bongani Hlope
2008-02-18 23:21     ` Bongani Hlope
2008-02-19 14:16       ` Mauro Carvalho Chehab
2008-02-19 20:37         ` Bongani Hlope
2008-02-21  9:03           ` Bongani Hlope
2008-02-26 15:41         ` Robert Fitzsimons
2008-02-27  1:42           ` Robert Fitzsimons
2008-02-27  1:44             ` [PATCH] bttv: Re-enable radio tuner support for VIDIOCGFREQ/VIDIOCSFREQ ioctls Robert Fitzsimons
2008-02-27  1:47             ` [PATCH] bttv: Re-enabling radio support requires the use of struct bttv_fh Robert Fitzsimons
2008-02-27  9:52               ` Mauro Carvalho Chehab
2008-02-27 21:45               ` Bongani Hlope
2008-02-28  9:25                 ` Robert Fitzsimons
2008-03-17 21:51             ` 2.6.25-rc[12] Video4Linux Bttv Regression Bongani Hlope
2008-03-20 17:22               ` Mauro Carvalho Chehab
2008-03-21 14:55                 ` Bongani Hlope
2008-03-22  0:05                   ` [PATCH] bttv: Add a radio compat_ioctl file operation Robert Fitzsimons
2008-03-22 18:17                     ` Bongani Hlope
2008-03-23  1:01                       ` Mauro Carvalho Chehab
2008-03-23 13:25                         ` Bongani Hlope
2008-03-23 13:50                           ` Mauro Carvalho Chehab
2008-03-24  6:58                             ` Bongani Hlope

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).