> I have looked at the code for dma_alloc_coherent etc and it seems to me that > it's returning null because there isn't the space available to allocate the > requested memory. You might have to increase the consistent(or dma) memory size. In recent kernels its defined by CONSISTENT_DMA_SIZE (ach/arm/include/asm/memory.h). Which kernel version are you using? You might have to override this value to match your needs. Are there any other drivers that allocate using dma_alloc_coherent? > I was thinking that this might be the problem, but in order to do that I'd > have to put the alloc_bootmem in core kernel code wouldn't I? This doesn't > seem very appealing. Yes. Nobody wants to do that. Best option is to use dma_alloc_coherent. Alternatively you can use kmalloc in your driver itself and then use dma_map_single/dma_unmap_single. > Yes, I was aware that dma uses physical addresses, isn't that what > alloc_bootmem returns? I'm not aware of dma_map_single etc I will look at > that soon. No alloc_bootmem doesnt return physical addresses. It returns virtual address. That is the reason you need to use dma_map_single and dma_unmap_single. These apis return physical address(dma_addr_t) for the corresponding virtual address. Also they flush/invalidate the cache so there are no side effects. But dma_alloc_coherent gives you a memory whose cache lines are disabled, so you wouldnt have to worry about caching side effects. -syed _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies