Highmem issues with MMC filesystem

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Mar 19 10:46:47 EDT 2010


On Fri, Mar 19, 2010 at 02:41:17PM +0000, Catalin Marinas wrote:
> On Thu, 2010-03-18 at 13:20 +0000, Nicolas Pitre wrote:
> > The only way a highmem page can be unmapped is through kunmap_atomic()
> > where an explicit __cpuc_flush_dcache_area() is performed, or through
> > flush_all_zero_pkmaps() where flush_cache_kmaps() translates into
> > flush_cache_all().
> 
> The thing that I couldn't fully understand with the kunmap_atomic()
> function is that there is a path (when kvaddr < FIXADDR_START) where no
> cache flushing occurs. Can this not happen?

kunmap interfaces are not for cache flushing; the cache flushing is
only there to ensure consistency when unmapping a mapping on VIVT CPUs.

If VIVT CPUs could do writebacks without a valid mapping in place,
then the cache flush for highmem pages would not be required.



More information about the linux-arm-kernel mailing list