Highmem issues with MMC filesystem

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


On Fri, Mar 19, 2010 at 02:52:00PM +0000, Catalin Marinas wrote:
> > 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.
> 
> I agree, but then why don't we conditionally call
> __cpuc_flush_dcache_area() in kunmap_atomic() so that we avoid this
> flush on non-aliasing VIPT?

Probably because highmem was written at the time for VIVT CPUs.  I'm sure
Nicolas will accept patches to improve performance of highmem for VIPT.



More information about the linux-arm-kernel mailing list