parisc: fixes and cleanups in page cache flushing (3/4)
authorJohn David Anglin <dave.anglin@bell.net>
Sun, 3 Feb 2013 23:01:47 +0000 (23:01 +0000)
committerHelge Deller <deller@gmx.de>
Wed, 20 Feb 2013 21:49:38 +0000 (22:49 +0100)
commit6d2439d9558e259822fb487ec274cc9e362e6a81
treed00a002e7526cb7729c9bf5b297833c2eee8ef85
parent6d2ddc2f9414d5ad0d3f014416020579ccce1baf
parisc: fixes and cleanups in page cache flushing (3/4)

flush_cache_mm, for the non current case also uses flush_dcache_page_asm
and flush_icache_page_asm which are TMPALIAS flushes.

For the non current case, the algorithm used by get_ptep is derived from the
vmalloc_to_page implementation in vmalloc.c.  It is essentially a generic page
table lookup.  The other alternative was to duplicate the lookup in entry.S.
The break point for switching to a full cache flush is somewhat arbitrary.  The
same approach is used in flush_cache_range for non current case.  In a GCC
build and check, many small programs are executed and this change provided a
significant performance enhancement, e.g. GCC build time was cut almost in half
on a rp3440 at j4.  Previously, we always flushed the entire cache.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
Signed-off-by: Helge Deller <deller@gmx.de>
arch/parisc/kernel/cache.c