fix(realm): fix issue in rtt teardown
Use IPA WIDTH to decide if adr is protected
or unprotected. Do not treat ripas empty as unprotected adr
Change-Id: Ia57a0ddb12a76e4eec9a1c03e9302d959dd0ac31
Signed-off-by: Shruti Gupta <shruti.gupta@arm.com>
diff --git a/tftf/tests/runtime_services/host_realm_managment/host_realm_rmi.c b/tftf/tests/runtime_services/host_realm_managment/host_realm_rmi.c
index 3b59bf0..53b55fe 100644
--- a/tftf/tests/runtime_services/host_realm_managment/host_realm_rmi.c
+++ b/tftf/tests/runtime_services/host_realm_managment/host_realm_rmi.c
@@ -301,6 +301,11 @@
return (1UL << RTT_LEVEL_SHIFT(level));
}
+static inline bool ipa_is_ns(u_register_t addr, u_register_t rmm_feat_reg0)
+{
+ return (addr >> (EXTRACT(RMI_FEATURE_REGISTER_0_S2SZ, rmm_feat_reg0) - 1UL) == 1UL);
+}
+
static inline u_register_t host_realm_rtt_create(struct realm *realm,
u_register_t addr,
u_register_t level,
@@ -649,7 +654,8 @@
switch (rtt.state) {
case RMI_ASSIGNED:
- if (rtt.ripas == RMI_EMPTY) {
+ if (ipa_is_ns(map_addr, realm->rmm_feat_reg0)) {
+
ret = host_rmi_rtt_unmap_unprotected(
rd,
map_addr,