mapping uncached memory
Budhee Jamaich
budheej at gmail.com
Tue Mar 16 19:17:45 EDT 2010
hello,
we are looking for ways to map memory as uncached,
so remote devices reading/writing to this memory will see consistent data.
these are the alternatives we currently see:
1. clean cache after every write to the memory (/invalidate the cache
before every read)
this can be done using dmac_clean/inv_range and outer_clean/inv_range
just like in dma_cache_maint.
btw - what's the difference between the dmac_* and the outer_*
functions ? why both are needed ?
disadvantage: this will be needed to be called before/after every memory access
2. use pgprot_noncached when assigning vma->vm_page_prot in our
driver's mmap method
will that really work ? all memory accesses will be uncached ?
3. use dma_alloc_coherent in some way
cons: documentation says we still need to use cache clean/inv
operations, so this might not really be of any advantage. but if that
is so, what's the idea behind coherent pools of memory ? how does it
work at all ?
what do you say ?
thank you all very much in advance
budhee
More information about the linux-arm-kernel
mailing list