ARC: [mm] optimise icache flush for kernel mappings
authorVineet Gupta <vgupta@synopsys.com>
Fri, 12 Apr 2013 06:48:25 +0000 (12:18 +0530)
committerVineet Gupta <vgupta@synopsys.com>
Tue, 7 May 2013 13:38:12 +0000 (19:08 +0530)
commit7586bf7286097cd47299c44192c30e01f0d55391
tree34f071c6a0f34bd7c256e332550c25887d36fb81
parent24603fdd19d978fcc0d089d92370ee1aa3a71e84
ARC: [mm] optimise icache flush for kernel mappings

This change continues the theme from prev commit - this time icache
handling for kernel's own code modification (vmalloc: loadable modules,
breakpoints for kprobes/kgdb...)

flush_icache_range() calls the CDU icache helper with vaddr to enable
exact line invalidate.

For a true kernel-virtual mapping, the vaddr is actually virtual hence
valid as index into cache. For kprobes breakpoint however, the vaddr arg
is actually paddr - since that's how normal kernel is mapped in ARC
memory map.  This implies that CDU will use the same addr for
indexing as for tag match - which is fine since kernel code would only
have that "implicit" mapping and none other.

This should speed up module loading significantly - specially on default
ARC700 icache configurations (32k) which alias.

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/mm/cache_arc700.c