On Wednesday 09 May 2007, Laurent Pinchart wrote: > I wasn't aware of those functions. Just to make sure I get this right, am I > right to say that URB buffers should be allocated as contiguous cache > coherent physical memory (using usb_buffer_alloc, which in turns call > dma_alloc_coherent for big DMAable buffers)
Not many applications need cache-coherent buffers. Few of them involve "big" transfers. > or as normal memory using scatter-gather routines ? Likewise not many stacks hand you scatterlists. If you get a scatterlist, there's no real option about how to do that I/O: either dma map yourself, or let usbcore handle it for you (using the usb_sg_* calls) > I currently allocate big bulk buffers using usb_buffer_alloc, which puts a > lot > of pressure on the memory allocator. Bad answer, unless you really need that kind of buffer. >From what you've said, you don't need them, and should not use those allocator calls. > Using scatter-gather mappings would > help. However, if I'm not mistaken, the usb_sg_* routines are designed for > synchronous use (with usb_sg_wait), and thus can't be used for streaming > data. Right. Scatterlists come from the block layer, which doesn't stream. - Dave ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ [email protected] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
