These patches fix some general MIPS Enhanced Virtual Addressing (EVA) issues, with the aim of allowing KVM to be fixed to work on EVA host kernels. Patches 1-3 improve the CP0_EBase handling, particularly in relation to the Write Gate (WG) bit which allows the upper bits (63:30 on MIPS64, 31:30 on MIPS32) to be modified. This allows CP0_EBase to be set correctly with EVA, even when the boot time allocated exception vector is not in KSeg0. They will also help with Matt's upcoming rproc patches. Patch 4 then drops the EVA specific L2 cache flushing from flush_icache_range(), which appeared to work around the partial CP0_EBase assignment fixed by patch 3. Patches 5-9 fix the semantics of flush_icache_range(), which only works on user pointers with EVA. We add a new __flush_icache_user_range() API in patch 5, fix users of flush_icache_range() with user pointers in patches 6-8, and finally separate the implementations so that flush_icache_range() works with kernel addresses in patch 9. Cc: Ralf Baechle <ralf@xxxxxxxxxxxxxx> Cc: Matt Redfearn <matt.redfearn@xxxxxxxxxx> Cc: Paolo Bonzini <pbonzini@xxxxxxxxxx> Cc: "Radim Krčmář" <rkrcmar@xxxxxxxxxx> Cc: Leonid Yegoshin <leonid.yegoshin@xxxxxxxxxx> Cc: linux-mips@xxxxxxxxxxxxxx Cc: kvm@xxxxxxxxxxxxxxx James Hogan (8): MIPS: traps: 64bit kernels should read CP0_EBase 64bit MIPS: traps: Convert ebase to KSeg0 MIPS: c-r4k: Drop bc_wback_inv() from icache flush MIPS: c-r4k: Split user/kernel flush_icache_range() MIPS: cacheflush: Use __flush_icache_user_range() MIPS: uprobes: Flush icache via kernel address MIPS: KVM: Use __local_flush_icache_user_range() MIPS: c-r4k: Fix flush_icache_range() for EVA Matt Redfearn (1): MIPS: traps: Ensure full EBase is written arch/mips/include/asm/cacheflush.h | 5 +++- arch/mips/kernel/traps.c | 49 +++++++++++++++++++++++++++-- arch/mips/kernel/uprobes.c | 13 ++------ arch/mips/kvm/dyntrans.c | 4 +- arch/mips/mm/c-octeon.c | 2 +- arch/mips/mm/c-r3k.c | 2 +- arch/mips/mm/c-r4k.c | 52 ++++++++++++++++++++----------- arch/mips/mm/c-tx39.c | 3 ++- arch/mips/mm/cache.c | 6 +++- 9 files changed, 104 insertions(+), 32 deletions(-) -- git-series 0.8.10