arm/arm64: KVM: Fix VTTBR_BADDR_MASK and pgd alloc
authorJoel Schopp <joel.schopp@amd.com>
Wed, 9 Jul 2014 16:17:04 +0000 (11:17 -0500)
committerJiri Slaby <jslaby@suse.cz>
Thu, 30 Apr 2015 09:15:10 +0000 (11:15 +0200)
commit628d3e68cb2113cb0c4b935745e35a2efb7e944b
tree4f140f1192c4a08ca19eeb34cf6c51f9ceac17a2
parent64b4f742f29eb19cd8c669703de4102a67228076
arm/arm64: KVM: Fix VTTBR_BADDR_MASK and pgd alloc

commit dbff124e29fa24aff9705b354b5f4648cd96e0bb upstream.

The current aarch64 calculation for VTTBR_BADDR_MASK masks only 39 bits
and not all the bits in the PA range. This is clearly a bug that
manifests itself on systems that allocate memory in the higher address
space range.

 [ Modified from Joel's original patch to be based on PHYS_MASK_SHIFT
   instead of a hard-coded value and to move the alignment check of the
   allocation to mmu.c.  Also added a comment explaining why we hardcode
   the IPA range and changed the stage-2 pgd allocation to be based on
   the 40 bit IPA range instead of the maximum possible 48 bit PA range.
   - Christoffer ]

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Joel Schopp <joel.schopp@amd.com>
Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
Signed-off-by: Shannon Zhao <shannon.zhao@linaro.org>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
arch/arm/kvm/arm.c
arch/arm64/include/asm/kvm_arm.h
arch/arm64/include/asm/kvm_mmu.h