arm/arm64: KVM: Implement Stage-2 page aging
authorMarc Zyngier <marc.zyngier@arm.com>
Thu, 12 Mar 2015 18:16:51 +0000 (18:16 +0000)
committerChristoffer Dall <christoffer.dall@linaro.org>
Thu, 12 Mar 2015 21:34:43 +0000 (22:34 +0100)
commit35307b9a5f7ebcc8d8db41c73b69c131b48ace2b
tree42cf3a7b7177139fe59d764893e0556487b5ba72
parent1d2ebaccc741a299abfafb848414b01d190f4e33
arm/arm64: KVM: Implement Stage-2 page aging

Until now, KVM/arm didn't care much for page aging (who was swapping
anyway?), and simply provided empty hooks to the core KVM code. With
server-type systems now being available, things are quite different.

This patch implements very simple support for page aging, by clearing
the Access flag in the Stage-2 page tables. On access fault, the current
fault handling will write the PTE or PMD again, putting the Access flag
back on.

It should be possible to implement a much faster handling for Access
faults, but that's left for a later patch.

With this in place, performance in VMs is degraded much more gracefully.

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