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

Re: SoC i.mx35 userptr method failure while running capture-example utility



Hi Alex

On Tue, 1 May 2012, Alex Gershgorin wrote:

> Hi everyone,
> 
> I use user-space utility from  http://git.linuxtv.org/v4l-utils.git/blob/HEAD:/contrib/test/capture-example.c
> I made two small changes in this application and this is running on i.MX35 SoC 
>  
> fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB565;
> fmt.fmt.pix.field       = V4L2_FIELD_ANY;
> 
> When MMAP method is used everything works fine, problem occurs when using USERPTR method
> this can see bellow :
> 
> ./capture-example -u -f -d /dev/video0 
> mx3-camera mx3-camera.0: MX3 Camera driver attached to camera 0
> Failed acquiring VMA for vaddr 0x76cd9008
> VIDIOC_QBUF error 22, Invalid arg

It doesn't surprise me, that this doesn't work. capture-example allocates 
absolutely normal user-space buffers, when called with USERPTR, and those 
buffers are very likely discontiguous. Whereas mx3-camera needs physically 
contiguous buffers, so, this can only fail. This means, you either have to 
use MMAP or you need to allocate USERPTR buffers in a special way to 
guarantee their contiguity.

> Unable to handle kernel NULL pointer dereference at virtual address 00000000

This, however, is bad and is a bug in the driver. The capture-example 
should just fail nicely with no trouble. I'll add it to my TODO and will 
try to find some time to debug and fix this, however, I'd be more than 
happy if someone else would beat me on this ;-)

Thanks
Guennadi

> pgd = 80004000
> [00000000] *pgd=00000000
> Internal error: Oops: 817 [#1] ARM
> CPU: 0    Not tainted  (3.4.0-rc5+ #2283
> PC is at mx3_videobuf_release+0x9c/0x10c
> LR is at mx3_videobuf_release+0x20/0x10c
> pc : [<802cd92c>]    lr : [<802cd8b0>]    psr: 00000093
> sp : 86db3e00  ip : 86db3e00  fp : 86db3e2c
> r10: 86ff6b20  r9 : 86817200  r8 : 00000000
> r7 : 86ff568c  r6 : 00000000  r5 : 8801a000  r4 : 86da3000
> r3 : 60000013  r2 : 86da3264  r1 : 00000000  r0 : 00000000
> Flags: nzcv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
> Control: 00c5387d  Table: 86dcc008  DAC: 00000015
> Process capture-example (pid: 52, stack limit = 0x86db2268)
> Stack: (0x86db3e00 to 0x86db4000)
> 3e00: 00000000 60000013 00000000 86ff568c 00000000 00000002 86ff56ac 00000000
> 3e20: 86db3e64 86db3e30 802c8978 802cd89c 00000000 80099414 86db3e84 86ff568c
> 3e40: 86dc9a80 8801a03c 80491828 00000000 86817200 86ff6b20 86db3e7c 86db3e68
> 3e60: 802c9a1c 802c8930 802ce048 86ff5600 86db3e9c 86db3e80 802cca14 802c9a00
> 3e80: 86ff5800 86dc9a80 00000008 86dc9a88 86db3eb4 86db3ea0 802b936c 802cc9d0
> 3ea0: 86dc9a80 86ff6b20 86db3ef4 86db3eb8 80082f00 802b932c 00000000 00000000
> 3ec0: 00000000 86d35010 86d7f000 86dc9a80 00000000 86d59000 86d90120 0000000c
> 3ee0: 86db2000 00000000 86db3f14 86db3ef8 8007ff58 80082df0 00000000 86d59000
> 3f00: 00000000 00000001 86db3f3c 86db3f18 8001c72c 8007fee4 86d59000 86d82000
> 3f20: 00000100 76ef1770 000000f8 8000e564 86db3f4c 86db3f40 8001c7a8 8001c6b4
> 3f40: 86db3f7c 86db3f50 8001dab4 8001c78c 7eb002b8 00000001 00000004 00000000
> 3f60: 86db3fa4 86db3f70 800824fc 000000f8 86db3f94 86db3f80 8001dfc0 8001d8c4
> 3f80: 0000ffff 000a3d78 86db3fa4 86db3f98 8001e004 8001df4c 00000000 86db3fa8
> 3fa0: 8000e3e0 8001dff8 000a3d78 76ef1770 00000001 000a3d64 00000008 00000001
> 3fc0: 000a3d78 76ef1770 76ef1770 000000f8 76e1d248 00000000 00009ecc 7eb02954
> 3fe0: 76f2e000 7eb02908 76de14dc 76e4f3d4 60000010 00000001 00000000 00000000
> Backtrace: 
> [<802cd890>] (mx3_videobuf_release+0x0/0x10c) from [<802c8978>] (__vb2_queue_free+0x54/0x15c)
>  r8:00000000 r7:86ff56ac r6:00000002 r5:00000000 r4:86ff568c
> [<802c8924>] (__vb2_queue_free+0x0/0x15c) from [<802c9a1c>] (vb2_queue_release+0x28/0x2c)
> [<802c99f4>] (vb2_queue_release+0x0/0x2c) from [<802cca14>] (soc_camera_close+0x50/0xac)
>  r4:86ff5600 r3:802ce048
> [<802cc9c4>] (soc_camera_close+0x0/0xac) from [<802b936c>] (v4l2_release+0x4c/0x6c)
>  r7:86dc9a88 r6:00000008 r5:86dc9a80 r4:86ff5800
> [<802b9320>] (v4l2_release+0x0/0x6c) from [<80082f00>] (fput+0x11c/0x204)
>  r5:86ff6b20 r4:86dc9a80
> [<80082de4>] (fput+0x0/0x204) from [<8007ff58>] (filp_close+0x80/0x8c)
> [<8007fed8>] (filp_close+0x0/0x8c) from [<8001c72c>] (put_files_struct+0x84/0xd8)
>  r6:00000001 r5:00000000 r4:86d59000 r3:00000000
> [<8001c6a8>] (put_files_struct+0x0/0xd8) from [<8001c7a8>] (exit_files+0x28/0x2c)
>  r8:8000e564 r7:000000f8 r6:76ef1770 r5:00000100 r4:86d82000
> r3:86d59000
> [<8001c780>] (exit_files+0x0/0x2c) from [<8001dab4>] (do_exit+0x1fc/0x688)
> [<8001d8b8>] (do_exit+0x0/0x688) from [<8001dfc0>] (do_group_exit+0x80/0xac)
>  r7:000000f8
> [<8001df40>] (do_group_exit+0x0/0xac) from [<8001e004>] (sys_exit_group+0x18/0x24)
>  r4:000a3d78 r3:0000ffff
> [<8001dfec>] (sys_exit_group+0x0/0x24) from [<8000e3e0>] (ret_fast_syscall+0x0/0x30)
> Code: 05852024 e5941268 e5940264 e2842f99 (e5810000) 
> ument
> ---[ end trace 23ac1073b67b7fc0 ]---
> Fixing recursive fault but reboot is needed!
> 
> Unfortunately I do not have enough knowledge in this kind of problems, any help will be welcomed.
> 
> Regards,
> Alex
> 
> 
> 
> 
> 
> 
>  
> 
> 
> 

---
Guennadi Liakhovetski, Ph.D.
Freelance Open-Source Software Developer
http://www.open-technology.de/
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Linux Input]     [Video for Linux]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Photos]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Devices]     [Yosemite Backpacking]

Add to Google Powered by Linux