test(realm): enhance realm memory exception tests for planes
Extend memory exception tests for planes.
Change-Id: Ifc98b8c67e85b04b36a78f16971d17f05d6a87d2
Signed-off-by: Shruti Gupta <shruti.gupta@arm.com>
diff --git a/realm/realm_payload_main.c b/realm/realm_payload_main.c
index ad98841..e654f1f 100644
--- a/realm/realm_payload_main.c
+++ b/realm/realm_payload_main.c
@@ -271,7 +271,7 @@
void (*func_ptr)(void);
rsi_ripas_type ripas;
- base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
+ base = realm_shared_data_get_my_host_val(HOST_ARG3_INDEX);
rsi_ipa_state_get(base, base + PAGE_SIZE, &new_top, &ripas);
realm_printf("Initial ripas=%u\n", ripas);
/* Causes instruction abort */
@@ -286,7 +286,7 @@
{
u_register_t base, new_top;
rsi_ripas_type ripas;
- base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
+ base = realm_shared_data_get_my_host_val(HOST_ARG3_INDEX);
rsi_ipa_state_get(base, base + PAGE_SIZE, &new_top, &ripas);
realm_printf("Initial ripas=%u\n", ripas);
/* Causes data abort */
@@ -300,7 +300,7 @@
{
u_register_t base, far, esr, elr;
- base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
+ base = realm_shared_data_get_my_host_val(HOST_ARG3_INDEX);
far = read_far_el1();
esr = read_esr_el1();
elr = read_elr_el1();
diff --git a/realm/realm_plane.c b/realm/realm_plane.c
index 3b79aff..656c688 100644
--- a/realm/realm_plane.c
+++ b/realm/realm_plane.c
@@ -19,6 +19,7 @@
static bool is_plane0;
static unsigned int plane_num;
+static bool plane_init[MAX_PLANE_COUNT];
bool realm_is_plane0(void)
{
@@ -168,11 +169,16 @@
run->enter.pc = base;
/* Perm init */
+ if (plane_init[plane_index]) {
+ return true;
+ }
+
ret = rsi_mem_set_perm_value(plane_index, perm_index, PERM_LABEL_RW_upX);
if (ret != RSI_SUCCESS) {
ERROR("rsi_mem_set_perm_value failed %u\n", plane_index);
return false;
}
+ plane_init[plane_index] = true;
return true;
}