From 7bf9c380c63726b7de8316e9c743cb06c9bc7842 Mon Sep 17 00:00:00 2001
From: Vishnu Banavath <vishnu.banavath@arm.com>
Date: Mon, 15 Aug 2022 15:46:18 +0100
Subject: [PATCH 18/25] efi_loader: send bootcomplete message to secure enclave

On corstone1000 platform, Secure Enclave will be expecting
an event from uboot when it performs capsule update. Previously,
an event is sent at exitbootservice level. This will create a problem
when user wants to interrupt at UEFI shell, hence, it is required
to send an uboot efi initialized event at efi sub-system initialization
stage.

Signed-off-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com>
Upstream-Status: Pending [Not submitted to upstream yet]
---
 include/configs/corstone1000.h |  2 +-
 lib/efi_loader/efi_boottime.c  | 43 ----------------------------------
 lib/efi_loader/efi_firmware.c  |  2 +-
 lib/efi_loader/efi_setup.c     | 39 ++++++++++++++++++++++++++++++
 4 files changed, 41 insertions(+), 45 deletions(-)

diff --git a/include/configs/corstone1000.h b/include/configs/corstone1000.h
index 77f96e87a1..4cf1170ffb 100644
--- a/include/configs/corstone1000.h
+++ b/include/configs/corstone1000.h
@@ -22,7 +22,7 @@
 
 /* Notification events used with SE Proxy update service */
 #define CORSTONE1000_BUFFER_READY_EVT		(0x1)
-#define CORSTONE1000_KERNEL_STARTED_EVT		(0x2)
+#define CORSTONE1000_UBOOT_EFI_STARTED_EVT	(0x2)
 
 #define PREP_SEPROXY_SVC_ID_MASK	GENMASK(31, 16)
 #define PREP_SEPROXY_SVC_ID(x)	 (FIELD_PREP(PREP_SEPROXY_SVC_ID_MASK, (x)))
diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
index 88f2d050be..1099ccc800 100644
--- a/lib/efi_loader/efi_boottime.c
+++ b/lib/efi_loader/efi_boottime.c
@@ -30,11 +30,6 @@
 #include <arm_ffa.h>
 #endif
 
-#if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
-#include <linux/bitfield.h>
-#include <linux/bitops.h>
-#endif
-
 DECLARE_GLOBAL_DATA_PTR;
 
 /* Task priority level */
@@ -2108,35 +2103,6 @@ static void efi_exit_caches(void)
 #endif
 }
 
-#if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
-/**
- * efi_corstone1000_kernel_started_event - notifies SE Proxy FW update service
- *
- * This function notifies the SE Proxy update service that the kernel has already started
- *
- * Return:
- *
- * 0: on success, otherwise failure
- */
-static int efi_corstone1000_kernel_started_event(void)
-{
-	struct ffa_send_direct_data msg = {0};
-
-	log_debug("[%s]\n", __func__);
-
-	/*
-	 * setting the kernel started  event arguments:
-	 * setting capsule update interface ID(31:16)
-	 * the kernel started event ID(15:0)
-	 */
-	msg.data1 = PREP_SEPROXY_SVC_ID(CORSTONE1000_SEPROXY_UPDATE_SVC_ID) |
-		PREP_SEPROXY_EVT(CORSTONE1000_KERNEL_STARTED_EVT); /* w4 */
-
-	return ffa_bus_ops_get()->sync_send_receive(CORSTONE1000_SEPROXY_PART_ID, &msg, 0);
-}
-
-#endif
-
 /**
  * efi_exit_boot_services() - stop all boot services
  * @image_handle: handle of the loaded image
@@ -2243,15 +2209,6 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
 	/* Recalculate CRC32 */
 	efi_update_table_header_crc32(&systab.hdr);
 
-#if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
-	/* Notifying SE Proxy FW update service */
-	ffa_ret = efi_corstone1000_kernel_started_event();
-	if (ffa_ret)
-		debug("[efi_boottime][ERROR]: Failure to notify SE Proxy FW update service\n");
-	else
-		debug("[efi_boottime][INFO]: SE Proxy FW update service notified\n");
-#endif
-
 	/* Give the payload some time to boot */
 	efi_set_watchdog(0);
 	WATCHDOG_RESET();
diff --git a/lib/efi_loader/efi_firmware.c b/lib/efi_loader/efi_firmware.c
index af43d4502f..25f427b936 100644
--- a/lib/efi_loader/efi_firmware.c
+++ b/lib/efi_loader/efi_firmware.c
@@ -47,7 +47,7 @@ static efi_status_t efi_corstone1000_img_info_get (
 		*package_version_name = NULL; /* not supported */
 
 	if(image_info == NULL) {
-		log_warning("image_info is null\n");
+		log_info("image_info is null\n");
 		return EFI_BUFFER_TOO_SMALL;
 	}
 
diff --git a/lib/efi_loader/efi_setup.c b/lib/efi_loader/efi_setup.c
index 443f409906..c154eb0e9d 100644
--- a/lib/efi_loader/efi_setup.c
+++ b/lib/efi_loader/efi_setup.c
@@ -17,6 +17,9 @@
 efi_status_t efi_obj_list_initialized = OBJ_LIST_NOT_INITIALIZED;
 
 #if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
+#include <linux/bitfield.h>
+#include <linux/bitops.h>
+#include <arm_ffa.h>
 /**
  * efi_corstone1000_alloc_capsule_shared_buf - allocate capsule shared buffer
  */
@@ -126,6 +129,34 @@ static efi_status_t efi_init_secure_boot(void)
 }
 #endif /* CONFIG_EFI_SECURE_BOOT */
 
+#if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
+/**
+ * efi_corstone1000_uboot-efi_started_event - notifies SE Proxy FW update service
+ *
+ * This function notifies the SE Proxy update service that uboot efi has already started
+ *
+ * Return:
+ *
+ * 0: on success, otherwise failure
+ * */
+static int efi_corstone1000_uboot_efi_started_event(void)
+{
+	struct ffa_send_direct_data msg = {0};
+
+	log_debug("[%s]\n", __func__);
+
+	/*
+	 * setting the kernel started  event arguments:
+	 * setting capsule update interface ID(31:16)
+	 * the kernel started event ID(15:0)
+	 */
+	msg.data1 = PREP_SEPROXY_SVC_ID(CORSTONE1000_SEPROXY_UPDATE_SVC_ID) |
+			PREP_SEPROXY_EVT(CORSTONE1000_UBOOT_EFI_STARTED_EVT); /* w4 */
+
+	return ffa_bus_ops_get()->sync_send_receive(NULL, CORSTONE1000_SEPROXY_PART_ID, &msg, 0);
+}
+#endif
+
 /**
  * efi_init_capsule - initialize capsule update state
  *
@@ -136,6 +167,14 @@ static efi_status_t efi_init_capsule(void)
 	efi_status_t ret = EFI_SUCCESS;
 
 #if IS_ENABLED(CONFIG_TARGET_CORSTONE1000)
+	int ffa_ret;
+
+	ffa_ret = efi_corstone1000_uboot_efi_started_event();
+	if (ffa_ret)
+		debug("[efi_boottime][ERROR]: Failure to notify SE Proxy FW update service\n");
+	else
+		debug("[efi_boottime][INFO]: SE Proxy FW update service notified\n");
+
 	ret = efi_corstone1000_alloc_capsule_shared_buf();
 	if (ret != EFI_SUCCESS) {
 		printf("EFI: Corstone-1000: cannot allocate caspsule shared buffer\n");
-- 
2.17.1

