test(realm): add initial support for planes

- Added changes to RMI feature register
  and RmiRealmParams for planes
- Updated realm create helpers to support planes

Signed-off-by: Shruti Gupta <shruti.gupta@arm.com>
Change-Id: I505a4a05f222e2a28eed33bded3bae687fc29eec
diff --git a/include/runtime_services/host_realm_managment/host_realm_helper.h b/include/runtime_services/host_realm_managment/host_realm_helper.h
index 168bb0a..6909a4e 100644
--- a/include/runtime_services/host_realm_managment/host_realm_helper.h
+++ b/include/runtime_services/host_realm_managment/host_realm_helper.h
@@ -18,7 +18,8 @@
 		u_register_t feature_flag,
 		long sl,
 		const u_register_t *rec_flag,
-		unsigned int rec_count);
+		unsigned int rec_count,
+		unsigned int num_aux_planes);
 
 /*
  * Creates realm, initializes heap, creates RTTs and also
@@ -29,7 +30,8 @@
 		u_register_t feature_flag,
 		long sl,
 		const u_register_t *rec_flag,
-		unsigned int rec_count);
+		unsigned int rec_count,
+		unsigned int num_aux_planes);
 
 /*
  * Creates realm, initializes heap, creates RTTs,
@@ -40,7 +42,8 @@
 		u_register_t feature_flag,
 		long sl,
 		const u_register_t *rec_flag,
-		unsigned int rec_count);
+		unsigned int rec_count,
+		unsigned int num_aux_planes);
 bool host_destroy_realm(struct realm *realm_ptr);
 void host_rec_send_sgi(struct realm *realm_ptr,
 		unsigned int sgi, unsigned int rec_num);
diff --git a/include/runtime_services/host_realm_managment/host_realm_rmi.h b/include/runtime_services/host_realm_managment/host_realm_rmi.h
index 8f487d0..1c0a621 100644
--- a/include/runtime_services/host_realm_managment/host_realm_rmi.h
+++ b/include/runtime_services/host_realm_managment/host_realm_rmi.h
@@ -398,10 +398,14 @@
 #define RMI_FEATURE_FALSE		0U
 #define RMI_FEATURE_TRUE		1U
 
-/* RmiRealmFlags format */
-#define RMI_REALM_FLAGS_LPA2		BIT(0)
-#define RMI_REALM_FLAGS_SVE		BIT(1)
-#define RMI_REALM_FLAGS_PMU		BIT(2)
+/* RmiRealmFlags0 format */
+#define RMI_REALM_FLAGS0_LPA2		BIT(0)
+#define RMI_REALM_FLAGS0_SVE		BIT(1)
+#define RMI_REALM_FLAGS0_PMU		BIT(2)
+#define RMI_REALM_FLAGS0_DA		BIT(3)
+
+/* RmiRealmFlags1 format */
+#define RMI_REALM_FLAGS1_RTT_TREE_PP	BIT(0)
 
 /* RmiInterfaceVersion type */
 #define RMI_MAJOR_VERSION		0U
@@ -473,14 +477,27 @@
  * Value -1 (0 in case of NUM_BPS and NUM_WPS) indicates not set field,
  * and parameter will be set from the corresponding field of feature register 0.
  */
-#define FEATURE_SVE_VL_SHIFT				32UL
-#define FEATURE_SVE_VL_WIDTH				8UL
-#define FEATURE_NUM_BPS_SHIFT				40UL
-#define FEATURE_NUM_BPS_WIDTH				8UL
-#define FEATURE_NUM_WPS_SHIFT				48UL
-#define FEATURE_NUM_WPS_WIDTH				8UL
-#define FEATURE_PMU_NUM_CTRS_SHIFT			56UL
-#define FEATURE_PMU_NUM_CTRS_WIDTH			8UL
+#define RMI_FEATURE_REGISTER_0_DA			BIT(42)
+
+#define RMI_FEATURE_REGISTER_0_PLANE_RTT_SHIFT		43UL
+#define RMI_FEATURE_REGISTER_0_PLANE_RTT_WIDTH		2UL
+
+#define RMI_FEATURE_REGISTER_0_MAX_NUM_AUX_PLANES_SHIFT	45UL
+#define RMI_FEATURE_REGISTER_0_MAX_NUM_AUX_PLANES_WIDTH	4UL
+
+#define FEATURE_SVE_VL_SHIFT				56UL
+#define FEATURE_SVE_VL_WIDTH				4UL
+#define FEATURE_NUM_BPS_SHIFT				14UL
+#define FEATURE_NUM_BPS_WIDTH				6UL
+#define FEATURE_NUM_WPS_SHIFT				20UL
+#define FEATURE_NUM_WPS_WIDTH				6UL
+#define FEATURE_PMU_NUM_CTRS_SHIFT			35UL
+#define FEATURE_PMU_NUM_CTRS_WIDTH			4UL
+
+/* Possible values for RmiPlaneRttFeature */
+#define RMI_PLANE_RTT_AUX				0UL
+#define RMI_PLANE_RTT_AUX_SINGLE			1UL
+#define RMI_PLANE_RTT_SINGLE				2UL
 
 /* RmiStatusCode types */
 /*
@@ -560,31 +577,41 @@
  */
 struct rmi_realm_params {
 	/* Flags */
-	SET_MEMBER(unsigned long flags, 0, 0x8);		/* Offset 0 */
+	SET_MEMBER(unsigned long flags0, 0, 0x8);			/* Offset 0 */
 	/* Requested IPA width */
-	SET_MEMBER(unsigned int s2sz, 0x8, 0x10);		/* 0x8 */
+	SET_MEMBER(unsigned int s2sz, 0x8, 0x10);			/* 0x8 */
 	/* Requested SVE vector length */
-	SET_MEMBER(unsigned int sve_vl, 0x10, 0x18);		/* 0x10 */
+	SET_MEMBER(unsigned int sve_vl, 0x10, 0x18);			/* 0x10 */
 	/* Requested number of breakpoints */
-	SET_MEMBER(unsigned int num_bps, 0x18, 0x20);		/* 0x18 */
+	SET_MEMBER(unsigned int num_bps, 0x18, 0x20);			/* 0x18 */
 	/* Requested number of watchpoints */
-	SET_MEMBER(unsigned int num_wps, 0x20, 0x28);		/* 0x20 */
+	SET_MEMBER(unsigned int num_wps, 0x20, 0x28);			/* 0x20 */
 	/* Requested number of PMU counters */
-	SET_MEMBER(unsigned int pmu_num_ctrs, 0x28, 0x30);	/* 0x28 */
+	SET_MEMBER(unsigned int pmu_num_ctrs, 0x28, 0x30);		/* 0x28 */
 	/* Measurement algorithm */
-	SET_MEMBER(unsigned char hash_algo, 0x30, 0x400);	/* 0x30 */
+	SET_MEMBER(unsigned char algorithm, 0x30, 0x38);		/* 0x30 */
+	/* Number of auxiliary Planes */
+	SET_MEMBER(unsigned int num_aux_planes, 0x38, 0x400);		/* 0x38 */
 	/* Realm Personalization Value */
-	SET_MEMBER(unsigned char rpv[RPV_SIZE], 0x400, 0x800);	/* 0x400 */
+	SET_MEMBER(unsigned char rpv[RPV_SIZE], 0x400, 0x800);		/* 0x400 */
 	SET_MEMBER(struct {
-		/* Virtual Machine Identifier */
-		unsigned short vmid;				/* 0x800 */
-		/* Realm Translation Table base */
-		u_register_t rtt_base;				/* 0x808 */
-		/* RTT starting level */
-		long rtt_level_start;				/* 0x810 */
-		/* Number of starting level RTTs */
-		unsigned int rtt_num_start;			/* 0x818 */
-	}, 0x800, 0x1000);
+			/* Virtual Machine Identifier */
+			unsigned short vmid;				/* 0x800 */
+			/* Realm Translation Table base */
+			unsigned long rtt_base;				/* 0x808 */
+			/* RTT starting level */
+			long rtt_level_start;				/* 0x810 */
+			/* Number of starting level RTTs */
+			unsigned int rtt_num_start;			/* 0x818 */
+		   }, 0x800, 0x820);
+	/* Flags */
+	SET_MEMBER(unsigned long flags1, 0x820, 0x828);			/* 0x820 */
+	/* MECID */
+	SET_MEMBER(long mecid, 0x828, 0xF00);				/* 0x828 */
+	/* Auxiliary Virtual Machine Identifiers */
+	SET_MEMBER(unsigned short aux_vmid[3], 0xF00, 0xF80);		/* 0xF00 */
+	/* Base address of auxiliary RTTs */
+	SET_MEMBER(unsigned long aux_rtt_base[3], 0xF80, 0x1000);	/* 0xF80 */
 };
 
 /*
@@ -959,6 +986,7 @@
 struct realm {
 	u_register_t     host_shared_data;
 	unsigned int     rec_count;
+	unsigned int     num_aux_planes;
 	u_register_t     par_base;
 	u_register_t     par_size;
 	u_register_t     rd;
@@ -979,6 +1007,7 @@
 	uint8_t          pmu_num_ctrs;
 	bool             payload_created;
 	bool             shared_mem_created;
+	bool             rtt_tree_single;
 	unsigned short   vmid;
 	enum realm_state state;
 	long start_level;
diff --git a/include/runtime_services/host_realm_managment/realm_def.h b/include/runtime_services/host_realm_managment/realm_def.h
index 226034f..3bd166a 100644
--- a/include/runtime_services/host_realm_managment/realm_def.h
+++ b/include/runtime_services/host_realm_managment/realm_def.h
@@ -10,7 +10,7 @@
 
 #include <xlat_tables_defs.h>
 
-/* 1MB for Realm payload as a default value */
+/* 1 MB for Realm payload as a default value */
 #define REALM_MAX_LOAD_IMG_SIZE		U(0x100000)
 #define REALM_STACK_SIZE		0x1000U
 #define DATA_PATTERN_1			0x12345678U
@@ -19,7 +19,8 @@
 #define REALM_ERROR			1U
 #define MAX_REC_COUNT			17U
 #define MAX_REALM_COUNT			U(2)
-
+#define MAX_AUX_PLANE_COUNT		U(3)
+#define MAX_PLANE_COUNT			MAX_AUX_PLANE_COUNT + U(1)
 /* Only support 4KB at the moment */
 
 #if (PAGE_SIZE == PAGE_SIZE_4KB)
diff --git a/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c b/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
index 9c7ceba..6149512 100644
--- a/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
+++ b/tftf/tests/runtime_services/host_realm_managment/host_realm_helper.c
@@ -135,7 +135,8 @@
 			       u_register_t feature_flag,
 			       long sl,
 			       const u_register_t *rec_flag,
-			       unsigned int rec_count)
+			       unsigned int rec_count,
+			       unsigned int num_aux_planes)
 {
 	int8_t value;
 
@@ -169,6 +170,21 @@
 				EXTRACT(RMI_FEATURE_REGISTER_0_S2SZ, feature_flag));
 	}
 
+	realm_ptr->rtt_tree_single = false;
+	if (num_aux_planes > 0U) {
+		if (EXTRACT(RMI_FEATURE_REGISTER_0_PLANE_RTT, feature_flag) >=
+							RMI_PLANE_RTT_SINGLE) {
+			ERROR("S2POE not suported on TFTF\n");
+			return false;
+		}
+
+		/*
+		 * @TODO: once S2POE is supported, this should be a parameter
+		 * so it can be tested with and without support for auxiliary
+		 * tables.
+		 */
+	}
+
 	/* Disable PMU if not required */
 	if ((feature_flag & RMI_FEATURE_REGISTER_0_PMU_EN) == 0UL) {
 		realm_ptr->rmm_feat_reg0 &= ~RMI_FEATURE_REGISTER_0_PMU_EN;
@@ -246,6 +262,12 @@
 
 	realm_ptr->start_level = sl;
 
+	if (num_aux_planes > MAX_AUX_PLANE_COUNT) {
+		ERROR("Invalid aux plane count\n");
+		return false;
+	}
+	realm_ptr->num_aux_planes = num_aux_planes;
+
 	/* Create Realm */
 	if (host_realm_create(realm_ptr) != REALM_SUCCESS) {
 		ERROR("%s() failed\n", "host_realm_create");
@@ -283,7 +305,8 @@
 			       u_register_t feature_flag,
 			       long sl,
 			       const u_register_t *rec_flag,
-			       unsigned int rec_count)
+			       unsigned int rec_count,
+			       unsigned int num_aux_planes)
 {
 	bool ret;
 
@@ -292,7 +315,8 @@
 			feature_flag,
 			sl,
 			rec_flag,
-			rec_count);
+			rec_count,
+			num_aux_planes);
 	if (!ret) {
 		goto destroy_realm;
 	} else {
@@ -323,7 +347,8 @@
 			u_register_t feature_flag,
 			long sl,
 			const u_register_t *rec_flag,
-			unsigned int rec_count)
+			unsigned int rec_count,
+			unsigned int num_aux_planes)
 
 {
 	bool ret;
@@ -333,7 +358,8 @@
 			feature_flag,
 			sl,
 			rec_flag,
-			rec_count);
+			rec_count,
+			num_aux_planes);
 	if (!ret) {
 		goto destroy_realm;
 	} else {
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 ebf4580..a810617 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
@@ -782,16 +782,16 @@
 
 	/* SVE enable and vector length */
 	if ((realm->rmm_feat_reg0 & RMI_FEATURE_REGISTER_0_SVE_EN) != 0UL) {
-		params->flags = RMI_REALM_FLAGS_SVE;
+		params->flags0 = RMI_REALM_FLAGS0_SVE;
 		params->sve_vl = realm->sve_vl;
 	} else {
-		params->flags = 0UL;
+		params->flags0 = 0UL;
 		params->sve_vl = 0U;
 	}
 
 	/* PMU enable and number of event counters */
 	if ((realm->rmm_feat_reg0 & RMI_FEATURE_REGISTER_0_PMU_EN) != 0UL) {
-		params->flags |= RMI_REALM_FLAGS_PMU;
+		params->flags0 |= RMI_REALM_FLAGS0_PMU;
 		params->pmu_num_ctrs = realm->pmu_num_ctrs;
 	} else {
 		params->pmu_num_ctrs = 0U;
@@ -799,15 +799,20 @@
 
 	/* LPA2 enable */
 	if ((realm->rmm_feat_reg0 & RMI_FEATURE_REGISTER_0_LPA2) != 0UL) {
-		params->flags |= RMI_REALM_FLAGS_LPA2;
+		params->flags0 |= RMI_REALM_FLAGS0_LPA2;
 	}
 
 	params->rtt_level_start = realm->start_level;
-	params->hash_algo = RMI_HASH_SHA_256;
+	params->algorithm = RMI_HASH_SHA_256;
 	params->vmid = vmid++;
 	params->rtt_base = realm->rtt_addr;
 	params->rtt_num_start = 1U;
 
+	if (!realm->rtt_tree_single) {
+		params->flags1 = RMI_REALM_FLAGS1_RTT_TREE_PP;
+	}
+	params->num_aux_planes = realm->num_aux_planes;
+
 	/* Create Realm */
 	ret = host_rmi_realm_create(realm->rd, (u_register_t)params);
 	if (ret != RMI_SUCCESS) {
diff --git a/tftf/tests/runtime_services/realm_payload/host_realm_lpa2_tests.c b/tftf/tests/runtime_services/realm_payload/host_realm_lpa2_tests.c
index 9a6341d..43d9f01 100644
--- a/tftf/tests/runtime_services/realm_payload/host_realm_lpa2_tests.c
+++ b/tftf/tests/runtime_services/realm_payload/host_realm_lpa2_tests.c
@@ -22,7 +22,7 @@
 	SKIP_TEST_IF_RME_NOT_SUPPORTED_OR_RMM_IS_TRP();
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			0UL, RTT_MIN_LEVEL_LPA2, rec_flag, 1U)) {
+			0UL, RTT_MIN_LEVEL_LPA2, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_SUCCESS;
 	}
 
@@ -41,7 +41,7 @@
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
 			INPLACE(RMI_FEATURE_REGISTER_0_S2SZ, 50UL),
-			RTT_MIN_LEVEL, rec_flag, 1U)) {
+			RTT_MIN_LEVEL, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_SUCCESS;
 	}
 
@@ -67,7 +67,7 @@
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
 			INPLACE(RMI_FEATURE_REGISTER_0_S2SZ, 48UL),
-			RTT_MIN_LEVEL, rec_flag, 1U)) {
+			RTT_MIN_LEVEL, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -99,7 +99,7 @@
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
 			INPLACE(RMI_FEATURE_REGISTER_0_S2SZ, 48UL),
-			RTT_MIN_LEVEL, rec_flag, 1U)) {
+			RTT_MIN_LEVEL, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -155,7 +155,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, RTT_MIN_LEVEL, rec_flag, 1U)) {
+			feature_flag, RTT_MIN_LEVEL, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_SUCCESS;
 	}
 
diff --git a/tftf/tests/runtime_services/realm_payload/host_realm_payload_multiple_rec_tests.c b/tftf/tests/runtime_services/realm_payload/host_realm_payload_multiple_rec_tests.c
index e3ee23b..151e871 100644
--- a/tftf/tests/runtime_services/realm_payload/host_realm_payload_multiple_rec_tests.c
+++ b/tftf/tests/runtime_services/realm_payload/host_realm_payload_multiple_rec_tests.c
@@ -47,7 +47,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, MAX_REC_COUNT)) {
+			feature_flag, sl, rec_flag, MAX_REC_COUNT, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -112,7 +112,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 3U)) {
+			feature_flag, sl, rec_flag, 3U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -257,7 +257,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, rec_count)) {
+			feature_flag, sl, rec_flag, rec_count, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -361,7 +361,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, rec_count)) {
+			feature_flag, sl, rec_flag, rec_count, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -499,12 +499,12 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, MAX_REC_COUNT)) {
+			feature_flag, sl, rec_flag, MAX_REC_COUNT, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
 	if (!host_create_activate_realm_payload(&realm2, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ret2 = host_destroy_realm(&realm);
 		return TEST_RESULT_FAIL;
 	}
@@ -661,7 +661,7 @@
 
 	/* Request more PMU counter than total, expect failure */
 	if (host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm create should have failed\n");
 		host_destroy_realm(&realm);
 		return TEST_RESULT_FAIL;
@@ -676,7 +676,7 @@
 	}
 
 	ret1 = host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, 1U);
+				feature_flag, sl, rec_flag, 1U, 0U);
 
 	if (!get_feat_hpmn0_supported()) {
 		if (ret1) {
@@ -702,7 +702,7 @@
 
 	/* Prepare realm0, create recs for realm0 later */
 	if (!host_prepare_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, rec_count)) {
+			feature_flag, sl, rec_flag, rec_count, 0U)) {
 		goto test_exit;
 		return TEST_RESULT_FAIL;
 	}
@@ -716,7 +716,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm1, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, rec_count)) {
+			feature_flag, sl, rec_flag, rec_count, 0U)) {
 		goto test_exit2;
 	}
 
diff --git a/tftf/tests/runtime_services/realm_payload/host_realm_payload_tests.c b/tftf/tests/runtime_services/realm_payload/host_realm_payload_tests.c
index ce5409c..8c13d5d 100644
--- a/tftf/tests/runtime_services/realm_payload/host_realm_payload_tests.c
+++ b/tftf/tests/runtime_services/realm_payload/host_realm_payload_tests.c
@@ -59,7 +59,7 @@
 		unsigned int run_num = (unsigned int)rand() % MAX_REC_COUNT;
 
 		if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, MAX_REC_COUNT)) {
+				feature_flag, sl, rec_flag, MAX_REC_COUNT, 0U)) {
 			return TEST_RESULT_FAIL;
 		}
 
@@ -97,7 +97,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -141,7 +141,7 @@
 
 	pauth_test_lib_fill_regs_and_template(pauth_keys_before);
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, MAX_REC_COUNT)) {
+				feature_flag, sl, rec_flag, MAX_REC_COUNT, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -203,7 +203,7 @@
 	SKIP_TEST_IF_RME_NOT_SUPPORTED_OR_RMM_IS_TRP();
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, 1U)) {
+				feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -299,7 +299,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -412,7 +412,8 @@
 
 		ret = host_create_activate_realm_payload(&realm[num],
 							(u_register_t)REALM_IMAGE_BASE,
-							feature_flag, sl, rec_flag, MAX_REC_COUNT);
+							feature_flag, sl, rec_flag,
+							MAX_REC_COUNT, 0U);
 		if (!ret) {
 			goto destroy_realms;
 		}
@@ -476,7 +477,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -575,7 +576,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -647,7 +648,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 2U)) {
+			feature_flag, sl, rec_flag, 2U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -773,7 +774,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 2U)) {
+			feature_flag, sl, rec_flag, 2U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -882,7 +883,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 2U)) {
+			feature_flag, sl, rec_flag, 2U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1017,7 +1018,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 4U)) {
+			feature_flag, sl, rec_flag, 4U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1159,7 +1160,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 2U)) {
+			feature_flag, sl, rec_flag, 2U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1267,7 +1268,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, MAX_REC_COUNT)) {
+			feature_flag, sl, rec_flag, MAX_REC_COUNT, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1497,7 +1498,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 2U)) {
+			feature_flag, sl, rec_flag, 2U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1683,7 +1684,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		goto destroy_realm;
 	}
 
@@ -1729,7 +1730,7 @@
 	feature_flag = INPLACE(RMI_FEATURE_REGISTER_0_S2SZ, 0x2CU);
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, RTT_MIN_LEVEL, rec_flag, 4U)) {
+			feature_flag, RTT_MIN_LEVEL, rec_flag, 4U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -1876,7 +1877,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm creation failed\n");
 		goto destroy_realm;
 	}
@@ -2033,7 +2034,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm creation failed\n");
 		goto destroy_realm;
 	}
@@ -2208,7 +2209,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm creation failed\n");
 		goto destroy_realm;
 	}
@@ -2323,7 +2324,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm creation failed\n");
 		goto destroy_realm;
 	}
@@ -2436,7 +2437,7 @@
 	}
 
 	if (!host_create_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-			feature_flag, sl, rec_flag, 1U)) {
+			feature_flag, sl, rec_flag, 1U, 0U)) {
 		ERROR("Realm creation failed\n");
 		goto destroy_realm;
 	}
@@ -2552,7 +2553,7 @@
 
 	if (!host_create_activate_realm_payload(&realm,
 					(u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, &rec_flag, 1U)) {
+				feature_flag, sl, &rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -2612,7 +2613,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, 1U)) {
+				feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
@@ -2653,7 +2654,7 @@
 	}
 
 	if (!host_create_activate_realm_payload(&realm, (u_register_t)REALM_IMAGE_BASE,
-				feature_flag, sl, rec_flag, 1U)) {
+				feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}
 
diff --git a/tftf/tests/runtime_services/realm_payload/host_realm_simd_common.c b/tftf/tests/runtime_services/realm_payload/host_realm_simd_common.c
index 02c5d0f..235e093 100644
--- a/tftf/tests/runtime_services/realm_payload/host_realm_simd_common.c
+++ b/tftf/tests/runtime_services/realm_payload/host_realm_simd_common.c
@@ -39,7 +39,7 @@
 	/* Initialise Realm payload */
 	if (!host_create_activate_realm_payload(realm,
 				       (u_register_t)REALM_IMAGE_BASE,
-				       feature_flag, sl, rec_flag, 1U)) {
+				       feature_flag, sl, rec_flag, 1U, 0U)) {
 		return TEST_RESULT_FAIL;
 	}