[BeagleBoard xM][3.7.6-x8] ERROR: 256 KiB atomic DMA coherent pool is too small!

I’ve recently detected this error in BeagleBoard xM when working with uvc devices.
The fact is that some webcam MJPG frames apear broken and they are in the 256Kb boundary,
so I think that this error is related to the issue.

At the present time I’m working with a BeagleBoard xM and several 1080p uvc cameras.
All the cameras produce broken frames with BeagleBoard xM, but when using other ARM board
it works perfect.

[ 1951.027709] ERROR: 256 KiB atomic DMA coherent pool is too small!
[ 1951.027709] Please increase it with coherent_pool= kernel parameter!
[ 1951.040863] uvcvideo: Failed to resubmit video URB (-12).

I've recently detected this error in BeagleBoard xM when working with uvc
devices.
The fact is that some webcam MJPG frames apear broken and they are in the
256Kb boundary,
so I think that this error is related to the issue.

At the present time I'm working with a BeagleBoard xM and several 1080p uvc
cameras.
All the cameras produce broken frames with BeagleBoard xM, but when using
other ARM board
it works perfect.

[ 1951.027709] ERROR: 256 KiB atomic DMA coherent pool is too small!
[ 1951.027709] Please increase it with coherent_pool= kernel parameter!

So, what happens when you add "coherent_pool=1M" to your bootargs in uEnv.txt...

[ 1951.040863] uvcvideo: Failed to resubmit video URB (-12).

Regards,

I’ve tested with “coherent_pool=1M” and “coherent_pool=6M” and frames are still broken.

When I run guvcview dmesg returns this:
[ 75.518554] omap-dma-engine omap-dma-engine: allocating channel for 34
[ 75.519836] omap-dma-engine omap-dma-engine: freeing channel for 34
[ 75.521179] omap-dma-engine omap-dma-engine: allocating channel for 33
[ 75.521759] omap-dma-engine omap-dma-engine: freeing channel for 33
[ 75.637084] omap-dma-engine omap-dma-engine: allocating channel for 34
[ 75.640869] omap-dma-engine omap-dma-engine: freeing channel for 34
[ 75.644287] omap-dma-engine omap-dma-engine: allocating channel for 33
[ 75.647369] omap-dma-engine omap-dma-engine: freeing channel for 33
[ 75.714599] omap-dma-engine omap-dma-engine: allocating channel for 34
[ 75.718505] omap-dma-engine omap-dma-engine: freeing channel for 34
[ 75.722351] omap-dma-engine omap-dma-engine: allocating channel for 33
[ 75.725280] omap-dma-engine omap-dma-engine: freeing channel for 33
[ 75.762298] omap-dma-engine omap-dma-engine: allocating channel for 33
[ 75.773040] omap-dma-engine omap-dma-engine: freeing channel for 33

I rolled back to 3.6.8-x4 and now I don’t have the issue I reported before.
I have a camera and a hard disk attached to a BeagleBoard xM and the
problem is that with 3.7 kernel the USB subsystem is unstable causing
that both the camera and the hard disk will eventually stop working.

I wouldn’t recommend 3.7 kernel for production environments.
Though 3.6 works, it still breaks some frames when aquiring them form
a uvc device.