[PATCH v15 05/37] KVM: arm64: CCA: Check for LPA2 support
Suzuki K Poulose
suzuki.poulose at arm.com
Thu Jul 16 02:23:32 PDT 2026
On 15/07/2026 15:28, Steven Price wrote:
> If KVM has enabled LPA2 support then check that the RMM also supports
> it. If there is a mismatch then disable support for realm guests as the
> VMM may attempt to create a guest which is incompatible with the RMM.
>
We may be able to relax this in the future with the UNPROT MAP/UNMAP
RMI ABIs now accepting the OutputAddress and Attributes separately
and gracefully handle cases where the requested IPA size exceeds
the RMM limit.
But practically I don't see why we should support it. So :
> Signed-off-by: Steven Price <steven.price at arm.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose at arm.com>
> ---
> v15:
> * Extend rmi_has_feature() to take the register number and check the
> presence of SHA-256 support which is default.
> v13:
> * New patch
> ---
> arch/arm64/kvm/rmi.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/arch/arm64/kvm/rmi.c b/arch/arm64/kvm/rmi.c
> index 384991d69f78..247c4f033945 100644
> --- a/arch/arm64/kvm/rmi.c
> +++ b/arch/arm64/kvm/rmi.c
> @@ -5,9 +5,31 @@
>
> #include <linux/kvm_host.h>
>
> +#include <asm/kvm_pgtable.h>
> #include <asm/rmi_cmds.h>
> #include <asm/virt.h>
>
> +static bool rmi_has_feature(int reg, unsigned long feature)
> +{
> + return !!u64_get_bits(rmi_feat_reg(reg), feature);
> +}
> +
> +static int rmm_check_features(void)
> +{
> + if (kvm_lpa2_is_enabled() &&
> + !rmi_has_feature(0, RMI_FEATURE_REGISTER_0_LPA2)) {
> + kvm_err("RMM doesn't support LPA2\n");
> + return -ENXIO;
> + }
> +
> + if (!rmi_has_feature(1, RMI_FEATURE_REGISTER_1_HASH_SHA_256)) {
> + kvm_err("RMM doesn't support SHA-256 measurements\n");
> + return -ENXIO;
> + }
> +
> + return 0;
> +}
> +
> void kvm_init_rmi(void)
> {
> /*
> @@ -20,5 +42,8 @@ void kvm_init_rmi(void)
> if (!is_rmi_available())
> return;
>
> + if (rmm_check_features())
> + return;
> +
> /* Future patch will enable static branch kvm_rmi_is_available */
> }
More information about the linux-arm-kernel
mailing list