diff --git a/components/media/disk/disk_images/readme.rst b/components/media/disk/disk_images/readme.rst
index 0f2d2c0..efb1f86 100644
--- a/components/media/disk/disk_images/readme.rst
+++ b/components/media/disk/disk_images/readme.rst
@@ -65,7 +65,7 @@
     * - components/media/disk/disk_images/multi_location_fw.img
       - This UEFI disk image contains the set of partitions you'd expect to find in flash for a
         device where firmware is distributed across multiple locations. In this case, there are
-        locations for AP firmware, SCP firmware and RSS firmware.
+        locations for AP firmware, SCP firmware and RSE firmware.
 
 
 --------------
diff --git a/components/messaging/rss_comms/sp/component.cmake b/components/messaging/rse_comms/sp/component.cmake
similarity index 80%
rename from components/messaging/rss_comms/sp/component.cmake
rename to components/messaging/rse_comms/sp/component.cmake
index b9b7c4f..79b6a69 100644
--- a/components/messaging/rss_comms/sp/component.cmake
+++ b/components/messaging/rse_comms/sp/component.cmake
@@ -9,12 +9,12 @@
 endif()
 
 set_property(TARGET ${TGT} APPEND PROPERTY PUBLIC_HEADER
-	"${CMAKE_CURRENT_LIST_DIR}/rss_comms_messenger_api.h"
+	"${CMAKE_CURRENT_LIST_DIR}/rse_comms_messenger_api.h"
 	)
 
 target_sources(${TGT} PRIVATE
-	"${CMAKE_CURRENT_LIST_DIR}/rss_comms_messenger.c"
-	"${CMAKE_CURRENT_LIST_DIR}/rss_comms_platform.c"
+	"${CMAKE_CURRENT_LIST_DIR}/rse_comms_messenger.c"
+	"${CMAKE_CURRENT_LIST_DIR}/rse_comms_platform.c"
 	)
 
 target_include_directories(${TGT}
diff --git a/components/messaging/rse_comms/sp/rse_comms_messenger.c b/components/messaging/rse_comms/sp/rse_comms_messenger.c
new file mode 100644
index 0000000..48988f1
--- /dev/null
+++ b/components/messaging/rse_comms/sp/rse_comms_messenger.c
@@ -0,0 +1,161 @@
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <errno.h>
+#include <stddef.h>
+#include <stdlib.h>
+#include <trace.h>
+
+#include "protocols/rpc/common/packed-c/status.h"
+#include "rse_comms_messenger_api.h"
+#include "rse_comms_platform_api.h"
+
+struct rse_comms_msg {
+	uint8_t *req_buf;
+	size_t req_len;
+	uint8_t *resp_buf;
+};
+
+int rse_comms_messenger_init(struct rse_comms_messenger *rse_comms)
+{
+	int ret = 0;
+
+	if (!rse_comms || rse_comms->msg || rse_comms->platform)
+		return -1;
+
+	rse_comms->msg = calloc(1, sizeof(struct rse_comms_msg));
+	if (!rse_comms->msg)
+		return -1;
+
+	rse_comms->platform = rse_comms_platform_init();
+	if (!rse_comms->platform) {
+		EMSG("Platform init failed");
+		free(rse_comms->msg);
+		rse_comms->msg = NULL;
+		return ret;
+	}
+
+	return 0;
+}
+
+void rse_comms_messenger_deinit(struct rse_comms_messenger *rse_comms)
+{
+	struct rse_comms_msg *msg = NULL;
+
+	if (!rse_comms)
+		return;
+
+	if (rse_comms->msg) {
+		msg = (struct rse_comms_msg *)rse_comms->msg;
+
+		if (msg->req_buf)
+			free(msg->req_buf);
+		if (msg->resp_buf)
+			free(msg->resp_buf);
+
+		free(msg);
+		rse_comms->msg = NULL;
+	}
+
+	rse_comms_platform_deinit(rse_comms->platform);
+	rse_comms->platform = NULL;
+}
+
+int rse_comms_messenger_call_invoke(struct rse_comms_messenger *rse_comms, uint8_t **resp_buf,
+				    size_t *resp_len)
+{
+	struct rse_comms_msg *msg = NULL;
+	int ret = 0;
+
+	if (!rse_comms || !resp_buf || !resp_len) {
+		EMSG("Invalid arguments");
+		return -1;
+	}
+
+	if (!rse_comms->msg) {
+		EMSG("msg is null");
+		return -1;
+	}
+
+	msg = (struct rse_comms_msg *)rse_comms->msg;
+	*resp_buf = calloc(1, *resp_len);
+
+	if (!(*resp_buf))
+		return -1;
+
+	ret = rse_comms_platform_invoke(rse_comms->platform, *resp_buf, msg->req_buf, resp_len,
+					msg->req_len);
+
+	if (ret < 0) {
+		free(*resp_buf);
+		*resp_buf = NULL;
+		return ret;
+	}
+
+	msg->resp_buf = *resp_buf;
+
+	return 0;
+}
+
+int rse_comms_messenger_call_begin(struct rse_comms_messenger *rse_comms, uint8_t **req_buf,
+				   size_t req_len)
+{
+	int ret = 0;
+	struct rse_comms_msg *msg = NULL;
+
+	if (!rse_comms || !req_buf || !rse_comms->msg)
+		return -1;
+
+	if (req_len > UINT32_MAX || req_len == 0) {
+		EMSG("req_len invalid: %lu", req_len);
+		return -1;
+	}
+
+	msg = (struct rse_comms_msg *)rse_comms->msg;
+
+	if (msg->req_buf)
+		return -1;
+
+	msg->req_buf = calloc(1, req_len);
+
+	if (!msg->req_buf)
+		return -1;
+
+	*req_buf = msg->req_buf;
+	msg->req_len = req_len;
+
+	ret = rse_comms_platform_begin(rse_comms->platform, *req_buf, req_len);
+
+	return ret;
+}
+
+void rse_comms_messenger_call_end(struct rse_comms_messenger *rse_comms)
+{
+	int ret = 0;
+	struct rse_comms_msg *msg = NULL;
+
+	if (!rse_comms || !rse_comms->msg)
+		return;
+
+	msg = (struct rse_comms_msg *)rse_comms->msg;
+
+	if (msg->req_buf)
+		free(msg->req_buf);
+
+	if (msg->resp_buf)
+		free(msg->resp_buf);
+
+	msg->req_len = 0;
+	msg->req_buf = NULL;
+	msg->resp_buf = NULL;
+
+	ret = rse_comms_platform_end(rse_comms->platform);
+
+	if (ret < 0) {
+		EMSG("Platform end failed: %d", ret);
+		return;
+	}
+}
diff --git a/components/messaging/rse_comms/sp/rse_comms_messenger_api.h b/components/messaging/rse_comms/sp/rse_comms_messenger_api.h
new file mode 100644
index 0000000..fcf9c95
--- /dev/null
+++ b/components/messaging/rse_comms/sp/rse_comms_messenger_api.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef __RSE_COMMS_MESSENGER_API_H__
+#define __RSE_COMMS_MESSENGER_API_H__
+
+#include <stddef.h>
+#include <stdint.h>
+
+struct rse_comms_messenger {
+	void *msg;
+	void *platform;
+};
+
+int rse_comms_messenger_init(struct rse_comms_messenger *rse_comms);
+void rse_comms_messenger_deinit(struct rse_comms_messenger *rse_comms);
+int rse_comms_messenger_call_invoke(struct rse_comms_messenger *rse_comms, uint8_t **resp_buf,
+				    size_t *resp_len);
+int rse_comms_messenger_call_begin(struct rse_comms_messenger *rse_comms, uint8_t **req_buf,
+				   size_t req_len);
+void rse_comms_messenger_call_end(struct rse_comms_messenger *rse_comms);
+
+#endif /* __RSE_COMMS_MESSENGER_API_H__ */
diff --git a/components/messaging/rse_comms/sp/rse_comms_platform.c b/components/messaging/rse_comms/sp/rse_comms_platform.c
new file mode 100644
index 0000000..f8f6edb
--- /dev/null
+++ b/components/messaging/rse_comms/sp/rse_comms_platform.c
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <stddef.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <string.h>
+#include <trace.h>
+
+#include "platform/interface/mhu_interface.h"
+#include "rse_comms_messenger_api.h"
+#include "rse_comms_platform_api.h"
+
+struct rse_comms_platform {
+	struct platform_mhu_driver rx_dev;
+	struct platform_mhu_driver tx_dev;
+};
+
+struct rse_comms_platform *rse_comms_platform_init(void)
+{
+	struct rse_comms_platform *rse_comms_plat = NULL;
+	int ret = 0;
+
+	rse_comms_plat = calloc(1, sizeof(*rse_comms_plat));
+	if (!rse_comms_plat) {
+		EMSG("rse_comms calloc dev failed");
+		return NULL;
+	}
+
+	ret = platform_mhu_create(&rse_comms_plat->rx_dev, "mhu-receiver", true);
+	if (ret < 0)
+		goto free_plat;
+
+	ret = platform_mhu_create(&rse_comms_plat->tx_dev, "mhu-sender", false);
+	if (ret < 0)
+		goto free_rx_dev;
+
+	return rse_comms_plat;
+
+free_rx_dev:
+	platform_mhu_destroy(&rse_comms_plat->rx_dev);
+free_plat:
+	free(rse_comms_plat);
+
+	return NULL;
+}
+
+int rse_comms_platform_deinit(struct rse_comms_platform *rse_comms_plat)
+{
+	if (!rse_comms_plat)
+		return -1;
+
+	platform_mhu_destroy(&rse_comms_plat->rx_dev);
+	platform_mhu_destroy(&rse_comms_plat->tx_dev);
+
+	free(rse_comms_plat);
+
+	return 0;
+}
+
+int rse_comms_platform_invoke(struct rse_comms_platform *rse_comms_plat, uint8_t *resp_buf,
+			      uint8_t *req_buf, size_t *resp_len, size_t req_len)
+{
+	struct platform_mhu_driver *rx_dev = NULL;
+	struct platform_mhu_driver *tx_dev = NULL;
+	int err = 0;
+
+	if (!rse_comms_plat || !resp_buf || !req_buf)
+		return -1;
+
+	rx_dev = &rse_comms_plat->rx_dev;
+	tx_dev = &rse_comms_plat->tx_dev;
+
+	if (!tx_dev->iface || !tx_dev->iface->send)
+		return -1;
+
+	err = tx_dev->iface->send(tx_dev->context, req_buf, req_len);
+	if (err != 0) {
+		EMSG("mhu send data failed!");
+		return -1;
+	}
+
+	if (!rx_dev->iface || !rx_dev->iface->wait_data || !rx_dev->iface->receive)
+		return -1;
+
+	err = rx_dev->iface->wait_data(rx_dev->context);
+	if (err != 0) {
+		EMSG("mhu wait for signal failed!");
+		return -1;
+	}
+
+	err = rx_dev->iface->receive(rx_dev->context, resp_buf, resp_len);
+	if (err != 0) {
+		EMSG("mhu receive data failed!");
+		return -1;
+	}
+
+	return 0;
+}
+
+int rse_comms_platform_begin(struct rse_comms_platform *rse_comms_plat, uint8_t *req_buf,
+			     size_t req_len)
+{
+	return 0;
+}
+
+int rse_comms_platform_end(struct rse_comms_platform *rse_comms_plat)
+{
+	return 0;
+}
diff --git a/components/messaging/rse_comms/sp/rse_comms_platform_api.h b/components/messaging/rse_comms/sp/rse_comms_platform_api.h
new file mode 100644
index 0000000..5b58fa2
--- /dev/null
+++ b/components/messaging/rse_comms/sp/rse_comms_platform_api.h
@@ -0,0 +1,22 @@
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef __RSE_COMMS_PLATFORM_API_H__
+#define __RSE_COMMS_PLATFORM_API_H__
+
+#include <stdint.h>
+
+struct rse_comms_platform;
+
+struct rse_comms_platform *rse_comms_platform_init(void);
+int rse_comms_platform_deinit(struct rse_comms_platform *rse_comms_plat);
+int rse_comms_platform_invoke(struct rse_comms_platform *rse_comms_plat, uint8_t *resp_buf,
+			      uint8_t *req_buf, size_t *resp_len, size_t req_len);
+int rse_comms_platform_begin(struct rse_comms_platform *rse_comms_plat, uint8_t *req_buf,
+			     size_t req_len);
+int rse_comms_platform_end(struct rse_comms_platform *rse_comms_plat);
+
+#endif /* __RSE_COMMS_PLATFORM_API_H__ */
diff --git a/components/messaging/rss_comms/sp/rss_comms_messenger.c b/components/messaging/rss_comms/sp/rss_comms_messenger.c
deleted file mode 100644
index 644181e..0000000
--- a/components/messaging/rss_comms/sp/rss_comms_messenger.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <errno.h>
-#include <stddef.h>
-#include <stdlib.h>
-#include <trace.h>
-
-#include "protocols/rpc/common/packed-c/status.h"
-#include "rss_comms_messenger_api.h"
-#include "rss_comms_platform_api.h"
-
-struct rss_comms_msg {
-	uint8_t *req_buf;
-	size_t req_len;
-	uint8_t *resp_buf;
-};
-
-int rss_comms_messenger_init(struct rss_comms_messenger *rss_comms)
-{
-	int ret = 0;
-
-	if (!rss_comms || rss_comms->msg || rss_comms->platform)
-		return -1;
-
-	rss_comms->msg = calloc(1, sizeof(struct rss_comms_msg));
-	if (!rss_comms->msg)
-		return -1;
-
-	rss_comms->platform = rss_comms_platform_init();
-	if (!rss_comms->platform) {
-		EMSG("Platform init failed");
-		free(rss_comms->msg);
-		rss_comms->msg = NULL;
-		return ret;
-	}
-
-	return 0;
-}
-
-void rss_comms_messenger_deinit(struct rss_comms_messenger *rss_comms)
-{
-	struct rss_comms_msg *msg = NULL;
-
-	if (!rss_comms)
-		return;
-
-	if (rss_comms->msg) {
-		msg = (struct rss_comms_msg *)rss_comms->msg;
-
-		if (msg->req_buf)
-			free(msg->req_buf);
-		if (msg->resp_buf)
-			free(msg->resp_buf);
-
-		free(msg);
-		rss_comms->msg = NULL;
-	}
-
-	rss_comms_platform_deinit(rss_comms->platform);
-	rss_comms->platform = NULL;
-}
-
-int rss_comms_messenger_call_invoke(struct rss_comms_messenger *rss_comms, uint8_t **resp_buf,
-				    size_t *resp_len)
-{
-	struct rss_comms_msg *msg = NULL;
-	int ret = 0;
-
-	if (!rss_comms || !resp_buf || !resp_len) {
-		EMSG("Invalid arguments");
-		return -1;
-	}
-
-	if (!rss_comms->msg) {
-		EMSG("msg is null");
-		return -1;
-	}
-
-	msg = (struct rss_comms_msg *)rss_comms->msg;
-	*resp_buf = calloc(1, *resp_len);
-
-	if (!(*resp_buf))
-		return -1;
-
-	ret = rss_comms_platform_invoke(rss_comms->platform, *resp_buf, msg->req_buf, resp_len,
-					msg->req_len);
-
-	if (ret < 0) {
-		free(*resp_buf);
-		*resp_buf = NULL;
-		return ret;
-	}
-
-	msg->resp_buf = *resp_buf;
-
-	return 0;
-}
-
-int rss_comms_messenger_call_begin(struct rss_comms_messenger *rss_comms, uint8_t **req_buf,
-				   size_t req_len)
-{
-	int ret = 0;
-	struct rss_comms_msg *msg = NULL;
-
-	if (!rss_comms || !req_buf || !rss_comms->msg)
-		return -1;
-
-	if (req_len > UINT32_MAX || req_len == 0) {
-		EMSG("req_len invalid: %lu", req_len);
-		return -1;
-	}
-
-	msg = (struct rss_comms_msg *)rss_comms->msg;
-
-	if (msg->req_buf)
-		return -1;
-
-	msg->req_buf = calloc(1, req_len);
-
-	if (!msg->req_buf)
-		return -1;
-
-	*req_buf = msg->req_buf;
-	msg->req_len = req_len;
-
-	ret = rss_comms_platform_begin(rss_comms->platform, *req_buf, req_len);
-
-	return ret;
-}
-
-void rss_comms_messenger_call_end(struct rss_comms_messenger *rss_comms)
-{
-	int ret = 0;
-	struct rss_comms_msg *msg = NULL;
-
-	if (!rss_comms || !rss_comms->msg)
-		return;
-
-	msg = (struct rss_comms_msg *)rss_comms->msg;
-
-	if (msg->req_buf)
-		free(msg->req_buf);
-
-	if (msg->resp_buf)
-		free(msg->resp_buf);
-
-	msg->req_len = 0;
-	msg->req_buf = NULL;
-	msg->resp_buf = NULL;
-
-	ret = rss_comms_platform_end(rss_comms->platform);
-
-	if (ret < 0) {
-		EMSG("Platform end failed: %d", ret);
-		return;
-	}
-}
diff --git a/components/messaging/rss_comms/sp/rss_comms_messenger_api.h b/components/messaging/rss_comms/sp/rss_comms_messenger_api.h
deleted file mode 100644
index 02bb6b5..0000000
--- a/components/messaging/rss_comms/sp/rss_comms_messenger_api.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __RSS_COMMS_MESSENGER_API_H__
-#define __RSS_COMMS_MESSENGER_API_H__
-
-#include <stddef.h>
-#include <stdint.h>
-
-struct rss_comms_messenger {
-	void *msg;
-	void *platform;
-};
-
-int rss_comms_messenger_init(struct rss_comms_messenger *rss_comms);
-void rss_comms_messenger_deinit(struct rss_comms_messenger *rss_comms);
-int rss_comms_messenger_call_invoke(struct rss_comms_messenger *rss_comms, uint8_t **resp_buf,
-				    size_t *resp_len);
-int rss_comms_messenger_call_begin(struct rss_comms_messenger *rss_comms, uint8_t **req_buf,
-				   size_t req_len);
-void rss_comms_messenger_call_end(struct rss_comms_messenger *rss_comms);
-
-#endif /* __RSS_COMMS_MESSENGER_API_H__ */
diff --git a/components/messaging/rss_comms/sp/rss_comms_platform.c b/components/messaging/rss_comms/sp/rss_comms_platform.c
deleted file mode 100644
index 5e09db2..0000000
--- a/components/messaging/rss_comms/sp/rss_comms_platform.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stddef.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-#include <trace.h>
-
-#include "platform/interface/mhu_interface.h"
-#include "rss_comms_messenger_api.h"
-#include "rss_comms_platform_api.h"
-
-struct rss_comms_platform {
-	struct platform_mhu_driver rx_dev;
-	struct platform_mhu_driver tx_dev;
-};
-
-struct rss_comms_platform *rss_comms_platform_init(void)
-{
-	struct rss_comms_platform *rss_comms_plat = NULL;
-	int ret = 0;
-
-	rss_comms_plat = calloc(1, sizeof(*rss_comms_plat));
-	if (!rss_comms_plat) {
-		EMSG("rss_comms calloc dev failed");
-		return NULL;
-	}
-
-	ret = platform_mhu_create(&rss_comms_plat->rx_dev, "mhu-receiver", true);
-	if (ret < 0)
-		goto free_plat;
-
-	ret = platform_mhu_create(&rss_comms_plat->tx_dev, "mhu-sender", false);
-	if (ret < 0)
-		goto free_rx_dev;
-
-	return rss_comms_plat;
-
-free_rx_dev:
-	platform_mhu_destroy(&rss_comms_plat->rx_dev);
-free_plat:
-	free(rss_comms_plat);
-
-	return NULL;
-}
-
-int rss_comms_platform_deinit(struct rss_comms_platform *rss_comms_plat)
-{
-	if (!rss_comms_plat)
-		return -1;
-
-	platform_mhu_destroy(&rss_comms_plat->rx_dev);
-	platform_mhu_destroy(&rss_comms_plat->tx_dev);
-
-	free(rss_comms_plat);
-
-	return 0;
-}
-
-int rss_comms_platform_invoke(struct rss_comms_platform *rss_comms_plat, uint8_t *resp_buf,
-			      uint8_t *req_buf, size_t *resp_len, size_t req_len)
-{
-	struct platform_mhu_driver *rx_dev = NULL;
-	struct platform_mhu_driver *tx_dev = NULL;
-	int err = 0;
-
-	if (!rss_comms_plat || !resp_buf || !req_buf)
-		return -1;
-
-	rx_dev = &rss_comms_plat->rx_dev;
-	tx_dev = &rss_comms_plat->tx_dev;
-
-	if (!tx_dev->iface || !tx_dev->iface->send)
-		return -1;
-
-	err = tx_dev->iface->send(tx_dev->context, req_buf, req_len);
-	if (err != 0) {
-		EMSG("mhu send data failed!");
-		return -1;
-	}
-
-	if (!rx_dev->iface || !rx_dev->iface->wait_data || !rx_dev->iface->receive)
-		return -1;
-
-	err = rx_dev->iface->wait_data(rx_dev->context);
-	if (err != 0) {
-		EMSG("mhu wait for signal failed!");
-		return -1;
-	}
-
-	err = rx_dev->iface->receive(rx_dev->context, resp_buf, resp_len);
-	if (err != 0) {
-		EMSG("mhu receive data failed!");
-		return -1;
-	}
-
-	return 0;
-}
-
-int rss_comms_platform_begin(struct rss_comms_platform *rss_comms_plat, uint8_t *req_buf,
-			     size_t req_len)
-{
-	return 0;
-}
-
-int rss_comms_platform_end(struct rss_comms_platform *rss_comms_plat)
-{
-	return 0;
-}
diff --git a/components/messaging/rss_comms/sp/rss_comms_platform_api.h b/components/messaging/rss_comms/sp/rss_comms_platform_api.h
deleted file mode 100644
index ed55506..0000000
--- a/components/messaging/rss_comms/sp/rss_comms_platform_api.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __RSS_COMMS_PLATFORM_API_H__
-#define __RSS_COMMS_PLATFORM_API_H__
-
-#include <stdint.h>
-
-struct rss_comms_platform;
-
-struct rss_comms_platform *rss_comms_platform_init(void);
-int rss_comms_platform_deinit(struct rss_comms_platform *rss_comms_plat);
-int rss_comms_platform_invoke(struct rss_comms_platform *rss_comms_plat, uint8_t *resp_buf,
-			      uint8_t *req_buf, size_t *resp_len, size_t req_len);
-int rss_comms_platform_begin(struct rss_comms_platform *rss_comms_plat, uint8_t *req_buf,
-			     size_t req_len);
-int rss_comms_platform_end(struct rss_comms_platform *rss_comms_plat);
-
-#endif /* __RSS_COMMS_PLATFORM_API_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_caller.c b/components/rpc/rse_comms/caller/sp/rse_comms_caller.c
similarity index 66%
rename from components/rpc/rss_comms/caller/sp/rss_comms_caller.c
rename to components/rpc/rse_comms/caller/sp/rse_comms_caller.c
index d857a2e..964b391 100644
--- a/components/rpc/rss_comms/caller/sp/rss_comms_caller.c
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_caller.c
@@ -4,7 +4,7 @@
  * SPDX-License-Identifier: BSD-3-Clause
  */
 
-#include "rss_comms_caller.h"
+#include "rse_comms_caller.h"
 
 #include <stddef.h>
 #include <stdlib.h>
@@ -13,8 +13,8 @@
 #include "rpc_caller.h"
 #include "rpc_status.h"
 
-struct rss_comms_caller_context {
-	struct rss_comms_messenger rss_comms;
+struct rse_comms_caller_context {
+	struct rse_comms_messenger rse_comms;
 };
 
 rpc_status_t open_session(void *context, const struct rpc_uuid *service_uuid, uint16_t endpoint_id)
@@ -49,19 +49,19 @@
 	return RPC_ERROR_INTERNAL;
 }
 
-rpc_status_t rss_comms_caller_invoke(rss_comms_call_handle handle, uint32_t opcode,
+rpc_status_t rse_comms_caller_invoke(rse_comms_call_handle handle, uint32_t opcode,
 				     uint8_t **response_buffer, size_t *response_length)
 {
 	struct rpc_caller_interface *caller = (struct rpc_caller_interface *)handle;
-	struct rss_comms_caller_context *context = NULL;
+	struct rse_comms_caller_context *context = NULL;
 	int ret = 0;
 
 	if (!handle || !caller->context)
 		return RPC_ERROR_INVALID_VALUE;
 
-	context = (struct rss_comms_caller_context *)caller->context;
+	context = (struct rse_comms_caller_context *)caller->context;
 
-	ret = rss_comms_messenger_call_invoke(&context->rss_comms, response_buffer,
+	ret = rse_comms_messenger_call_invoke(&context->rse_comms, response_buffer,
 					      response_length);
 	if (ret < 0)
 		return RPC_ERROR_TRANSPORT_LAYER;
@@ -69,20 +69,20 @@
 	return RPC_SUCCESS;
 }
 
-rpc_status_t rss_comms_caller_init(struct rpc_caller_interface *rpc_caller)
+rpc_status_t rse_comms_caller_init(struct rpc_caller_interface *rpc_caller)
 {
-	struct rss_comms_caller_context *context = NULL;
+	struct rse_comms_caller_context *context = NULL;
 	int ret = 0;
 
 	if (!rpc_caller || rpc_caller->context)
 		return RPC_ERROR_INVALID_VALUE;
 
-	context = (struct rss_comms_caller_context *)calloc(1,
-				sizeof(struct rss_comms_caller_context));
+	context = (struct rse_comms_caller_context *)calloc(1,
+				sizeof(struct rse_comms_caller_context));
 	if (!context)
 		return RPC_ERROR_INTERNAL;
 
-	ret = rss_comms_messenger_init(&context->rss_comms);
+	ret = rse_comms_messenger_init(&context->rse_comms);
 
 	if (ret < 0) {
 		free(context);
@@ -100,18 +100,18 @@
 	return RPC_SUCCESS;
 }
 
-rss_comms_call_handle rss_comms_caller_begin(struct rpc_caller_interface *caller,
+rse_comms_call_handle rse_comms_caller_begin(struct rpc_caller_interface *caller,
 					     uint8_t **request_buffer, size_t request_length)
 {
-	struct rss_comms_caller_context *context = NULL;
+	struct rse_comms_caller_context *context = NULL;
 	int ret = 0;
 
 	if (!caller || !caller->context)
 		return NULL;
 
-	context = (struct rss_comms_caller_context *)caller->context;
+	context = (struct rse_comms_caller_context *)caller->context;
 
-	ret = rss_comms_messenger_call_begin(&context->rss_comms, request_buffer, request_length);
+	ret = rse_comms_messenger_call_begin(&context->rse_comms, request_buffer, request_length);
 
 	if (ret < 0)
 		return NULL;
@@ -119,31 +119,31 @@
 	return caller;
 }
 
-rpc_status_t rss_comms_caller_end(rss_comms_call_handle handle)
+rpc_status_t rse_comms_caller_end(rse_comms_call_handle handle)
 {
 	struct rpc_caller_interface *caller = (struct rpc_caller_interface *)handle;
-	struct rss_comms_caller_context *context = NULL;
+	struct rse_comms_caller_context *context = NULL;
 
 	if (!handle || !caller->context)
 		return RPC_ERROR_INVALID_VALUE;
 
-	context = (struct rss_comms_caller_context *)caller->context;
+	context = (struct rse_comms_caller_context *)caller->context;
 
-	rss_comms_messenger_call_end(&context->rss_comms);
+	rse_comms_messenger_call_end(&context->rse_comms);
 
 	return RPC_SUCCESS;
 }
 
-rpc_status_t rss_comms_caller_deinit(struct rpc_caller_interface *rpc_caller)
+rpc_status_t rse_comms_caller_deinit(struct rpc_caller_interface *rpc_caller)
 {
-	struct rss_comms_caller_context *context = NULL;
+	struct rse_comms_caller_context *context = NULL;
 
 	if (!rpc_caller)
 		return RPC_ERROR_INVALID_VALUE;
 
-	context = (struct rss_comms_caller_context *)rpc_caller->context;
+	context = (struct rse_comms_caller_context *)rpc_caller->context;
 
-	rss_comms_messenger_deinit(&context->rss_comms);
+	rse_comms_messenger_deinit(&context->rse_comms);
 
 	free(context);
 	rpc_caller->context = NULL;
diff --git a/components/rpc/rse_comms/caller/sp/rse_comms_caller.h b/components/rpc/rse_comms/caller/sp/rse_comms_caller.h
new file mode 100644
index 0000000..7c8c38e
--- /dev/null
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_caller.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef __RSE_COMMS_CALLER_H__
+#define __RSE_COMMS_CALLER_H__
+
+#include "rpc_caller.h"
+#include "rse_comms_messenger_api.h"
+
+typedef void *rse_comms_call_handle;
+
+rpc_status_t rse_comms_caller_init(struct rpc_caller_interface *rpc_caller);
+rpc_status_t rse_comms_caller_deinit(struct rpc_caller_interface *rpc_caller);
+
+rse_comms_call_handle rse_comms_caller_begin(struct rpc_caller_interface *caller,
+					     uint8_t **request_buffer, size_t request_length);
+
+rpc_status_t rse_comms_caller_invoke(rse_comms_call_handle handle, uint32_t opcode,
+				     uint8_t **response_buffer, size_t *response_length);
+
+rpc_status_t rse_comms_caller_end(rse_comms_call_handle handle);
+
+#endif /* __RSE_COMMS_CALLER_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol.c b/components/rpc/rse_comms/caller/sp/rse_comms_protocol.c
similarity index 62%
rename from components/rpc/rss_comms/caller/sp/rss_comms_protocol.c
rename to components/rpc/rse_comms/caller/sp/rse_comms_protocol.c
index 7969536..7c2f476 100644
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol.c
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol.c
@@ -6,15 +6,15 @@
  */
 #include <assert.h>
 
-#include "rss_comms_protocol.h"
+#include "rse_comms_protocol.h"
 
-psa_status_t rss_protocol_serialize_msg(psa_handle_t handle,
+psa_status_t rse_protocol_serialize_msg(psa_handle_t handle,
 					int16_t type,
 					const struct psa_invec *in_vec,
 					uint8_t in_len,
 					const struct psa_outvec *out_vec,
 					uint8_t out_len,
-					struct serialized_rss_comms_msg_t *msg,
+					struct serialized_rse_comms_msg_t *msg,
 					size_t *msg_len)
 {
 	psa_status_t status = PSA_SUCCESS;
@@ -24,15 +24,15 @@
 	assert(in_vec != NULL);
 
 	switch (msg->header.protocol_ver) {
-	case RSS_COMMS_PROTOCOL_EMBED:
-		status = rss_protocol_embed_serialize_msg(handle, type, in_vec, in_len, out_vec,
+	case RSE_COMMS_PROTOCOL_EMBED:
+		status = rse_protocol_embed_serialize_msg(handle, type, in_vec, in_len, out_vec,
 							  out_len, &msg->msg.embed, msg_len);
 		if (status != PSA_SUCCESS) {
 			return status;
 		}
 		break;
-	case RSS_COMMS_PROTOCOL_POINTER_ACCESS:
-		status = rss_protocol_pointer_access_serialize_msg(handle, type, in_vec, in_len,
+	case RSE_COMMS_PROTOCOL_POINTER_ACCESS:
+		status = rse_protocol_pointer_access_serialize_msg(handle, type, in_vec, in_len,
 								   out_vec, out_len,
 								   &msg->msg.pointer_access,
 								   msg_len);
@@ -44,26 +44,26 @@
 		return PSA_ERROR_NOT_SUPPORTED;
 	}
 
-	*msg_len += sizeof(struct serialized_rss_comms_header_t);
+	*msg_len += sizeof(struct serialized_rse_comms_header_t);
 
 	return PSA_SUCCESS;
 }
 
-psa_status_t rss_protocol_deserialize_reply(struct psa_outvec *out_vec,
+psa_status_t rse_protocol_deserialize_reply(struct psa_outvec *out_vec,
 					    uint8_t out_len,
 					    psa_status_t *return_val,
-					    const struct serialized_rss_comms_reply_t *reply,
+					    const struct serialized_rse_comms_reply_t *reply,
 					    size_t reply_size)
 {
 	assert(reply != NULL);
 	assert(return_val != NULL);
 
 	switch (reply->header.protocol_ver) {
-	case RSS_COMMS_PROTOCOL_EMBED:
-		return rss_protocol_embed_deserialize_reply(out_vec, out_len, return_val,
+	case RSE_COMMS_PROTOCOL_EMBED:
+		return rse_protocol_embed_deserialize_reply(out_vec, out_len, return_val,
 							    &reply->reply.embed, reply_size);
-	case RSS_COMMS_PROTOCOL_POINTER_ACCESS:
-		return rss_protocol_pointer_access_deserialize_reply(out_vec, out_len, return_val,
+	case RSE_COMMS_PROTOCOL_POINTER_ACCESS:
+		return rse_protocol_pointer_access_deserialize_reply(out_vec, out_len, return_val,
 								     &reply->reply.pointer_access,
 								     reply_size);
 	default:
@@ -73,7 +73,7 @@
 	return PSA_SUCCESS;
 }
 
-psa_status_t rss_protocol_calculate_msg_len(psa_handle_t handle,
+psa_status_t rse_protocol_calculate_msg_len(psa_handle_t handle,
 					    uint8_t protocol_ver,
 					    const struct psa_invec *in_vec,
 					    uint8_t in_len,
@@ -85,18 +85,18 @@
 	assert(in_vec != NULL);
 
 	switch (protocol_ver) {
-	case RSS_COMMS_PROTOCOL_EMBED:
-		status = rss_protocol_embed_calculate_msg_len(handle, in_vec, in_len, msg_len);
+	case RSE_COMMS_PROTOCOL_EMBED:
+		status = rse_protocol_embed_calculate_msg_len(handle, in_vec, in_len, msg_len);
 		if (status != PSA_SUCCESS)
 			return status;
 
 		break;
-	case RSS_COMMS_PROTOCOL_POINTER_ACCESS:
+	case RSE_COMMS_PROTOCOL_POINTER_ACCESS:
 	default:
 		return PSA_ERROR_NOT_SUPPORTED;
 	}
 
-	*msg_len += sizeof(struct serialized_rss_comms_header_t);
+	*msg_len += sizeof(struct serialized_rse_comms_header_t);
 
 	return PSA_SUCCESS;
 }
diff --git a/components/rpc/rse_comms/caller/sp/rse_comms_protocol.h b/components/rpc/rse_comms/caller/sp/rse_comms_protocol.h
new file mode 100644
index 0000000..5c0f8a9
--- /dev/null
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __RSE_COMMS_PROTOCOL_H__
+#define __RSE_COMMS_PROTOCOL_H__
+
+#include <stdint.h>
+
+#include <psa/client.h>
+#include "rse_comms_protocol_embed.h"
+#include "rse_comms_protocol_pointer_access.h"
+#include "service/common/include/psa/client.h"
+
+enum rse_comms_protocol_version_t {
+	RSE_COMMS_PROTOCOL_EMBED = 0,
+	RSE_COMMS_PROTOCOL_POINTER_ACCESS = 1,
+};
+
+struct __packed serialized_rse_comms_header_t {
+	uint8_t protocol_ver;
+	uint8_t seq_num;
+	uint16_t client_id;
+};
+
+/* MHU message passed from Host to RSE to deliver a PSA client call */
+struct __packed serialized_rse_comms_msg_t {
+	struct serialized_rse_comms_header_t header;
+	union __packed {
+		struct rse_embed_msg_t embed;
+		struct rse_pointer_access_msg_t pointer_access;
+	} msg;
+};
+
+/* MHU reply message to hold the PSA client reply result returned by RSE */
+struct __packed serialized_rse_comms_reply_t {
+	struct serialized_rse_comms_header_t header;
+	union __packed {
+		struct rse_embed_reply_t embed;
+		struct rse_pointer_access_reply_t pointer_access;
+	} reply;
+};
+
+psa_status_t rse_protocol_serialize_msg(psa_handle_t handle,
+					int16_t type,
+					const struct psa_invec *in_vec,
+					uint8_t in_len,
+					const struct psa_outvec *out_vec,
+					uint8_t out_len,
+					struct serialized_rse_comms_msg_t *msg,
+					size_t *msg_len);
+
+psa_status_t rse_protocol_deserialize_reply(struct psa_outvec *out_vec,
+					    uint8_t out_len,
+					    psa_status_t *return_val,
+					    const struct serialized_rse_comms_reply_t *reply,
+					    size_t reply_size);
+
+psa_status_t rse_protocol_calculate_msg_len(psa_handle_t handle,
+					    uint8_t protocol_ver,
+					    const struct psa_invec *in_vec,
+					    uint8_t in_len,
+					    size_t *msg_len);
+
+#endif /* __RSE_COMMS_PROTOCOL_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_common.h b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_common.h
similarity index 89%
rename from components/rpc/rss_comms/caller/sp/rss_comms_protocol_common.h
rename to components/rpc/rse_comms/caller/sp/rse_comms_protocol_common.h
index 177d636..235ea92 100644
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_common.h
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_common.h
@@ -17,8 +17,8 @@
  * Res: Reserved.
  */
 
-#ifndef RSS_COMMS_PROTOCOL_COMMON
-#define RSS_COMMS_PROTOCOL_COMMON
+#ifndef RSE_COMMS_PROTOCOL_COMMON
+#define RSE_COMMS_PROTOCOL_COMMON
 
 #define TYPE_OFFSET	(0U)
 #define TYPE_MASK	(0xFFFFUL << TYPE_OFFSET)
@@ -32,4 +32,4 @@
 	 ((((uint32_t)(in_len)) << IN_LEN_OFFSET) & IN_LEN_MASK) | \
 	 ((((uint32_t)(out_len)) << OUT_LEN_OFFSET) & OUT_LEN_MASK))
 
-#endif /* RSS_COMMS_PROTOCOL_COMMON */
+#endif /* RSE_COMMS_PROTOCOL_COMMON */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.c b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.c
similarity index 83%
rename from components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.c
rename to components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.c
index 6d96ff2..8b6e2f6 100644
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.c
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.c
@@ -8,16 +8,16 @@
 #include <assert.h>
 #include <string.h>
 
-#include "rss_comms_protocol_common.h"
-#include "rss_comms_protocol_embed.h"
+#include "rse_comms_protocol_common.h"
+#include "rse_comms_protocol_embed.h"
 
-psa_status_t rss_protocol_embed_serialize_msg(psa_handle_t handle,
+psa_status_t rse_protocol_embed_serialize_msg(psa_handle_t handle,
 					      int16_t type,
 					      const struct psa_invec *in_vec,
 					      uint8_t in_len,
 					      const struct psa_outvec *out_vec,
 					      uint8_t out_len,
-					      struct rss_embed_msg_t *msg,
+					      struct rse_embed_msg_t *msg,
 					      size_t *msg_len)
 {
 	uint32_t payload_size = 0;
@@ -54,10 +54,10 @@
 	return PSA_SUCCESS;
 }
 
-psa_status_t rss_protocol_embed_deserialize_reply(struct psa_outvec *out_vec,
+psa_status_t rse_protocol_embed_deserialize_reply(struct psa_outvec *out_vec,
 						  uint8_t out_len,
 						  psa_status_t *return_val,
-						  const struct rss_embed_reply_t *reply,
+						  const struct rse_embed_reply_t *reply,
 						  size_t reply_size)
 {
 	uint32_t payload_offset = 0;
@@ -84,7 +84,7 @@
 	return PSA_SUCCESS;
 }
 
-psa_status_t rss_protocol_embed_calculate_msg_len(psa_handle_t handle,
+psa_status_t rse_protocol_embed_calculate_msg_len(psa_handle_t handle,
 						  const struct psa_invec *in_vec,
 						  uint8_t in_len,
 						  size_t *msg_len)
@@ -99,7 +99,7 @@
 		payload_size += in_vec[i].len;
 
 	/* Output the actual size of the message, to optimize sending */
-	*msg_len = offsetof(struct rss_embed_msg_t, trailer) + payload_size;
+	*msg_len = offsetof(struct rse_embed_msg_t, trailer) + payload_size;
 
 	return PSA_SUCCESS;
 }
diff --git a/components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.h b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.h
new file mode 100644
index 0000000..e7f66b8
--- /dev/null
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_embed.h
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __RSE_COMMS_PROTOCOL_EMBED_H__
+#define __RSE_COMMS_PROTOCOL_EMBED_H__
+
+#include <psa/client.h>
+#include <sys/cdefs.h>
+
+struct __packed rse_embed_msg_t {
+	psa_handle_t handle;
+	uint32_t ctrl_param; /* type, in_len, out_len */
+	uint16_t io_size[PSA_MAX_IOVEC];
+	uint8_t trailer[PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE];
+};
+
+struct __packed rse_embed_reply_t {
+	int32_t return_val;
+	uint16_t out_size[PSA_MAX_IOVEC];
+	uint8_t trailer[PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE];
+};
+
+psa_status_t rse_protocol_embed_serialize_msg(psa_handle_t handle,
+					      int16_t type,
+					      const struct psa_invec *in_vec,
+					      uint8_t in_len,
+					      const struct psa_outvec *out_vec,
+					      uint8_t out_len,
+					      struct rse_embed_msg_t *msg,
+					      size_t *msg_len);
+
+psa_status_t rse_protocol_embed_deserialize_reply(struct psa_outvec *out_vec,
+						  uint8_t out_len,
+						  psa_status_t *return_val,
+						  const struct rse_embed_reply_t *reply,
+						  size_t reply_size);
+
+psa_status_t rse_protocol_embed_calculate_msg_len(psa_handle_t handle,
+						  const struct psa_invec *in_vec,
+						  uint8_t in_len,
+						  size_t *msg_len);
+
+#endif /* __RSE_COMMS_PROTOCOL_EMBED_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.c b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.c
similarity index 78%
rename from components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.c
rename to components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.c
index 6d7d771..1bbdc3d 100644
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.c
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.c
@@ -6,16 +6,16 @@
  */
 #include <assert.h>
 
-#include "rss_comms_protocol_common.h"
-#include "rss_comms_protocol_pointer_access.h"
+#include "rse_comms_protocol_common.h"
+#include "rse_comms_protocol_pointer_access.h"
 
-psa_status_t rss_protocol_pointer_access_serialize_msg(psa_handle_t handle,
+psa_status_t rse_protocol_pointer_access_serialize_msg(psa_handle_t handle,
 						       int16_t type,
 						       const struct psa_invec *in_vec,
 						       uint8_t in_len,
 						       const struct psa_outvec *out_vec,
 						       uint8_t out_len,
-						       struct rss_pointer_access_msg_t *msg,
+						       struct rse_pointer_access_msg_t *msg,
 						       size_t *msg_len)
 {
 	unsigned int i;
@@ -42,10 +42,10 @@
 	return PSA_SUCCESS;
 }
 
-psa_status_t rss_protocol_pointer_access_deserialize_reply(struct psa_outvec *out_vec,
+psa_status_t rse_protocol_pointer_access_deserialize_reply(struct psa_outvec *out_vec,
 							   uint8_t out_len,
 							   psa_status_t *return_val,
-							   const struct rss_pointer_access_reply_t *reply,
+							   const struct rse_pointer_access_reply_t *reply,
 							   size_t reply_size)
 {
 	unsigned int i;
diff --git a/components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.h b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.h
new file mode 100644
index 0000000..84845a9
--- /dev/null
+++ b/components/rpc/rse_comms/caller/sp/rse_comms_protocol_pointer_access.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
+ */
+
+#ifndef __RSE_COMMS_PROTOCOL_POINTER_ACCESS_H__
+#define __RSE_COMMS_PROTOCOL_POINTER_ACCESS_H__
+
+
+#include <psa/client.h>
+#include <sys/cdefs.h>
+
+struct __packed rse_pointer_access_msg_t {
+	psa_handle_t handle;
+	uint32_t ctrl_param;
+	uint32_t io_sizes[PSA_MAX_IOVEC];
+	uint64_t host_ptrs[PSA_MAX_IOVEC];
+};
+
+struct __packed rse_pointer_access_reply_t {
+	int32_t return_val;
+	uint32_t out_sizes[PSA_MAX_IOVEC];
+};
+
+psa_status_t rse_protocol_pointer_access_serialize_msg(psa_handle_t handle,
+						       int16_t type,
+						       const struct psa_invec *in_vec,
+						       uint8_t in_len,
+						       const struct psa_outvec *out_vec,
+						       uint8_t out_len,
+						       struct rse_pointer_access_msg_t *msg,
+						       size_t *msg_len);
+
+psa_status_t rse_protocol_pointer_access_deserialize_reply(struct psa_outvec *out_vec,
+							   uint8_t out_len,
+							   psa_status_t *return_val,
+							   const struct rse_pointer_access_reply_t *reply,
+							   size_t reply_size);
+
+#endif /* __RSE_COMMS_PROTOCOL_POINTER_ACCESS_H__ */
diff --git a/components/rpc/rss_comms/component.cmake b/components/rpc/rse_comms/component.cmake
similarity index 62%
rename from components/rpc/rss_comms/component.cmake
rename to components/rpc/rse_comms/component.cmake
index 1cafb5c..fd6b4f3 100644
--- a/components/rpc/rss_comms/component.cmake
+++ b/components/rpc/rse_comms/component.cmake
@@ -9,15 +9,15 @@
 endif()
 
 set_property(TARGET ${TGT} APPEND PROPERTY PUBLIC_HEADER
-	${CMAKE_CURRENT_LIST_DIR}/caller/sp/rss_comms_caller.h
+	${CMAKE_CURRENT_LIST_DIR}/caller/sp/rse_comms_caller.h
 	)
 
 target_sources(${TGT} PRIVATE
-	"${CMAKE_CURRENT_LIST_DIR}/rss_comms.c"
-	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rss_comms_caller.c"
-	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rss_comms_protocol.c"
-	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rss_comms_protocol_embed.c"
-	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rss_comms_protocol_pointer_access.c"
+	"${CMAKE_CURRENT_LIST_DIR}/rse_comms.c"
+	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rse_comms_caller.c"
+	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rse_comms_protocol.c"
+	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rse_comms_protocol_embed.c"
+	"${CMAKE_CURRENT_LIST_DIR}/caller/sp/rse_comms_protocol_pointer_access.c"
 	)
 
 target_include_directories(${TGT}
diff --git a/components/rpc/rss_comms/rss_comms.c b/components/rpc/rse_comms/rse_comms.c
similarity index 80%
rename from components/rpc/rss_comms/rss_comms.c
rename to components/rpc/rse_comms/rse_comms.c
index 267d134..691c7ef 100644
--- a/components/rpc/rss_comms/rss_comms.c
+++ b/components/rpc/rse_comms/rse_comms.c
@@ -9,8 +9,8 @@
 
 #include "protocols/rpc/common/packed-c/status.h"
 #include "psa/client.h"
-#include "rss_comms_caller.h"
-#include "rss_comms_protocol.h"
+#include "rse_comms_caller.h"
+#include "rse_comms_protocol.h"
 #include "trace.h"
 
 /* This value should be set according to the implemented channels
@@ -37,12 +37,12 @@
 		out_size_total += out_vec[i].len;
 	}
 
-	comms_embed_msg_min_size = sizeof(struct serialized_rss_comms_header_t) +
-				   sizeof(struct rss_embed_msg_t) - PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE;
+	comms_embed_msg_min_size = sizeof(struct serialized_rse_comms_header_t) +
+				   sizeof(struct rse_embed_msg_t) - PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE;
 
-	comms_embed_reply_min_size = sizeof(struct serialized_rss_comms_header_t) +
-				     sizeof(struct rss_embed_reply_t) -
-				     PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE;
+	comms_embed_reply_min_size = sizeof(struct serialized_rse_comms_header_t) +
+				     sizeof(struct rse_embed_reply_t) -
+				     PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE;
 
 	/* Use embed if we can pack into one message and reply, else use
 	 * pointer_access. The underlying MHU transport protocol uses a
@@ -59,9 +59,9 @@
 	     COMMS_MHU_MSG_SIZE - sizeof(uint32_t)) ||
 	    (comms_embed_reply_min_size + out_size_total >
 	     COMMS_MHU_MSG_SIZE - sizeof(uint32_t))) {
-		return RSS_COMMS_PROTOCOL_POINTER_ACCESS;
+		return RSE_COMMS_PROTOCOL_POINTER_ACCESS;
 	} else {
-		return RSS_COMMS_PROTOCOL_EMBED;
+		return RSE_COMMS_PROTOCOL_EMBED;
 	}
 }
 
@@ -73,22 +73,22 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 	psa_status_t psa_status = PSA_ERROR_INVALID_ARGUMENT;
 	psa_status_t return_val = PSA_ERROR_INVALID_ARGUMENT;
-	rss_comms_call_handle rpc_handle = (rss_comms_call_handle)caller;
+	rse_comms_call_handle rpc_handle = (rse_comms_call_handle)caller;
 	size_t req_len = 0;
 	size_t resp_len = 0;
-	struct serialized_rss_comms_msg_t *req = NULL;
-	struct serialized_rss_comms_reply_t *reply = NULL;
+	struct serialized_rse_comms_msg_t *req = NULL;
+	struct serialized_rse_comms_reply_t *reply = NULL;
 	uint8_t protocol_ver = 0;
 
 	protocol_ver = select_protocol_version(in_vec, in_len, out_vec, out_len);
 
-	psa_status = rss_protocol_calculate_msg_len(handle, protocol_ver, in_vec, in_len, &req_len);
+	psa_status = rse_protocol_calculate_msg_len(handle, protocol_ver, in_vec, in_len, &req_len);
 	if (psa_status != PSA_SUCCESS) {
 		EMSG("Message size calculation failed: %d", psa_status);
 		return psa_status;
 	}
 
-	rpc_handle = rss_comms_caller_begin(caller, (uint8_t **)&req, req_len);
+	rpc_handle = rse_comms_caller_begin(caller, (uint8_t **)&req, req_len);
 	if (!rpc_handle) {
 		EMSG("Could not get handle");
 		return PSA_ERROR_GENERIC_ERROR;
@@ -99,33 +99,33 @@
 	req->header.client_id = client_id;
 	req->header.protocol_ver = protocol_ver;
 
-	psa_status = rss_protocol_serialize_msg(handle, type, in_vec, in_len, out_vec, out_len, req,
+	psa_status = rse_protocol_serialize_msg(handle, type, in_vec, in_len, out_vec, out_len, req,
 						&req_len);
 	if (psa_status != PSA_SUCCESS) {
 		EMSG("Serialize msg failed: %d", psa_status);
 		return psa_status;
 	}
 
-	DMSG("Sending rss_comms message");
+	DMSG("Sending rse_comms message");
 	DMSG("protocol_ver=%u", req->header.protocol_ver);
 	DMSG("seq_num=%u", req->header.seq_num);
 	DMSG("client_id=%u", req->header.client_id);
 
 	resp_len = sizeof(*reply);
 
-	rpc_status = rss_comms_caller_invoke(rpc_handle, 0, (uint8_t **)&reply, &resp_len);
+	rpc_status = rse_comms_caller_invoke(rpc_handle, 0, (uint8_t **)&reply, &resp_len);
 	if (rpc_status != RPC_SUCCESS) {
 		EMSG("Invoke failed: %d", rpc_status);
 		return PSA_ERROR_GENERIC_ERROR;
 	}
 
-	DMSG("Received rss_comms reply");
+	DMSG("Received rse_comms reply");
 	DMSG("protocol_ver=%u", reply->header.protocol_ver);
 	DMSG("seq_num=%u", reply->header.seq_num);
 	DMSG("client_id=%u", reply->header.client_id);
 	DMSG("resp_len=%lu", resp_len);
 
-	psa_status = rss_protocol_deserialize_reply(out_vec, out_len, &return_val, reply, resp_len);
+	psa_status = rse_protocol_deserialize_reply(out_vec, out_len, &return_val, reply, resp_len);
 	if (psa_status != PSA_SUCCESS) {
 		EMSG("Protocol deserialize reply failed: %d", psa_status);
 		return psa_status;
@@ -133,7 +133,7 @@
 
 	DMSG("Return_val=%d", return_val);
 
-	rss_comms_caller_end(rpc_handle);
+	rse_comms_caller_end(rpc_handle);
 
 	seq_num++;
 
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_caller.h b/components/rpc/rss_comms/caller/sp/rss_comms_caller.h
deleted file mode 100644
index a62edb5..0000000
--- a/components/rpc/rss_comms/caller/sp/rss_comms_caller.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2024, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __RSS_COMMS_CALLER_H__
-#define __RSS_COMMS_CALLER_H__
-
-#include "rpc_caller.h"
-#include "rss_comms_messenger_api.h"
-
-typedef void *rss_comms_call_handle;
-
-rpc_status_t rss_comms_caller_init(struct rpc_caller_interface *rpc_caller);
-rpc_status_t rss_comms_caller_deinit(struct rpc_caller_interface *rpc_caller);
-
-rss_comms_call_handle rss_comms_caller_begin(struct rpc_caller_interface *caller,
-					     uint8_t **request_buffer, size_t request_length);
-
-rpc_status_t rss_comms_caller_invoke(rss_comms_call_handle handle, uint32_t opcode,
-				     uint8_t **response_buffer, size_t *response_length);
-
-rpc_status_t rss_comms_caller_end(rss_comms_call_handle handle);
-
-#endif /* __RSS_COMMS_CALLER_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol.h b/components/rpc/rss_comms/caller/sp/rss_comms_protocol.h
deleted file mode 100644
index 2d597b4..0000000
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __RSS_COMMS_PROTOCOL_H__
-#define __RSS_COMMS_PROTOCOL_H__
-
-#include <stdint.h>
-
-#include <psa/client.h>
-#include "rss_comms_protocol_embed.h"
-#include "rss_comms_protocol_pointer_access.h"
-#include "service/common/include/psa/client.h"
-
-enum rss_comms_protocol_version_t {
-	RSS_COMMS_PROTOCOL_EMBED = 0,
-	RSS_COMMS_PROTOCOL_POINTER_ACCESS = 1,
-};
-
-struct __packed serialized_rss_comms_header_t {
-	uint8_t protocol_ver;
-	uint8_t seq_num;
-	uint16_t client_id;
-};
-
-/* MHU message passed from Host to RSS to deliver a PSA client call */
-struct __packed serialized_rss_comms_msg_t {
-	struct serialized_rss_comms_header_t header;
-	union __packed {
-		struct rss_embed_msg_t embed;
-		struct rss_pointer_access_msg_t pointer_access;
-	} msg;
-};
-
-/* MHU reply message to hold the PSA client reply result returned by RSS */
-struct __packed serialized_rss_comms_reply_t {
-	struct serialized_rss_comms_header_t header;
-	union __packed {
-		struct rss_embed_reply_t embed;
-		struct rss_pointer_access_reply_t pointer_access;
-	} reply;
-};
-
-psa_status_t rss_protocol_serialize_msg(psa_handle_t handle,
-					int16_t type,
-					const struct psa_invec *in_vec,
-					uint8_t in_len,
-					const struct psa_outvec *out_vec,
-					uint8_t out_len,
-					struct serialized_rss_comms_msg_t *msg,
-					size_t *msg_len);
-
-psa_status_t rss_protocol_deserialize_reply(struct psa_outvec *out_vec,
-					    uint8_t out_len,
-					    psa_status_t *return_val,
-					    const struct serialized_rss_comms_reply_t *reply,
-					    size_t reply_size);
-
-psa_status_t rss_protocol_calculate_msg_len(psa_handle_t handle,
-					    uint8_t protocol_ver,
-					    const struct psa_invec *in_vec,
-					    uint8_t in_len,
-					    size_t *msg_len);
-
-#endif /* __RSS_COMMS_PROTOCOL_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.h b/components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.h
deleted file mode 100644
index 29e2250..0000000
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_embed.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __RSS_COMMS_PROTOCOL_EMBED_H__
-#define __RSS_COMMS_PROTOCOL_EMBED_H__
-
-#include <psa/client.h>
-#include <sys/cdefs.h>
-
-struct __packed rss_embed_msg_t {
-	psa_handle_t handle;
-	uint32_t ctrl_param; /* type, in_len, out_len */
-	uint16_t io_size[PSA_MAX_IOVEC];
-	uint8_t trailer[PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE];
-};
-
-struct __packed rss_embed_reply_t {
-	int32_t return_val;
-	uint16_t out_size[PSA_MAX_IOVEC];
-	uint8_t trailer[PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE];
-};
-
-psa_status_t rss_protocol_embed_serialize_msg(psa_handle_t handle,
-					      int16_t type,
-					      const struct psa_invec *in_vec,
-					      uint8_t in_len,
-					      const struct psa_outvec *out_vec,
-					      uint8_t out_len,
-					      struct rss_embed_msg_t *msg,
-					      size_t *msg_len);
-
-psa_status_t rss_protocol_embed_deserialize_reply(struct psa_outvec *out_vec,
-						  uint8_t out_len,
-						  psa_status_t *return_val,
-						  const struct rss_embed_reply_t *reply,
-						  size_t reply_size);
-
-psa_status_t rss_protocol_embed_calculate_msg_len(psa_handle_t handle,
-						  const struct psa_invec *in_vec,
-						  uint8_t in_len,
-						  size_t *msg_len);
-
-#endif /* __RSS_COMMS_PROTOCOL_EMBED_H__ */
diff --git a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.h b/components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.h
deleted file mode 100644
index a1b278c..0000000
--- a/components/rpc/rss_comms/caller/sp/rss_comms_protocol_pointer_access.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2022-2024, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- *
- */
-
-#ifndef __RSS_COMMS_PROTOCOL_POINTER_ACCESS_H__
-#define __RSS_COMMS_PROTOCOL_POINTER_ACCESS_H__
-
-
-#include <psa/client.h>
-#include <sys/cdefs.h>
-
-struct __packed rss_pointer_access_msg_t {
-	psa_handle_t handle;
-	uint32_t ctrl_param;
-	uint32_t io_sizes[PSA_MAX_IOVEC];
-	uint64_t host_ptrs[PSA_MAX_IOVEC];
-};
-
-struct __packed rss_pointer_access_reply_t {
-	int32_t return_val;
-	uint32_t out_sizes[PSA_MAX_IOVEC];
-};
-
-psa_status_t rss_protocol_pointer_access_serialize_msg(psa_handle_t handle,
-						       int16_t type,
-						       const struct psa_invec *in_vec,
-						       uint8_t in_len,
-						       const struct psa_outvec *out_vec,
-						       uint8_t out_len,
-						       struct rss_pointer_access_msg_t *msg,
-						       size_t *msg_len);
-
-psa_status_t rss_protocol_pointer_access_deserialize_reply(struct psa_outvec *out_vec,
-							   uint8_t out_len,
-							   psa_status_t *return_val,
-							   const struct rss_pointer_access_reply_t *reply,
-							   size_t reply_size);
-
-#endif /* __RSS_COMMS_PROTOCOL_POINTER_ACCESS_H__ */
diff --git a/components/service/fwu/installer/factory/default/installer_factory.c b/components/service/fwu/installer/factory/default/installer_factory.c
index 506f963..e697bf8 100644
--- a/components/service/fwu/installer/factory/default/installer_factory.c
+++ b/components/service/fwu/installer/factory/default/installer_factory.c
@@ -25,7 +25,7 @@
  *    storage volume (* n banks). A volume will normally map to a flash partition.
  * 2. SCP firmware, if present, is always updated as a single unit and resides in
  *    a separate storage volume.
- * 3. RSS firmware, if present, is always updated as a single unit and resides in
+ * 3. RSE firmware, if present, is always updated as a single unit and resides in
  *    a separate storage volume.
  */
 
@@ -62,7 +62,7 @@
 	if (installation_type == INSTALL_TYPE_WHOLE_VOLUME) {
 #ifdef RAW_INSTALLER_AVAILABLE
 		static const char *const raw_installer_compatibility[] = {
-			LOCATION_UUID_AP_FW, LOCATION_UUID_SCP_FW, LOCATION_UUID_RSS_FW, NULL
+			LOCATION_UUID_AP_FW, LOCATION_UUID_SCP_FW, LOCATION_UUID_RSE_FW, NULL
 		};
 
 		if (check_supported_locations(raw_installer_compatibility, location_uuid)) {
@@ -79,7 +79,7 @@
 	} else if (installation_type == INSTALL_TYPE_WHOLE_VOLUME_COPY) {
 #ifdef COPY_INSTALLER_AVAILABLE
 		static const char *const copy_installer_compatibility[] = {
-			LOCATION_UUID_AP_FW, LOCATION_UUID_SCP_FW, LOCATION_UUID_RSS_FW, NULL
+			LOCATION_UUID_AP_FW, LOCATION_UUID_SCP_FW, LOCATION_UUID_RSE_FW, NULL
 		};
 
 		if (check_supported_locations(copy_installer_compatibility, location_uuid)) {
diff --git a/components/service/fwu/installer/factory/default/test/default_installer_factory_tests.cpp b/components/service/fwu/installer/factory/default/test/default_installer_factory_tests.cpp
index 213a265..b03d250 100644
--- a/components/service/fwu/installer/factory/default/test/default_installer_factory_tests.cpp
+++ b/components/service/fwu/installer/factory/default/test/default_installer_factory_tests.cpp
@@ -39,7 +39,7 @@
 {
 	struct uuid_octets ap_fw_uuid;
 	struct uuid_octets scp_fw_uuid;
-	struct uuid_octets rss_fw_uuid;
+	struct uuid_octets rse_fw_uuid;
 
 	/* Check configuration operations that will be performed when
 	 * constructing a set of installers for a platform. The platform
@@ -89,25 +89,25 @@
 	installer_index_register(installer);
 	CHECK_TRUE(installer_index_find_by_location_uuid(&scp_fw_uuid));
 
-	/* Configure installers for updating RSS firmware */
-	uuid_guid_octets_from_canonical(&rss_fw_uuid, LOCATION_UUID_RSS_FW);
+	/* Configure installers for updating RSE firmware */
+	uuid_guid_octets_from_canonical(&rse_fw_uuid, LOCATION_UUID_RSE_FW);
 
 	/* Expect no installer to initially be registered */
-	CHECK_FALSE(installer_index_find_by_location_uuid(&rss_fw_uuid));
+	CHECK_FALSE(installer_index_find_by_location_uuid(&rse_fw_uuid));
 
 	/* Configure for whole volume and copy installation */
-	installer = installer_factory_create_installer(INSTALL_TYPE_WHOLE_VOLUME, 0, &rss_fw_uuid);
+	installer = installer_factory_create_installer(INSTALL_TYPE_WHOLE_VOLUME, 0, &rse_fw_uuid);
 	CHECK_TRUE(installer);
 
 	installer_index_register(installer);
-	CHECK_TRUE(installer_index_find_by_location_uuid(&rss_fw_uuid));
+	CHECK_TRUE(installer_index_find_by_location_uuid(&rse_fw_uuid));
 
 	installer =
-		installer_factory_create_installer(INSTALL_TYPE_WHOLE_VOLUME_COPY, 0, &rss_fw_uuid);
+		installer_factory_create_installer(INSTALL_TYPE_WHOLE_VOLUME_COPY, 0, &rse_fw_uuid);
 	CHECK_TRUE(installer);
 
 	installer_index_register(installer);
-	CHECK_TRUE(installer_index_find_by_location_uuid(&rss_fw_uuid));
+	CHECK_TRUE(installer_index_find_by_location_uuid(&rse_fw_uuid));
 
 	/* Now try and construct an installer for an unsupported partition type. */
 	struct uuid_octets unsupported_location_uuid;
diff --git a/components/service/fwu/installer/factory/locations.h b/components/service/fwu/installer/factory/locations.h
index 4df7843..d29f261 100644
--- a/components/service/fwu/installer/factory/locations.h
+++ b/components/service/fwu/installer/factory/locations.h
@@ -26,7 +26,7 @@
 /* Location UUID for SCP firmware */
 #define LOCATION_UUID_SCP_FW "691d5ea3-27fe-4104-badd-7539c00a9095"
 
-/* Location UUID for RSS firmware */
-#define LOCATION_UUID_RSS_FW "c948a156-58cb-4c38-b406-e60bff2223d5"
+/* Location UUID for RSE firmware */
+#define LOCATION_UUID_RSE_FW "c948a156-58cb-4c38-b406-e60bff2223d5"
 
 #endif /* INSTALLER_FACTORY_LOCATIONS_H */
diff --git a/deployments/se-proxy/infra/corstone1000/infra.cmake b/deployments/se-proxy/infra/corstone1000/infra.cmake
index 05b21cb..3830f9d 100644
--- a/deployments/se-proxy/infra/corstone1000/infra.cmake
+++ b/deployments/se-proxy/infra/corstone1000/infra.cmake
@@ -16,8 +16,8 @@
 	COMPONENTS
 		"components/common/uuid"
 		"components/rpc/common/caller"
-		"components/rpc/rss_comms"
-		"components/messaging/rss_comms/sp"
+		"components/rpc/rse_comms"
+		"components/messaging/rse_comms/sp"
 		"components/service/attestation/client/psa_ipc"
 		"components/service/attestation/key_mngr/local"
 		"components/service/attestation/reporter/psa_ipc"
diff --git a/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c b/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c
index 18cd7f6..759983b 100644
--- a/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c
+++ b/deployments/se-proxy/infra/corstone1000/service_proxy_factory.c
@@ -8,7 +8,7 @@
 #include <stddef.h>
 #include <psa/sid.h>
 #include "rpc/common/endpoint/rpc_service_interface.h"
-#include <rpc/rss_comms/caller/sp/rss_comms_caller.h>
+#include <rpc/rse_comms/caller/sp/rse_comms_caller.h>
 #include <service/attestation/provider/attest_provider.h>
 #include <service/attestation/provider/serializer/packed-c/packedc_attest_provider_serializer.h>
 #include <service/crypto/factory/crypto_provider_factory.h>
@@ -31,15 +31,15 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 
 	/* Static objects for proxy instance */
-	static struct rpc_caller_interface rss_comms = { 0 };
+	static struct rpc_caller_interface rse_comms = { 0 };
 	static struct rpc_caller_session rpc_session = { 0 };
 	static struct attest_provider attest_provider = { 0 };
 
-	rpc_status = rss_comms_caller_init(&rss_comms);
+	rpc_status = rse_comms_caller_init(&rse_comms);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
-	rpc_status = rpc_caller_session_open(&rpc_session, &rss_comms, &dummy_uuid, 0, 0);
+	rpc_status = rpc_caller_session_open(&rpc_session, &rse_comms, &dummy_uuid, 0, 0);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
@@ -60,14 +60,14 @@
 	rpc_status_t rpc_status = RPC_ERROR_INTERNAL;
 
 	/* Static objects for proxy instance */
-	static struct rpc_caller_interface rss_comms = { 0 };
+	static struct rpc_caller_interface rse_comms = { 0 };
 	static struct rpc_caller_session rpc_session = { 0 };
 
-	rpc_status = rss_comms_caller_init(&rss_comms);
+	rpc_status = rse_comms_caller_init(&rse_comms);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
-	rpc_status = rpc_caller_session_open(&rpc_session, &rss_comms, &dummy_uuid, 0, 0);
+	rpc_status = rpc_caller_session_open(&rpc_session, &rse_comms, &dummy_uuid, 0, 0);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
@@ -89,14 +89,14 @@
 	const struct rpc_uuid ps_uuid = { .uuid = TS_PSA_PROTECTED_STORAGE_UUID };
 
 	/* Static objects for proxy instance */
-	static struct rpc_caller_interface rss_comms = { 0 };
+	static struct rpc_caller_interface rse_comms = { 0 };
 	static struct rpc_caller_session rpc_session = { 0 };
 
-	rpc_status = rss_comms_caller_init(&rss_comms);
+	rpc_status = rse_comms_caller_init(&rse_comms);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
-	rpc_status = rpc_caller_session_open(&rpc_session, &rss_comms, &dummy_uuid, 0, 0);
+	rpc_status = rpc_caller_session_open(&rpc_session, &rse_comms, &dummy_uuid, 0, 0);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
@@ -115,14 +115,14 @@
 	const struct rpc_uuid its_uuid = { .uuid = TS_PSA_INTERNAL_TRUSTED_STORAGE_UUID };
 
 	/* Static objects for proxy instance */
-	static struct rpc_caller_interface rss_comms = { 0 };
+	static struct rpc_caller_interface rse_comms = { 0 };
 	static struct rpc_caller_session rpc_session = { 0 };
 
-	rpc_status = rss_comms_caller_init(&rss_comms);
+	rpc_status = rse_comms_caller_init(&rse_comms);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
-	rpc_status = rpc_caller_session_open(&rpc_session, &rss_comms, &dummy_uuid, 0, 0);
+	rpc_status = rpc_caller_session_open(&rpc_session, &rse_comms, &dummy_uuid, 0, 0);
 	if (rpc_status != RPC_SUCCESS)
 		return NULL;
 
diff --git a/docs/project/change-log.rst b/docs/project/change-log.rst
index b2b0b58..0ec74ba 100644
--- a/docs/project/change-log.rst
+++ b/docs/project/change-log.rst
@@ -23,8 +23,8 @@
 - Introduce the :ref:`Logging Service`.
 - Add crypto key store partitioning support to the Crypto Service. This feature allows isolating clients running in
   different SPs.
-- Add the "RSS Com" protocol. RSS Com is a new protocol used between secure partitions and security subsystems like the
-  Secure Enclave on Corstone-1000 or RSS on Kronos.
+- Add the "RSE Com" protocol. RSE Com is a new protocol used between secure partitions and security subsystems like the
+  Secure Enclave on Corstone-1000 or Runtime Security Engine on `RD-1 AE`_.
 
 
 Deprecations
@@ -212,7 +212,7 @@
 .. _`Corstone-1000 product homepage`: https://developer.arm.com/Processors/Corstone-1000
 .. _`Arm FWU-A specification`: https://developer.arm.com/documentation/den0118
 .. _`Trusted Services organization`: https://github.com/Trusted-Services
-
+.. _`RD-1 AE`: https://developer.arm.com/Tools%20and%20Software/Arm%20Reference%20Design-1%20AE
 
 *Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.*
 
diff --git a/docs/services/fwu/fwu-service-description.rst b/docs/services/fwu/fwu-service-description.rst
index 0fbc384..30e4d57 100644
--- a/docs/services/fwu/fwu-service-description.rst
+++ b/docs/services/fwu/fwu-service-description.rst
@@ -358,7 +358,7 @@
 
 Each installer is assigned a location ID to bind the installer to a particular firmware location.
 Location IDs are integer values defined by the configuration code. For example, where firmware
-consists of AP firmware, SCP firmware and RSS firmware, location IDs could be assigned as follows:
+consists of AP firmware, SCP firmware and RSE firmware, location IDs could be assigned as follows:
 
 .. list-table::
   :header-rows: 1
@@ -369,7 +369,7 @@
     - 0
   * - SCP firmware
     - 1
-  * - RSS firmware
+  * - RSE firmware
     - 2
 
 When volume objects are added to the volume index, each one is assigned a volume ID which is
@@ -415,7 +415,7 @@
 
   - **AP Firmware** - where application firmware is contained within a FIP
   - **SCP Firmware** - binary boot image for SCP
-  - **RSS Firmware** - binary boot image for RSS
+  - **RSE Firmware** - binary boot image for RSE
 
 The GPT based configurator relies on access to the GPT partition table. During initialization
 of the Update Agent, the configurator iterates over each partition entry. If no installers are
diff --git a/docs/services/image/gpt-based-flash-layout.svg b/docs/services/image/gpt-based-flash-layout.svg
index 8f1061c..04869eb 100644
--- a/docs/services/image/gpt-based-flash-layout.svg
+++ b/docs/services/image/gpt-based-flash-layout.svg
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!-- Do not edit this file with editors other than diagrams.net -->
+<!-- Do not edit this file with editors other than draw.io -->
 <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg xmlns="http://www.w3.org/2000/svg" style="background-color: rgb(255, 255, 255);" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="401px" height="781px" viewBox="-0.5 -0.5 401 781" content="&lt;mxfile host=&quot;confluence.arm.com&quot; modified=&quot;2023-02-16T09:50:57.516Z&quot; agent=&quot;5.0 (X11)&quot; etag=&quot;9oA7HNylA2Pn-M09WDsz&quot; version=&quot;20.3.7&quot; type=&quot;atlas&quot;&gt;&lt;mxAtlasLibraries/&gt;&lt;diagram id=&quot;MJao7NBNlqcqI8fyxszN&quot; name=&quot;Page-1&quot;&gt;7Zlbb9owGIZ/TS4tJfEB57LQwqqpHSLtql06sQNZkxgZM2C/fg6YEpZsgo0oakW4wH59iP0+/pBtHDjI1yPF5rMHyUXm+C5fO/DW8X0PQ2i+SmVjFRjgnTJVKbfaQQjTn8KKrlWXKReLo4paykyn82MxlkUhYn2kMaXk6rhaIrPjt87Z1L7RPQhhzDJRq/aScj3bqRRXan8S6XS2f7Pn2pKc7StbYTFjXK4qErxz4EBJqXepfD0QWene3pddu+EfSt8GpkShT2kA5UA9jb49DvjjZC7zBz9ffAe2lx8sW9oJj5XUxsj0hzD6Q39iB683e0eUXBZclJ26DuyvZqkW4ZzFZenKLAKjzXSemZxnkkmaZQOZSbVtCxMaizg2+kIr+SoqJRHFCJcd1qe1H6NQWqwrkp3mSMhcaLUxVWwpoNbyzW/51YEg2nOaVehBqzG7aKZvXR98NQlr7Rk2+w02pznbDno0frqsx7j8NHlMtk/ZQha6ou+elrzHJ3pP2vIe/sX74ctzucqFZpxp5vgkM6PpR8qkpmVqzJROdSoLU+tpMy9DYvR8f+vAG1OD5SWIIlqUX5T1GEXMBRTSHkBuQgCLkAcYjQKGGXG5Dy+LOUn85lDiJCKYtIPT65omqtE01t3cjMEwVfnKTPV/IPoIezEnAgRuIgCKPAyixHMBI0EUC58jRMlFIXIsKEdNEKkfQdISxF7XEHENoneFeG4kwq4pksZQDAeXwUgCzxjLIPB7JUbPRSBinIMehkHsuixw9zvJ940x6BpjrzEYrxjPwuh3vs2hjdE4CcOLYIwDRJmHCcA0jgCKIQURcgkQxI3MRsQvff8AGGHn+5ugMRqvGM/D2PkOZ7+OKhyf74b34CtTKYsysbisy0zQpPEsQGIqoqQdl9GpOxDcmsv164svocl/FqooL6Lev8Wn3ly0Z3H9+Dwpr6zM2Tn8AAbj7tdw/UTbZ/Hrcn69nvgHnKfGS3s//PWz7RvOj33TR1B73pvs4aJ8W1b5vwHe/QI=&lt;/diagram&gt;&lt;/mxfile&gt;"><defs/><g><rect x="0" y="0" width="400" height="30" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 15px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Protective MBR</div></div></div></foreignObject><text x="200" y="19" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Protective MBR</text></switch></g><rect x="0" y="30" width="400" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 60px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Primary GPT</div></div></div></foreignObject><text x="200" y="64" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Primary GPT</text></switch></g><rect x="0" y="90" width="400" height="60" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 120px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Primary FWU Metadata<br />Partition Type GUID: 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23</div></div></div></foreignObject><text x="200" y="124" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Primary FWU Metadata...</text></switch></g><rect x="0" y="150" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 180px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:AP-Firmware<br />Partition Type GUID: 2451cd6e-90fe-4b15-bf10-a69bce2d4486</div></div></div></foreignObject><text x="200" y="184" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">0:AP-Firmware...</text></switch></g><rect x="0" y="210" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 240px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:AP-Firmware<br />Partition Type GUID: 2451cd6e-90fe-4b15-bf10-a69bce2d4486</div></div></div></foreignObject><text x="200" y="244" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">1:AP-Firmware...</text></switch></g><rect x="0" y="270" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 300px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:SCP-Firmware<br />Partition Type GUID: 691d5ea3-27fe-4104-badd-7539c00a9095</div></div></div></foreignObject><text x="200" y="304" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">0:SCP-Firmware...</text></switch></g><rect x="0" y="330" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 360px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:SCP-Firmware<br />Partition Type GUID: 691d5ea3-27fe-4104-badd-7539c00a9095</div></div></div></foreignObject><text x="200" y="364" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">1:SCP-Firmware...</text></switch></g><rect x="0" y="390" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 420px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:RSS-Firmware<br />Partition Type GUID: c948a156-58cb-4c38-b406-e60bff2223d5</div></div></div></foreignObject><text x="200" y="424" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">0:RSS-Firmware...</text></switch></g><rect x="0" y="450" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 480px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:RSS-Firmware<br />Partition Type GUID: c948a156-58cb-4c38-b406-e60bff2223d5</div></div></div></foreignObject><text x="200" y="484" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">1:RSS-Firmware...</text></switch></g><rect x="0" y="510" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 535px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UEFI-Variables</div></div></div></foreignObject><text x="200" y="539" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">UEFI-Variables</text></switch></g><rect x="0" y="560" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 585px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">OS Kernel</div></div></div></foreignObject><text x="200" y="589" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">OS Kernel</text></switch></g><rect x="0" y="610" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 635px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Root FS</div></div></div></foreignObject><text x="200" y="639" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Root FS</text></switch></g><rect x="0" y="660" width="400" height="60" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 690px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: rgb(0, 0, 0); "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Backup FWU Metadata<br />Partition Type GUID: 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23</div></div></div></foreignObject><text x="200" y="694" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="12px" text-anchor="middle">Backup FWU Metadata...</text></switch></g><rect x="0" y="720" width="400" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject style="overflow: visible; text-align: left;" pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 750px; margin-left: 1px;"><div style="box-sizing: border-box; font-size: 0px; text-align: center;" data-drawio-colors="color: #333333; "><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Backup GPT</div></div></div></foreignObject><text x="200" y="754" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">Backup GPT</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="401px" height="781px" viewBox="-0.5 -0.5 401 781" content="&lt;mxfile host=&quot;app.diagrams.net&quot; agent=&quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0&quot; version=&quot;24.7.13&quot;&gt;&#10;  &lt;diagram id=&quot;MJao7NBNlqcqI8fyxszN&quot; name=&quot;Page-1&quot;&gt;&#10;    &lt;mxGraphModel dx=&quot;2466&quot; dy=&quot;1436&quot; grid=&quot;1&quot; gridSize=&quot;10&quot; guides=&quot;1&quot; tooltips=&quot;1&quot; connect=&quot;1&quot; arrows=&quot;1&quot; fold=&quot;1&quot; page=&quot;0&quot; pageScale=&quot;1&quot; pageWidth=&quot;850&quot; pageHeight=&quot;1100&quot; math=&quot;0&quot; shadow=&quot;0&quot;&gt;&#10;      &lt;root&gt;&#10;        &lt;mxCell id=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;1&quot; parent=&quot;0&quot; /&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-1&quot; value=&quot;Protective MBR&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;-80&quot; width=&quot;400&quot; height=&quot;30&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-2&quot; value=&quot;Primary GPT&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;-50&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-3&quot; value=&quot;Primary FWU Metadata&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;8a7a84a0-8387-40f6-ab41-a8b9a5a60d23&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;10&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-4&quot; value=&quot;0:AP-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;2451cd6e-90fe-4b15-bf10-a69bce2d4486&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;70&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-5&quot; value=&quot;1:AP-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;2451cd6e-90fe-4b15-bf10-a69bce2d4486&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;130&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-6&quot; value=&quot;0:SCP-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;691d5ea3-27fe-4104-badd-7539c00a9095&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;190&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-7&quot; value=&quot;1:SCP-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;691d5ea3-27fe-4104-badd-7539c00a9095&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;250&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-8&quot; value=&quot;0:RSE-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;c948a156-58cb-4c38-b406-e60bff2223d5&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;310&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-9&quot; value=&quot;1:RSE-Firmware&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;c948a156-58cb-4c38-b406-e60bff2223d5&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;370&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-10&quot; value=&quot;UEFI-Variables&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;430&quot; width=&quot;400&quot; height=&quot;50&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-11&quot; value=&quot;OS Kernel&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;480&quot; width=&quot;400&quot; height=&quot;50&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-13&quot; value=&quot;Root FS&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;530&quot; width=&quot;400&quot; height=&quot;50&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-14&quot; value=&quot;Backup FWU Metadata&amp;lt;br&amp;gt;Partition Type GUID:&amp;amp;nbsp;8a7a84a0-8387-40f6-ab41-a8b9a5a60d23&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;580&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;        &lt;mxCell id=&quot;3oCrTGYNCdNRpomM2msj-15&quot; value=&quot;Backup GPT&quot; style=&quot;rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#666666;fontColor=#333333;&quot; parent=&quot;1&quot; vertex=&quot;1&quot;&gt;&#10;          &lt;mxGeometry x=&quot;-80&quot; y=&quot;640&quot; width=&quot;400&quot; height=&quot;60&quot; as=&quot;geometry&quot; /&gt;&#10;        &lt;/mxCell&gt;&#10;      &lt;/root&gt;&#10;    &lt;/mxGraphModel&gt;&#10;  &lt;/diagram&gt;&#10;&lt;/mxfile&gt;&#10;"><defs/><g><g data-cell-id="0"><g data-cell-id="1"><g data-cell-id="3oCrTGYNCdNRpomM2msj-1"><g><rect x="0" y="0" width="400" height="30" fill="#f8cecc" stroke="#b85450" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 15px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Protective MBR</div></div></div></foreignObject><text x="200" y="19" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Protective MBR</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-2"><g><rect x="0" y="30" width="400" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 60px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Primary GPT</div></div></div></foreignObject><text x="200" y="64" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Primary GPT</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-3"><g><rect x="0" y="90" width="400" height="60" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 120px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Primary FWU Metadata<br />Partition Type GUID: 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23</div></div></div></foreignObject><text x="200" y="124" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Primary FWU Metadata...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-4"><g><rect x="0" y="150" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 180px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:AP-Firmware<br />Partition Type GUID: 2451cd6e-90fe-4b15-bf10-a69bce2d4486</div></div></div></foreignObject><text x="200" y="184" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">0:AP-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-5"><g><rect x="0" y="210" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 240px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:AP-Firmware<br />Partition Type GUID: 2451cd6e-90fe-4b15-bf10-a69bce2d4486</div></div></div></foreignObject><text x="200" y="244" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">1:AP-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-6"><g><rect x="0" y="270" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 300px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:SCP-Firmware<br />Partition Type GUID: 691d5ea3-27fe-4104-badd-7539c00a9095</div></div></div></foreignObject><text x="200" y="304" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">0:SCP-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-7"><g><rect x="0" y="330" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 360px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:SCP-Firmware<br />Partition Type GUID: 691d5ea3-27fe-4104-badd-7539c00a9095</div></div></div></foreignObject><text x="200" y="364" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">1:SCP-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-8"><g><rect x="0" y="390" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 420px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">0:RSE-Firmware<br />Partition Type GUID: c948a156-58cb-4c38-b406-e60bff2223d5</div></div></div></foreignObject><text x="200" y="424" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">0:RSE-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-9"><g><rect x="0" y="450" width="400" height="60" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 480px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">1:RSE-Firmware<br />Partition Type GUID: c948a156-58cb-4c38-b406-e60bff2223d5</div></div></div></foreignObject><text x="200" y="484" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">1:RSE-Firmware...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-10"><g><rect x="0" y="510" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 535px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">UEFI-Variables</div></div></div></foreignObject><text x="200" y="539" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">UEFI-Variables</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-11"><g><rect x="0" y="560" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 585px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">OS Kernel</div></div></div></foreignObject><text x="200" y="589" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">OS Kernel</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-13"><g><rect x="0" y="610" width="400" height="50" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 635px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Root FS</div></div></div></foreignObject><text x="200" y="639" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Root FS</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-14"><g><rect x="0" y="660" width="400" height="60" fill="#fff2cc" stroke="#d6b656" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 690px; margin-left: 1px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Backup FWU Metadata<br />Partition Type GUID: 8a7a84a0-8387-40f6-ab41-a8b9a5a60d23</div></div></div></foreignObject><text x="200" y="694" fill="rgb(0, 0, 0)" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Backup FWU Metadata...</text></switch></g></g></g><g data-cell-id="3oCrTGYNCdNRpomM2msj-15"><g><rect x="0" y="720" width="400" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="all"/></g><g><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 398px; height: 1px; padding-top: 750px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Backup GPT</div></div></div></foreignObject><text x="200" y="754" fill="#333333" font-family="&quot;Helvetica&quot;" font-size="12px" text-anchor="middle">Backup GPT</text></switch></g></g></g></g></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.drawio.com/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file
diff --git a/platform/providers/arm/corstone1000/platform.cmake b/platform/providers/arm/corstone1000/platform.cmake
index d944acf..d39b790 100644
--- a/platform/providers/arm/corstone1000/platform.cmake
+++ b/platform/providers/arm/corstone1000/platform.cmake
@@ -12,7 +12,7 @@
 
 target_compile_definitions(${TGT} PRIVATE
 	SMM_VARIABLE_INDEX_STORAGE_UID=0x787
-	PLAT_RSS_COMMS_PAYLOAD_MAX_SIZE=0x2080
+	PLAT_RSE_COMMS_PAYLOAD_MAX_SIZE=0x2080
 	COMMS_MHU_MSG_SIZE=0x3500
 )
 
