diff --git a/realm/include/realm_rsi.h b/realm/include/realm_rsi.h
index 6a4de5e..92a078b 100644
--- a/realm/include/realm_rsi.h
+++ b/realm/include/realm_rsi.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022-2023, Arm Limited. All rights reserved.
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -76,14 +76,6 @@
 	SET_MEMBER(unsigned char rpv[RSI_RPV_SIZE], 0x200, 0x1000); /* Offset 0x200 */
 };
 
-/*
- * arg0 == IPA address of target region
- * arg1 == Size of target region in bytes
- * arg2 == RIPAS value
- * ret0 == Status / error
- * ret1 == Top of modified IPA range
- */
-
 #define RSI_HOST_CALL_NR_GPRS		31U
 
 struct rsi_host_call {
@@ -97,17 +89,42 @@
 
 /*
  * arg0 == struct rsi_host_call address
+ * ret0 == Status / error
  */
 #define RSI_HOST_CALL		SMC_RSI_FID(9U)
 
-
+/*
+ * arg0: Requested interface version
+ * ret0: Status / error
+ * ret1: Lower implemented interface revision
+ * ret2: Higher implemented interface revision
+ */
 #define RSI_VERSION		SMC_RSI_FID(0U)
 
 /*
  * arg0 == struct rsi_realm_config address
+ * ret0 == Status / error
  */
 #define RSI_REALM_CONFIG	SMC_RSI_FID(6U)
+
+/*
+ * arg0 == Base IPA address of target region
+ * arg1 == Top address of target region
+ * arg2 == RIPAS value
+ * arg3 == flags
+ * ret0 == Status / error
+ * ret1 == Base of IPA region which was not modified by the command
+ * ret2 == RSI response
+ */
 #define RSI_IPA_STATE_SET	SMC_RSI_FID(7U)
+
+/*
+ * arg0 == Base of target IPA region
+ * arg1 == End of target IPA region
+ * ret0 == Status / error
+ * ret1 == Top of IPA region which has the reported RIPAS value
+ * ret2 == RIPAS value
+ */
 #define RSI_IPA_STATE_GET	SMC_RSI_FID(8U)
 
 typedef enum {
@@ -125,16 +142,19 @@
 #define RSI_NO_CHANGE_DESTROYED	0UL
 #define RSI_CHANGE_DESTROYED	1UL
 
-/* Request RIPAS of a target IPA range to be changed to a specified value. */
+/* Request RIPAS of a target IPA range to be changed to a specified value */
 u_register_t rsi_ipa_state_set(u_register_t base,
-			   u_register_t top,
-			   rsi_ripas_type ripas,
-			   u_register_t flag,
-			   u_register_t *new_base,
-			   rsi_ripas_respose_type *response);
+				u_register_t top,
+				rsi_ripas_type ripas,
+				u_register_t flag,
+				u_register_t *new_base,
+				rsi_ripas_respose_type *response);
 
-/* Request RIPAS of a target IPA */
-u_register_t rsi_ipa_state_get(u_register_t adr, rsi_ripas_type *ripas);
+/* Request RIPAS of a target IPA range */
+u_register_t rsi_ipa_state_get(u_register_t base,
+				u_register_t top,
+				u_register_t *out_top,
+				rsi_ripas_type *ripas);
 
 /* This function return RSI_ABI_VERSION */
 u_register_t rsi_get_version(u_register_t req_ver);
diff --git a/realm/realm_payload_main.c b/realm/realm_payload_main.c
index 5eec5b8..47f9b9f 100644
--- a/realm/realm_payload_main.c
+++ b/realm/realm_payload_main.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022-2023, Arm Limited. All rights reserved.
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  *
@@ -63,70 +63,76 @@
 
 bool test_realm_set_ripas(void)
 {
-	u_register_t ret, base, new_base, top;
+	u_register_t ret, base, new_base, top, new_top;
 	rsi_ripas_respose_type response;
 	rsi_ripas_type ripas;
 
 	base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
 	top = realm_shared_data_get_my_host_val(HOST_ARG2_INDEX);
-	realm_printf("base=0x%lx top =0x%lx\n", base, top);
-	ret = rsi_ipa_state_get(base, &ripas);
+	realm_printf("base=0x%lx top=0x%lx\n", base, top);
+	ret = rsi_ipa_state_get(base, top, &new_top, &ripas);
 	if (ripas != RSI_EMPTY) {
 		return false;
 	}
 
 	ret = rsi_ipa_state_set(base, top, RSI_RAM,
-		RSI_NO_CHANGE_DESTROYED, &new_base, &response);
-	if (ret != RSI_SUCCESS || response != RSI_ACCEPT) {
+				RSI_NO_CHANGE_DESTROYED, &new_base, &response);
+	if ((ret != RSI_SUCCESS) || (response != RSI_ACCEPT)) {
 		return false;
 	}
+
 	while (new_base < top) {
-		realm_printf("new_base=0x%lx top =0x%lx\n", new_base, top);
+		realm_printf("new_base=0x%lx top=0x%lx\n", new_base, top);
 		ret = rsi_ipa_state_set(new_base, top, RSI_RAM,
 				RSI_NO_CHANGE_DESTROYED, &new_base, &response);
-		if (ret != RSI_SUCCESS || response != RSI_ACCEPT) {
+		if ((ret != RSI_SUCCESS) || (response != RSI_ACCEPT)) {
 			realm_printf("rsi_ipa_state_set failed\n");
 			return false;
 		}
 	}
 
-	/* Verify that RIAS has changed for range base-top. */
-	for (unsigned int i = 0U; (base + (PAGE_SIZE * i) < top); i++) {
-		ret = rsi_ipa_state_get(base + (PAGE_SIZE * i), &ripas);
-		if (ret != RSI_SUCCESS || ripas != RSI_RAM) {
-			realm_printf("rsi_ipa_state_get failed base=0x%lx, ripas=0x%x\n",
-					base + (PAGE_SIZE * i), ripas);
-			return false;
-		}
+	/* Verify that RIAS has changed for range base-top */
+	ret = rsi_ipa_state_get(base, top, &new_top, &ripas);
+	if ((ret != RSI_SUCCESS) || (ripas != RSI_RAM) || (new_top != top)) {
+		realm_printf("rsi_ipa_state_get failed base=0x%lx top=0x%lx",
+				"new_top=0x%lx ripas=%u ret=0x%lx\n",
+				base, top, ripas);
+		return false;
 	}
+
 	return true;
 }
 
 bool test_realm_reject_set_ripas(void)
 {
-	u_register_t ret, base, new_base;
+	u_register_t ret, base, top, new_base, new_top;
 	rsi_ripas_respose_type response;
 	rsi_ripas_type ripas;
 
 	base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
-	ret = rsi_ipa_state_get(base, &ripas);
-	if (ret != RSI_SUCCESS || ripas != RSI_EMPTY) {
-		realm_printf("Wrong initial ripas=0x%lx\n", ripas);
+	top = base + PAGE_SIZE;
+	ret = rsi_ipa_state_get(base, top, &new_top, &ripas);
+	if ((ret != RSI_SUCCESS) || (ripas != RSI_EMPTY)) {
+		realm_printf("Wrong initial ripas=%u\n", ripas);
 		return false;
 	}
-	ret = rsi_ipa_state_set(base, base + PAGE_SIZE, RSI_RAM,
-		RSI_NO_CHANGE_DESTROYED, &new_base, &response);
-	if (ret == RSI_SUCCESS && response == RSI_REJECT) {
-		realm_printf("rsi_ipa_state_set passed response = %d\n", response);
-		ret = rsi_ipa_state_get(base, &ripas);
-		if (ret == RSI_SUCCESS && ripas == RSI_EMPTY) {
+	ret = rsi_ipa_state_set(base, top, RSI_RAM,
+				RSI_NO_CHANGE_DESTROYED, &new_base, &response);
+	if ((ret == RSI_SUCCESS) && (response == RSI_REJECT)) {
+		realm_printf("rsi_ipa_state_set passed response=%u\n", response);
+		ret = rsi_ipa_state_get(base, top, &new_top, &ripas);
+		if ((ret == RSI_SUCCESS) && (ripas == RSI_EMPTY) &&
+						(new_top == top)) {
 			return true;
 		} else {
-			realm_printf("rsi_ipa_state_get failed ripas = %d\n", ripas);
+			realm_printf("rsi_ipa_state_get failed top=0x%lx",
+					"new_top=0x%lx ripas=%u ret=0x%lx\n",
+					ripas);
 			return false;
 		}
 	}
-	realm_printf("rsi_ipa_state_set failed ret=0x%lx, response = %d\n", ret, response);
+	realm_printf("rsi_ipa_state_set failed ret=0x%lx response=%u\n",
+			ret, response);
 	return false;
 }
 
@@ -143,36 +149,34 @@
 	return false;
 }
 
-
 static bool test_realm_instr_fetch_cmd(void)
 {
-	u_register_t base;
+	u_register_t base, new_top;
 	void (*func_ptr)(void);
 	rsi_ripas_type ripas;
 
 	base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
-	rsi_ipa_state_get(base, &ripas);
-	realm_printf("Initial ripas=0x%lx\n", ripas);
-	/* causes instruction abort */
+	rsi_ipa_state_get(base, base + PAGE_SIZE, &new_top, &ripas);
+	realm_printf("Initial ripas=%u\n", ripas);
+	/* Causes instruction abort */
 	realm_printf("Generate Instruction Abort\n");
 	func_ptr = (void (*)(void))base;
 	func_ptr();
-	/* should not return */
+	/* Should not return */
 	return false;
 }
 
 static bool test_realm_data_access_cmd(void)
 {
-	u_register_t base;
+	u_register_t base, new_top;
 	rsi_ripas_type ripas;
-
 	base = realm_shared_data_get_my_host_val(HOST_ARG1_INDEX);
-	rsi_ipa_state_get(base, &ripas);
-	realm_printf("Initial ripas=0x%lx\n", ripas);
-	/* causes data abort */
+	rsi_ipa_state_get(base, base + PAGE_SIZE, &new_top, &ripas);
+	realm_printf("Initial ripas=%u\n", ripas);
+	/* Causes data abort */
 	realm_printf("Generate Data Abort\n");
 	*((volatile uint64_t *)base);
-	/* should not return */
+	/* Should not return */
 	return false;
 }
 
@@ -185,14 +189,14 @@
 	esr = read_esr_el1();
 
 	if (far == base) {
-		/* return ESR to Host */
+		/* Return ESR to Host */
 		realm_shared_data_set_my_realm_val(HOST_ARG2_INDEX, esr);
 		rsi_exit_to_host(HOST_CALL_EXIT_SUCCESS_CMD);
 	}
-	realm_printf("Realm Abort fail incorrect FAR=0x%lx ESR+0x%lx\n", far, esr);
+	realm_printf("Realm Abort fail incorrect FAR=0x%lx ESR=0x%lx\n", far, esr);
 	rsi_exit_to_host(HOST_CALL_EXIT_FAILED_CMD);
 
-	/* Should not return. */
+	/* Should not return */
 	return false;
 }
 
diff --git a/realm/realm_rsi.c b/realm/realm_rsi.c
index cd4342f..b2a49d4 100644
--- a/realm/realm_rsi.c
+++ b/realm/realm_rsi.c
@@ -22,7 +22,7 @@
 	if (res.ret0 == SMC_UNKNOWN) {
 		return SMC_UNKNOWN;
 	}
-	/* Return lower version. */
+	/* Return lower version */
 	return res.ret1;
 }
 
@@ -71,15 +71,19 @@
 	return res.ret0;
 }
 
-/* This function will return RIPAS of IPA */
-u_register_t rsi_ipa_state_get(u_register_t adr, rsi_ripas_type *ripas)
+/* This function will return RIPAS of IPA range */
+u_register_t rsi_ipa_state_get(u_register_t base,
+				u_register_t top,
+				u_register_t *out_top,
+				rsi_ripas_type *ripas)
 {
 	smc_ret_values res = {};
 
 	res = tftf_smc(&(smc_args)
-			{RSI_IPA_STATE_GET, adr});
+			{RSI_IPA_STATE_GET, base, top});
 	if (res.ret0 == RSI_SUCCESS) {
-		*ripas = res.ret1;
+		*out_top = res.ret1;
+		*ripas = res.ret2;
 	}
 	return res.ret0;
 }
