Hard-coded virtual address used by dma_alloc_coherent

Remi Machet rmachet at slac.stanford.edu
Fri Jul 25 07:43:25 EST 2008


On Thu, 2008-07-24 at 14:29 -0500, Scott Wood wrote:
> Remi Machet wrote:
> > 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.

> > 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






More information about the Linuxppc-dev mailing list