Re: [PATCH v4 04/15] arm64: realm: Query IPA size from the RMM

From: Will Deacon
Date: Tue Jul 09 2024 - 06:53:54 EST


On Mon, Jul 01, 2024 at 10:54:54AM +0100, Steven Price wrote:
> The top bit of the configured IPA size is used as an attribute to
> control whether the address is protected or shared. Query the
> configuration from the RMM to assertain which bit this is.
>
> Co-developed-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@xxxxxxx>
> Signed-off-by: Steven Price <steven.price@xxxxxxx>
> ---
> Changes since v2:
> * Drop unneeded extra brackets from PROT_NS_SHARED.
> * Drop the explicit alignment from 'config' as struct realm_config now
> specifies the alignment.
> ---
> arch/arm64/include/asm/pgtable-prot.h | 3 +++
> arch/arm64/kernel/rsi.c | 8 ++++++++
> 2 files changed, 11 insertions(+)
>
> diff --git a/arch/arm64/include/asm/pgtable-prot.h b/arch/arm64/include/asm/pgtable-prot.h
> index b11cfb9fdd37..6c29f3b32eba 100644
> --- a/arch/arm64/include/asm/pgtable-prot.h
> +++ b/arch/arm64/include/asm/pgtable-prot.h
> @@ -70,6 +70,9 @@
> #include <asm/pgtable-types.h>
>
> extern bool arm64_use_ng_mappings;
> +extern unsigned long prot_ns_shared;
> +
> +#define PROT_NS_SHARED (prot_ns_shared)

Since the _vast_ majority of Linux systems won't be running in a realm,
can we use a static key to avoid loading a constant each time?

Will