diff --git a/include/common/test_helpers.h b/include/common/test_helpers.h
index 4972d6a..6b44d0a 100644
--- a/include/common/test_helpers.h
+++ b/include/common/test_helpers.h
@@ -294,7 +294,7 @@
 
 #define SKIP_TEST_IF_RME_NOT_SUPPORTED_OR_RMM_IS_TRP()				\
 	do {									\
-		u_register_t retrmm;						\
+		u_register_t retrmm = 0U;					\
 										\
 		if (!get_armv9_2_feat_rme_support()) {				\
 			tftf_testcase_printf("FEAT_RME not supported\n");	\
@@ -302,7 +302,7 @@
 		}								\
 										\
 		host_rmi_init_cmp_result();					\
-		retrmm = host_rmi_version();					\
+		retrmm = host_rmi_version(RMI_ABI_VERSION_VAL);			\
 										\
 		VERBOSE("RMM version is: %lu.%lu\n",				\
 			RMI_ABI_VERSION_GET_MAJOR(retrmm),			\
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 b1e54dd..5030c38 100644
--- a/include/runtime_services/host_realm_managment/host_realm_rmi.h
+++ b/include/runtime_services/host_realm_managment/host_realm_rmi.h
@@ -28,6 +28,10 @@
 
 #define RMI_ABI_VERSION_GET_MAJOR(_version)	(((_version) >> 16U) & 0x8FFF)
 #define RMI_ABI_VERSION_GET_MINOR(_version)	((_version) & 0xFFFF)
+#define RMI_ABI_VERSION_MAJOR			U(1)
+#define RMI_ABI_VERSION_MINOR			U(0)
+#define RMI_ABI_VERSION_VAL			((RMI_ABI_VERSION_MAJOR << 16U) | \
+						 RMI_ABI_VERSION_MINOR)
 
 #define __ALIGN_MASK(x, mask)		(((x) + (mask)) & ~(mask))
 #define __ALIGN(x, a)			__ALIGN_MASK(x, (typeof(x))(a) - 1U)
@@ -522,7 +526,7 @@
 };
 
 /* RMI/SMC */
-u_register_t host_rmi_version(void);
+u_register_t host_rmi_version(u_register_t req_ver);
 u_register_t host_rmi_granule_delegate(u_register_t addr);
 u_register_t host_rmi_granule_undelegate(u_register_t addr);
 u_register_t host_rmi_realm_create(u_register_t rd, u_register_t params_ptr);
diff --git a/realm/include/realm_rsi.h b/realm/include/realm_rsi.h
index e9b6ce8..547db0d 100644
--- a/realm/include/realm_rsi.h
+++ b/realm/include/realm_rsi.h
@@ -26,7 +26,7 @@
  * The major version number of the RSI implementation.  Increase this whenever
  * the binary format or semantics of the SMC calls change.
  */
-#define RSI_ABI_VERSION_MAJOR		12U
+#define RSI_ABI_VERSION_MAJOR		1U
 
 /*
  * The minor version number of the RSI implementation.  Increase this when
@@ -94,7 +94,7 @@
 #define RSI_HOST_CALL		SMC_RSI_FID(9U)
 
 
-#define RSI_ABI_VERSION		SMC_RSI_FID(0U)
+#define RSI_VERSION		SMC_RSI_FID(0U)
 
 /*
  * arg0 == struct rsi_realm_config address
@@ -102,7 +102,7 @@
 #define RSI_REALM_CONFIG	SMC_RSI_FID(6U)
 
 /* This function return RSI_ABI_VERSION */
-u_register_t rsi_get_version(void);
+u_register_t rsi_get_version(u_register_t req_ver);
 
 /* This function will call the Host to request IPA of the NS shared buffer */
 u_register_t rsi_get_ns_buffer(void);
diff --git a/realm/realm_payload_main.c b/realm/realm_payload_main.c
index 1440716..aaf7479 100644
--- a/realm/realm_payload_main.c
+++ b/realm/realm_payload_main.c
@@ -43,21 +43,22 @@
 /*
  * This function requests RSI/ABI version from RMM.
  */
-static void realm_get_rsi_version(void)
+static bool realm_get_rsi_version(void)
 {
-	u_register_t version;
+	u_register_t version = 0U;
 
-	version = rsi_get_version();
+	version = rsi_get_version(RSI_ABI_VERSION_VAL);
 	if (version == (u_register_t)SMC_UNKNOWN) {
-		realm_printf("SMC_RSI_ABI_VERSION failed (%ld)", (long)version);
-		return;
+		realm_printf("SMC_RSI_ABI_VERSION failed\n");
+		return false;
 	}
 
-	realm_printf("RSI ABI version %u.%u (expected: %u.%u)",
+	realm_printf("RSI ABI version %u.%u (expected: %u.%u)\n",
 	RSI_ABI_VERSION_GET_MAJOR(version),
 	RSI_ABI_VERSION_GET_MINOR(version),
-	RSI_ABI_VERSION_GET_MAJOR(RSI_ABI_VERSION),
-	RSI_ABI_VERSION_GET_MINOR(RSI_ABI_VERSION));
+	RSI_ABI_VERSION_GET_MAJOR(RSI_ABI_VERSION_VAL),
+	RSI_ABI_VERSION_GET_MINOR(RSI_ABI_VERSION_VAL));
+	return true;
 }
 
 /*
@@ -98,8 +99,7 @@
 			test_succeed = test_realm_pauth_fault();
 			break;
 		case REALM_GET_RSI_VERSION:
-			realm_get_rsi_version();
-			test_succeed = true;
+			test_succeed = realm_get_rsi_version();
 			break;
 		case REALM_PMU_CYCLE:
 			test_succeed = test_pmuv3_cycle_works_realm();
diff --git a/realm/realm_pmuv3.c b/realm/realm_pmuv3.c
index 862e93e..58c05f0 100644
--- a/realm/realm_pmuv3.c
+++ b/realm/realm_pmuv3.c
@@ -227,7 +227,7 @@
 	read_all_pmu_configs(pmu_cfg_start);
 
 	/* Give RMM a chance to scramble everything */
-	(void)rsi_get_version();
+	(void)rsi_get_version(RSI_ABI_VERSION_VAL);
 
 	/* Get after reading */
 	read_all_counters(ctr_end, impl_ev_ctrs);
diff --git a/realm/realm_rsi.c b/realm/realm_rsi.c
index 586d4d2..d82aa6f 100644
--- a/realm/realm_rsi.c
+++ b/realm/realm_rsi.c
@@ -14,14 +14,18 @@
 static struct rsi_host_call host_cal __aligned(sizeof(struct rsi_host_call));
 
 /* This function return RSI_ABI_VERSION */
-u_register_t rsi_get_version(void)
+u_register_t rsi_get_version(u_register_t req_ver)
 {
 	smc_ret_values res = {};
 
 	res = tftf_smc(&(smc_args)
-		{RSI_ABI_VERSION, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL});
+		{RSI_VERSION, req_ver, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL});
 
-	return res.ret0;
+	if (res.ret0 == SMC_UNKNOWN) {
+		return SMC_UNKNOWN;
+	}
+	/* Return lower version. */
+	return res.ret1;
 }
 
 /* This function will call the Host to request IPA of the NS shared buffer */
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 a897913..8d9e8e9 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
@@ -716,9 +716,16 @@
 	return host_rmi_handler(&(smc_args) {RMI_GRANULE_UNDELEGATE, addr}, 2U).ret0;
 }
 
-u_register_t host_rmi_version(void)
+u_register_t host_rmi_version(u_register_t requested_ver)
 {
-	return host_rmi_handler(&(smc_args) {RMI_VERSION}, 1U).ret0;
+	smc_ret_values ret;
+
+	ret = host_rmi_handler(&(smc_args) {RMI_VERSION, requested_ver}, 2U);
+	if (ret.ret0 == (u_register_t)SMC_UNKNOWN) {
+		return SMC_UNKNOWN;
+	}
+	/* Return lower version. */
+	return ret.ret1;
 }
 
 u_register_t host_realm_create(struct realm *realm)
diff --git a/tftf/tests/runtime_services/host_realm_managment/rmi_delegate_tests.c b/tftf/tests/runtime_services/host_realm_managment/rmi_delegate_tests.c
index 77d2db0..ce604c0 100644
--- a/tftf/tests/runtime_services/host_realm_managment/rmi_delegate_tests.c
+++ b/tftf/tests/runtime_services/host_realm_managment/rmi_delegate_tests.c
@@ -70,7 +70,7 @@
  */
 test_result_t host_realm_version_single_cpu(void)
 {
-	u_register_t retrmm;
+	u_register_t retrmm = 0U;
 
 	if (get_armv9_2_feat_rme_support() == 0U) {
 		return TEST_RESULT_SKIPPED;
@@ -78,11 +78,13 @@
 
 	host_rmi_init_cmp_result();
 
-	retrmm = host_rmi_version();
+	retrmm = host_rmi_version(RMI_ABI_VERSION_VAL);
 
-	tftf_testcase_printf("RMM version is: %lu.%lu\n",
+	tftf_testcase_printf("RMM version is: %lu.%lu (expected: %u.%u)\n",
 			RMI_ABI_VERSION_GET_MAJOR(retrmm),
-			RMI_ABI_VERSION_GET_MINOR(retrmm));
+			RMI_ABI_VERSION_GET_MINOR(retrmm),
+			RMI_ABI_VERSION_GET_MAJOR(RMI_ABI_VERSION_VAL),
+			RMI_ABI_VERSION_GET_MINOR(RMI_ABI_VERSION_VAL));
 
 	return host_cmp_result();
 }
@@ -173,11 +175,11 @@
 
 static test_result_t host_realm_multi_cpu_payload_test(void)
 {
-	u_register_t retrmm;
+	u_register_t retrmm = 0U;
 
 	host_rmi_init_cmp_result();
 
-	retrmm = host_rmi_version();
+	retrmm = host_rmi_version(RMI_ABI_VERSION_VAL);
 
 	tftf_testcase_printf("Multi CPU RMM version on CPU %llx is: %lu.%lu\n",
 			(long long)read_mpidr_el1() & MPID_MASK, RMI_ABI_VERSION_GET_MAJOR(retrmm),
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 0732605..48b3e24 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
@@ -61,6 +61,41 @@
 }
 
 /*
+ * @Test_Aim@ Test realm payload creation and execution
+ */
+test_result_t host_test_realm_rsi_version(void)
+{
+	bool ret1, ret2;
+	u_register_t rec_flag[] = {RMI_RUNNABLE};
+
+	SKIP_TEST_IF_RME_NOT_SUPPORTED_OR_RMM_IS_TRP();
+
+	if (!host_create_realm_payload((u_register_t)REALM_IMAGE_BASE,
+			(u_register_t)PAGE_POOL_BASE,
+			(u_register_t)(PAGE_POOL_MAX_SIZE +
+			NS_REALM_SHARED_MEM_SIZE),
+			(u_register_t)PAGE_POOL_MAX_SIZE,
+			0UL, rec_flag, 1U)) {
+		return TEST_RESULT_FAIL;
+	}
+	if (!host_create_shared_mem(NS_REALM_SHARED_MEM_BASE,
+			NS_REALM_SHARED_MEM_SIZE)) {
+		return TEST_RESULT_FAIL;
+	}
+
+	ret1 = host_enter_realm_execute(REALM_GET_RSI_VERSION, NULL, RMI_EXIT_HOST_CALL, 0U);
+	ret2 = host_destroy_realm();
+
+	if (!ret1 || !ret2) {
+		ERROR("%s(): enter=%d destroy=%d\n",
+		__func__, ret1, ret2);
+		return TEST_RESULT_FAIL;
+	}
+
+	return host_cmp_result();
+}
+
+/*
  * @Test_Aim@ Test PAuth in realm
  */
 test_result_t host_realm_enable_pauth(void)
diff --git a/tftf/tests/tests-realm-payload.xml b/tftf/tests/tests-realm-payload.xml
index f0ae8c6..cf707a5 100644
--- a/tftf/tests/tests-realm-payload.xml
+++ b/tftf/tests/tests-realm-payload.xml
@@ -16,6 +16,8 @@
 	  function="host_realm_multi_rec_psci_denied" />
 	  <testcase name="Realm payload multi rec force exit on NS IRQ"
 	  function="host_realm_multi_rec_exit_irq" />
+	  <testcase name="Realm EL1 creation and RSI version"
+	  function="host_test_realm_rsi_version" />
 	  <testcase name="Realm payload boot"
 	  function="host_realm_version_single_cpu" />
 	  <testcase name="Realm payload multi CPU request"
