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 */
