Re: Hard-coded virtual address used by dma_alloc_coherent
From: Remi Machet <hidden>
Date: 2008-07-24 21:43:35
On Thu, 2008-07-24 at 14:29 -0500, Scott Wood wrote:
Remi Machet wrote:quoted
I have noticed that the DMA allocation for non-coherent PowerPC architecture is using a hard coded virtual memory address for its memory pool. This address is typically 0xFF100000 (set by CONFIG_CONSISTENT_START) and can conflict with early ioremap in systems that enable HIGHMEM. Is there any reason why we have to use an arbitrary virtual address ? If the virtual address must be known at compile time, can't we use fixmap ?The hardcoded address predates when fixmap was added to powerpc. It should be updated to use fixmap.
Ok, I will look into that.
quoted
I also can't figure out why we need to use a virtual address known at compilation time and cannot just allocate pages using get_free_pages and mark them as non cacheable and non swappable.We probably don't need a compile-time address, though we can't just change the page attributes in-place as the pages will often covered by large TLB entries.
If we use alloc_pages to allocate the physical memory and get_vm_area to get a virtual address (and its associated PTE), wouldn't map_vm_area take care of breaking the TLB into smaller chunks if necessary ? Remi