]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
efi_loader: Always install FMPs
authorIlias Apalodimas <ilias.apalodimas@linaro.org>
Tue, 22 Jun 2021 14:38:53 +0000 (17:38 +0300)
committerHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 2 Jul 2021 07:37:01 +0000 (09:37 +0200)
We only install FMPs if a CapsuleUpdate is requested.  Since we now have an
ESRT table which relies on FMPs to build the required information, it
makes more sense to unconditionally install them. This will allow userspace
applications (e.g fwupd) to make use of the ERST and provide us with files
we can use to run CapsuleUpdate on-disk

Signed-off-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
include/efi_loader.h
lib/efi_loader/efi_capsule.c
lib/efi_loader/efi_setup.c

index 0a9c82a257e1438612ecdc8e149e2371b132dc68..b81180cfda8bd7a42c52b7d4ea563712ea2c45f5 100644 (file)
@@ -972,4 +972,5 @@ efi_status_t efi_esrt_register(void);
  * - error code otherwise.
  */
 efi_status_t efi_esrt_populate(void);
+efi_status_t efi_load_capsule_drivers(void);
 #endif /* _EFI_LOADER_H */
index cc6ed453ed21372d873b5ef3dc4acef91594fd75..d7136035d8f959b3cb7a9734cf87fbcae79b3fa1 100644 (file)
@@ -919,13 +919,13 @@ static void efi_capsule_scan_done(void)
 }
 
 /**
- * arch_efi_load_capsule_drivers - initialize capsule drivers
+ * efi_load_capsule_drivers - initialize capsule drivers
  *
- * Architecture or board specific initialization routine
+ * Generic FMP drivers backed by DFU
  *
  * Return:     status code
  */
-efi_status_t __weak arch_efi_load_capsule_drivers(void)
+efi_status_t __weak efi_load_capsule_drivers(void)
 {
        __maybe_unused efi_handle_t handle;
        efi_status_t ret = EFI_SUCCESS;
@@ -976,11 +976,6 @@ efi_status_t efi_launch_capsules(void)
 
        index = get_last_capsule();
 
-       /* Load capsule drivers */
-       ret = arch_efi_load_capsule_drivers();
-       if (ret != EFI_SUCCESS)
-               return ret;
-
        /*
         * Find capsules on disk.
         * All the capsules are collected at the beginning because
index 3c5cf9a4357e91a0d747eb9f4a614ba1d7d5f20b..2dc6ba8337a7bf65a0c9570573c8144a9ef1a36a 100644 (file)
@@ -254,6 +254,12 @@ efi_status_t efi_init_obj_list(void)
        if (ret != EFI_SUCCESS)
                goto out;
 
+       if (IS_ENABLED(CONFIG_EFI_HAVE_CAPSULE_SUPPORT)) {
+               ret = efi_load_capsule_drivers();
+               if (ret != EFI_SUCCESS)
+                       goto out;
+       }
+
 #if defined(CONFIG_LCD) || defined(CONFIG_DM_VIDEO)
        ret = efi_gop_register();
        if (ret != EFI_SUCCESS)