arm/arm64: KVM: Handle out-of-RAM cache maintenance as a NOP
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 29 Jan 2016 15:01:28 +0000 (15:01 +0000)
committerMarc Zyngier <marc.zyngier@arm.com>
Mon, 29 Feb 2016 18:34:15 +0000 (18:34 +0000)
commit57c841f131ef295b583365d2fddd6b0d16e82c10
treee015fcf1eccbcc2d01f87762cddb29738e1a3bf8
parent402f352876ba0df574533e59d72fc3e9871f791a
arm/arm64: KVM: Handle out-of-RAM cache maintenance as a NOP

So far, our handling of cache maintenance by VA has been pretty
simple: Either the access is in the guest RAM and generates a S2
fault, which results in the page being mapped RW, or we go down
the io_mem_abort() path, and nuke the guest.

The first one is fine, but the second one is extremely weird.
Treating the CM as an I/O is wrong, and nothing in the ARM ARM
indicates that we should generate a fault for something that
cannot end-up in the cache anyway (even if the guest maps it,
it will keep on faulting at stage-2 for emulation).

So let's just skip this instruction, and let the guest get away
with it.

Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
arch/arm/include/asm/kvm_emulate.h
arch/arm/kvm/mmu.c
arch/arm64/include/asm/kvm_emulate.h