With all the page-table infrastructure in place, we can finally increase
the maximum permisable IPA size to 52-bits on 4KB and 16KB page systems
that have FEAT_LPA2.

Signed-off-by: Ryan Roberts <ryan.robe...@arm.com>
---
 arch/arm64/kvm/reset.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/arch/arm64/kvm/reset.c b/arch/arm64/kvm/reset.c
index 5ae18472205a..548756c3f43c 100644
--- a/arch/arm64/kvm/reset.c
+++ b/arch/arm64/kvm/reset.c
@@ -118,7 +118,7 @@ static int kvm_vcpu_finalize_sve(struct kvm_vcpu *vcpu)
                kfree(buf);
                return ret;
        }
-       
+
        vcpu->arch.sve_state = buf;
        vcpu_set_flag(vcpu, VCPU_SVE_FINALIZED);
        return 0;
@@ -361,12 +361,11 @@ int kvm_set_ipa_limit(void)
        parange = cpuid_feature_extract_unsigned_field(mmfr0,
                                ID_AA64MMFR0_EL1_PARANGE_SHIFT);
        /*
-        * IPA size beyond 48 bits could not be supported
-        * on either 4K or 16K page size. Hence let's cap
-        * it to 48 bits, in case it's reported as larger
-        * on the system.
+        * IPA size beyond 48 bits for 4K and 16K page size is only supported
+        * when LPA2 is available. So if we have LPA2, enable it, else cap to 48
+        * bits, in case it's reported as larger on the system.
         */
-       if (PAGE_SIZE != SZ_64K)
+       if (!kvm_supports_stage2_lpa2(mmfr0) && PAGE_SIZE != SZ_64K)
                parange = min(parange, (unsigned 
int)ID_AA64MMFR0_EL1_PARANGE_48);
 
        /*
-- 
2.25.1

_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm

Reply via email to