[PATCH v2] KVM: arm: reserve bit in KVM_REG_ARM encoding for secure/nonsecure

Peter Maydell peter.maydell at linaro.org
Thu Mar 15 10:57:23 PDT 2018


On 6 March 2018 at 19:47, Peter Maydell <peter.maydell at linaro.org> wrote:
> We have a KVM_REG_ARM encoding that we use to expose KVM guest registers
> to userspace. Define that bit 28 in this encoding indicates secure vs
> nonsecure, so we can distinguish the secure and nonsecure banked versions
> of a banked AArch32 register.
>
> For KVM currently, all guest registers are nonsecure, but defining
> the bit is useful for userspace. In particular, QEMU uses this
> encoding as part of its on-the-wire migration format, and needs to be
> able to describe secure-bank registers when it is migrating (fully
> emulated) EL3-enabled CPUs.
>
> Signed-off-by: Peter Maydell <peter.maydell at linaro.org>
> ---
> v1->v2: expanded comment

Ping -- is this version OK, Marc?

> ---
>  arch/arm/include/uapi/asm/kvm.h | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/arch/arm/include/uapi/asm/kvm.h b/arch/arm/include/uapi/asm/kvm.h
> index 6edd177bb1c7..2ba95d6fe852 100644
> --- a/arch/arm/include/uapi/asm/kvm.h
> +++ b/arch/arm/include/uapi/asm/kvm.h
> @@ -135,6 +135,15 @@ struct kvm_arch_memory_slot {
>  #define KVM_REG_ARM_CRM_SHIFT          7
>  #define KVM_REG_ARM_32_CRN_MASK                0x0000000000007800
>  #define KVM_REG_ARM_32_CRN_SHIFT       11
> +/*
> + * For KVM currently all guest registers are nonsecure, but we reserve a bit
> + * in the encoding to distinguish secure from nonsecure for AArch32 system
> + * registers that are banked by security. This is 1 for the secure banked
> + * register, and 0 for the nonsecure banked register or if the register is
> + * not banked by security.
> + */
> +#define KVM_REG_ARM_SECURE_MASK        0x0000000010000000
> +#define KVM_REG_ARM_SECURE_SHIFT       28
>
>  #define ARM_CP15_REG_SHIFT_MASK(x,n) \
>         (((x) << KVM_REG_ARM_ ## n ## _SHIFT) & KVM_REG_ARM_ ## n ## _MASK)
> --
> 2.16.2

thanks
-- PMM



More information about the linux-arm-kernel mailing list