Re: [PATCH v6 03/11] arm64: realm: Query IPA size from the RMM

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 10/5/24 12:42 AM, 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.

Reviewed-by: Catalin Marinas <catalin.marinas@xxxxxxx>
Reviewed-by: Gavin Shan <gshan@xxxxxxxxxx>
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 v4:
  * Make PROT_NS_SHARED check is_realm_world() to reduce impact on
    non-CCA systems.
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 | 4 ++++
  arch/arm64/include/asm/rsi.h          | 2 +-
  arch/arm64/kernel/rsi.c               | 8 ++++++++
  3 files changed, 13 insertions(+), 1 deletion(-)


[...]

diff --git a/arch/arm64/kernel/rsi.c b/arch/arm64/kernel/rsi.c
index 9bf757b4b00c..a6495a64d9bb 100644
--- a/arch/arm64/kernel/rsi.c
+++ b/arch/arm64/kernel/rsi.c
@@ -8,6 +8,11 @@
  #include <linux/psci.h>
  #include <asm/rsi.h>
+struct realm_config config;
+

Nit: I think this variable is file-scoped since it has a generic name.
In this case, 'static' is needed to match with the scope.

+unsigned long prot_ns_shared;
+EXPORT_SYMBOL(prot_ns_shared);
+
  DEFINE_STATIC_KEY_FALSE_RO(rsi_present);
  EXPORT_SYMBOL(rsi_present);
@@ -67,6 +72,9 @@ void __init arm64_rsi_init(void)
  		return;
  	if (!rsi_version_matches())
  		return;
+	if (WARN_ON(rsi_get_realm_config(&config)))
+		return;
+	prot_ns_shared = BIT(config.ipa_bits - 1);
arm64_rsi_setup_memory();

Thanks,
Gavin





[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux