Hi Herton,

On Thursday 24 April 2008, Herton Ronaldo Krzesinski wrote:
> Em Wednesday 23 April 2008 00:01:14 Herton Ronaldo Krzesinski escreveu:
> > Em Monday 21 April 2008 18:14:52 Laurent Pinchart escreveu:
> > > Hi everybody,
> > >
> > > Alan Stern was kind enough to write a fix a few weeks ago for a video
> > > streaming issue that some of you encountered.
> > >
> > > In order to get the fix included in 2.6.26, David Brownell would like
> > > to know if the Linux UVC driver still suffers from the problem when
> > > used with 2.6.25 *without* the patch.
> > >
> > > Could you please be kind enough to test 2.6.25 and report results ?
> >
> > I was testing today with a stock 2.6.25 without the patch and got no
> > problems. So may be another thing fixed it. If I encounter any problem
> > I'll report.
>
> Hmm, I got the same problem now with stock 2.6.25. I discovered that the
> problem is only reproducible when you lower UVC_MAX_ISO_PACKETS in the
> sources, at least here. I was trying to avoid page allocation failures in
> another machine lowering from 40 to 8 (after reading
> http://article.gmane.org/gmane.linux.drivers.uvc.devel/1956), I didn't had
> time to investigate more so was forgotten:
>
> uvcvideo: device USB2.0 Camera requested null bandwidth, defaulting to
> lowest. kopete: page allocation failure. order:5, mode:0x0
> Pid: 6996, comm: kopete Not tainted 2.6.24.4-desktop-2mdvoem #1
>  [<c010645a>] show_trace_log_lvl+0x1a/0x30
>  [<c0106ec2>] show_trace+0x12/0x20
>  [<c010794c>] dump_stack+0x6c/0x80
>  [<c016e5a8>] __alloc_pages+0x278/0x360
>  [<c016e6df>] __get_free_pages+0x4f/0x60
>  [<c010a25a>] dma_alloc_coherent+0xba/0x110
>  [<ccdd7a17>] hcd_buffer_alloc+0x47/0x80 [usbcore]
>  [<ccdcd335>] usb_buffer_alloc+0x25/0x30 [usbcore]
>  [<ccf59bf8>] uvc_init_video+0x158/0x3b0 [uvcvideo]
>  [<ccf59e9a>] uvc_video_enable+0x4a/0x50 [uvcvideo]
>  [<ccf59229>] uvc_v4l2_do_ioctl+0x999/0xfb0 [uvcvideo]
>  [<ccf40283>] video_usercopy+0xc3/0x230 [videodev]
>  [<ccf58263>] uvc_v4l2_ioctl+0x43/0x50 [uvcvideo]
>  [<c019a578>] do_ioctl+0x88/0xa0
>  [<c019a7af>] vfs_ioctl+0x21f/0x2a0
>  [<c019a883>] sys_ioctl+0x53/0x70
>  [<c010532e>] sysenter_past_esp+0x6b/0xa1
>  =======================
> Mem-info:
> DMA per-cpu:
> CPU    0: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1
> usd: 0
> CPU    1: Hot: hi:    0, btch:   1 usd:   0   Cold: hi:    0, btch:   1
> usd: 0
> Normal per-cpu:
> CPU    0: Hot: hi:   42, btch:   7 usd:  33   Cold: hi:   14, btch:   3
> usd: 13
> CPU    1: Hot: hi:   42, btch:   7 usd:  40   Cold: hi:   14, btch:   3
> usd: 12
> Active:30836 inactive:8955 dirty:0 writeback:0 unstable:0
>  free:528 slab:3006 mapped:12950 pagetables:371 bounce:0
> DMA free:836kB min:144kB low:180kB high:216kB active:9980kB inactive:1260kB
> present:16256kB pages_scanned:65 all_unreclaimable? no
> lowmem_reserve[]: 0 173 173 173
> Normal free:1276kB min:1608kB low:2008kB high:2412kB active:113364kB
> inactive:34560kB present:177292kB pages_scanned:0 all_unreclaimable? no
> lowmem_reserve[]: 0 0 0 0
> DMA: 9*4kB 0*8kB 1*16kB 1*32kB 0*64kB 0*128kB 1*256kB 1*512kB 0*1024kB
> 0*2048kB 0*4096kB = 852kB
> Normal: 30*4kB 4*8kB 0*16kB 0*32kB 0*64kB 1*128kB 0*256kB 0*512kB 1*1024kB
> 0*2048kB 0*4096kB = 1304kB
> Swap cache: add 0, delete 0, find 0/0, race 0+0
> Free swap  = 1084348kB
> Total swap = 1084348kB
> Free swap:       1084348kB
> 48768 pages of RAM
> 0 pages of HIGHMEM
> 1454 reserved pages
> 58649 pages shared
> 0 pages swap cached
> 0 pages dirty
> 0 pages writeback
> 12950 pages mapped
> 3006 pages slab
> 371 pages pagetableS
>
> Without lowering UVC_MAX_ISO_PACKETS I get the above in one machine (it has
> indeed not much main memory, it's a notebook where free reports 184MB, main
> memory is shared with onboard video it seems). But recently I saw streaming
> issues after lowering it in another webcam, so I'm not using this anymore
> for every machine, then I didn't catch too the -45 errors anymore, now I
> finally discovered what was happening.
>
> So may be we have two bugs here then:
> - Memory allocation in uvcvideo doesn't work for all cases, urb allocation
> should be revisited or is it ok?

The only sensible option I can think of would be to lower UVC_MAX_ISO_PACKETS. 
The UVC driver tries not to put too much pressure on system memory but it 
still needs URB buffers. Lowering UVC_MAX_ISO_PACKETS will decrease memory 
pressure but will increase CPU usage, so it's a tradeoff, like always.

> - -45 errors are hidden and only reproducible in some hardware or when
> lowering UVC_MAX_ISO_PACKETS with some hardware combination (here only one
> machine showed -45 errors with UVC_MAX_ISO_PACKETS lowered until now).

Thanks for the report.

Best regards,

Laurent Pinchart
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel

Reply via email to