On Sun, Jan 5, 2014 at 8:02 AM, Peter Teoh <[email protected]> wrote:
> I think this discussion should help you: > > http://e2e.ti.com/support/embedded/linux/f/354/t/89419.aspx > > other failures: > > http://stackoverflow.com/questions/14625919/allocating-a-large-dma-buffer > > and some guideline here: > > https://www.kernel.org/doc/Documentation/DMA-API.txt > > https://lkml.org/lkml/2011/3/25/19 > > As I don't have any specific crashdump or error information, nothing I can > comment further about your problem. It is quite difficult to make general > comment. > > > > On Fri, Jan 3, 2014 at 7:20 AM, Steven Bell <[email protected]> wrote: > >> Hi, >> >> I'm working on a device driver for a video device which continuously >> reads and writes image frames using DMA. The frames are fairly large, in >> the range of 2-8MB, and I would like the buffers for them to be contiguous >> because of my hardware. My understanding is that using the contiguous >> memory allocator is the current "right way" to get the buffers, and that >> CMA operates entirely behind the scenes when calls are made to >> dma_alloc_coherent(). >> >> However, it seems that for this system, a streaming DMA setup would be >> more appropriate. The buffer gets filled with data once, handed to the >> device, and then isn't touched again until it gets reused with new data. >> The resources I've read have hinted that streaming DMA has some performance >> benefits over coherent DMA, so this seems like the way to go. But I >> haven't seen any discussion of how to use CMA with streaming DMA (or >> whether such a thing is even necessary). >> >> Does the CMA also work behind get_free_pages, or other kernel memory >> allocation methods? Does it matter? The kernel newbies page on memory >> allocation (http://kernelnewbies.org/KernelMemoryAllocation) says that >> get_free_pages up to about 8MB are ok. Is that a generalization based on >> typical memory fragmentation, or a guarantee? >> >> Thanks, >> Steven >> >> _______________________________________________ >> Kernelnewbies mailing list >> [email protected] >> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >> >> > > > -- > Regards, > Peter Teoh > Thanks for the reply and the links. Unfortunately, they don't really answer my basic question - which is a general conceptual question, not a specific error or problem that I'm running into. I want to allocate a contiguous 8MB buffer and use it for streaming DMA. I don't need or want a coherent buffer, since I'm using streaming DMA, and so dma_alloc_coherent() seems like the wrong method to use. Is that true, or should I use it anyway? If not, what method do I use? The DMA-API and DMA-API-HOWTO documents don't seem to say anything about allocating memory for streaming DMA operations. Have I missed something? Thanks, Steven
_______________________________________________ Kernelnewbies mailing list [email protected] http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
