Re: allocating memory at boot

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> 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


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux