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_lpa2_is_enabled() && PAGE_SIZE != SZ_64K)
                parange = min(parange, (unsigned int)ID_AA64MMFR0_EL1_PARANGE_48);
 
        /*