diff options
author | Marc Zyngier <maz@kernel.org> | 2022-12-05 15:19:27 +0100 |
---|---|---|
committer | Marc Zyngier <maz@kernel.org> | 2022-12-05 15:19:27 +0100 |
commit | 3bbcc8cce27ae6d9f9e3878eeeef9f4445aa69d2 (patch) | |
tree | 88c45e093e3d71d020190ecc571f8f12d4ce1eab /arch/arm64/include | |
parent | Merge branch kvm-arm64/selftest/access-tracking into kvmarm-master/next (diff) | |
parent | KVM: arm64: Fix benign bug with incorrect use of VA_BITS (diff) | |
download | linux-3bbcc8cce27ae6d9f9e3878eeeef9f4445aa69d2.tar.xz linux-3bbcc8cce27ae6d9f9e3878eeeef9f4445aa69d2.zip |
Merge branch kvm-arm64/52bit-fixes into kvmarm-master/next
* kvm-arm64/52bit-fixes:
: .
: 52bit PA fixes, courtesy of Ryan Roberts. From the cover letter:
:
: "I've been adding support for FEAT_LPA2 to KVM and as part of that work have been
: testing various (84) configurations of HW, host and guest kernels on FVP. This
: has thrown up a couple of pre-existing bugs, for which the fixes are provided."
: .
KVM: arm64: Fix benign bug with incorrect use of VA_BITS
KVM: arm64: Fix PAR_TO_HPFAR() to work independently of PA_BITS.
KVM: arm64: Fix kvm init failure when mode!=vhe and VA_BITS=52.
Signed-off-by: Marc Zyngier <maz@kernel.org>
Diffstat (limited to 'arch/arm64/include')
-rw-r--r-- | arch/arm64/include/asm/kvm_arm.h | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/arch/arm64/include/asm/kvm_arm.h b/arch/arm64/include/asm/kvm_arm.h index 8aa8492dafc0..a82f2493a72b 100644 --- a/arch/arm64/include/asm/kvm_arm.h +++ b/arch/arm64/include/asm/kvm_arm.h @@ -340,9 +340,13 @@ * We have * PAR [PA_Shift - 1 : 12] = PA [PA_Shift - 1 : 12] * HPFAR [PA_Shift - 9 : 4] = FIPA [PA_Shift - 1 : 12] + * + * Always assume 52 bit PA since at this point, we don't know how many PA bits + * the page table has been set up for. This should be safe since unused address + * bits in PAR are res0. */ #define PAR_TO_HPFAR(par) \ - (((par) & GENMASK_ULL(PHYS_MASK_SHIFT - 1, 12)) >> 8) + (((par) & GENMASK_ULL(52 - 1, 12)) >> 8) #define ECN(x) { ESR_ELx_EC_##x, #x } |