arm/arm64: KVM: Use set/way op trapping to track the state of the caches
authorMarc Zyngier <marc.zyngier@arm.com>
Fri, 19 Dec 2014 16:05:31 +0000 (16:05 +0000)
committerChristoffer Dall <christoffer.dall@linaro.org>
Thu, 29 Jan 2015 22:24:56 +0000 (23:24 +0100)
commit3c1e716508335eb132c9349cb1a1716c8f7e3d2e
tree39aa2fe691caa61a34cef1ac7d09f3348249ddb5
parentf3747379accba8e95d70cec0eae0582c8c182050
arm/arm64: KVM: Use set/way op trapping to track the state of the caches

Trying to emulate the behaviour of set/way cache ops is fairly
pointless, as there are too many ways we can end-up missing stuff.
Also, there is some system caches out there that simply ignore
set/way operations.

So instead of trying to implement them, let's convert it to VA ops,
and use them as a way to re-enable the trapping of VM ops. That way,
we can detect the point when the MMU/caches are turned off, and do
a full VM flush (which is what the guest was trying to do anyway).

This allows a 32bit zImage to boot on the APM thingy, and will
probably help bootloaders in general.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
14 files changed:
arch/arm/include/asm/kvm_emulate.h
arch/arm/include/asm/kvm_host.h
arch/arm/include/asm/kvm_mmu.h
arch/arm/kvm/arm.c
arch/arm/kvm/coproc.c
arch/arm/kvm/coproc.h
arch/arm/kvm/coproc_a15.c
arch/arm/kvm/coproc_a7.c
arch/arm/kvm/mmu.c
arch/arm/kvm/trace.h
arch/arm64/include/asm/kvm_emulate.h
arch/arm64/include/asm/kvm_host.h
arch/arm64/include/asm/kvm_mmu.h
arch/arm64/kvm/sys_regs.c