[PATCH v3 6/7] fwu: add helper to get image GUID by type and bank index

Ilias Apalodimas ilias.apalodimas at linaro.org
Mon Apr 20 08:06:46 CEST 2026


On Wed, 15 Apr 2026 at 21:33, Dario Binacchi
<dario.binacchi at amarulasolutions.com> wrote:
>
> Introduce fwu_mdata_get_image_guid() to retrieve a specific image GUID
> from the FWU metadata based on the bank index and image type GUID.
>
> This allows identifying the correct partition in multi-bank (A/B)
> scenarios, ensuring the correct image is targeted depending on the
> current bank.
>
> Signed-off-by: Dario Binacchi <dario.binacchi at amarulasolutions.com>
>
> ---
>
> Changes in v3:
> - Add kerneldoc comment for fwu_mdata_get_image_guid() above its
>   declaration in fwu.h.
>
> Changes in v2:
> - Add kerneldoc comment for fwu_mdata_get_image_guid().
> - Pass efi_guid_t by pointer for consistency.
>

Acked-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>

>  include/fwu.h         | 11 +++++++++++
>  lib/fwu_updates/fwu.c | 33 +++++++++++++++++++++++++++++++++
>  2 files changed, 44 insertions(+)
>
> diff --git a/include/fwu.h b/include/fwu.h
> index 9cee8fb085cb..68a51fb4296b 100644
> --- a/include/fwu.h
> +++ b/include/fwu.h
> @@ -396,6 +396,17 @@ void fwu_populate_mdata_image_info(struct fwu_data *data);
>   */
>  int fwu_get_mdata_size(uint32_t *mdata_size);
>
> +/**
> + * fwu_mdata_get_image_guid() - Get image GUID for a type and bank
> + * @image_guid: Pointer to be filled with the found image GUID
> + * @image_type_guid: Pointer to the image type GUID to search for
> + * @bank_index: Index of the bank
> + *
> + * Return: 0 if OK, -ve on error
> + */
> +int fwu_mdata_get_image_guid(efi_guid_t *image_guid,
> +                            const efi_guid_t *image_type_guid, u32 bank_index);
> +
>  /**
>   * fwu_state_machine_updates() - Update FWU state of the platform
>   * @state: FWU bank state
> diff --git a/lib/fwu_updates/fwu.c b/lib/fwu_updates/fwu.c
> index 37c613014d18..e5e4907a2d43 100644
> --- a/lib/fwu_updates/fwu.c
> +++ b/lib/fwu_updates/fwu.c
> @@ -243,6 +243,39 @@ int fwu_sync_mdata(struct fwu_mdata *mdata, int part)
>         return 0;
>  }
>
> +/**
> + * fwu_mdata_get_image_guid() - Get image GUID for a type and bank
> + * @image_guid: Pointer to be filled with the found image GUID
> + * @image_type_guid: Pointer to the image type GUID to search for
> + * @bank_index: Index of the bank
> + *
> + * Return: 0 if OK, -ve on error
> + */
> +int fwu_mdata_get_image_guid(efi_guid_t *image_guid,
> +                            const efi_guid_t *image_type_guid, u32 bank_index)
> +{
> +       struct fwu_data *data = &g_fwu_data;
> +       struct fwu_image_entry *image;
> +       int i;
> +
> +       if (bank_index >= data->num_banks)
> +               return -EINVAL;
> +
> +       for (i = 0; i < data->num_images; i++) {
> +               image = &data->fwu_images[i];
> +
> +               if (!guidcmp(image_type_guid, &image->image_type_guid)) {
> +                       struct fwu_image_bank_info *bank;
> +
> +                       bank = &image->img_bank_info[bank_index];
> +                       guidcpy(image_guid, &bank->image_guid);
> +                       return 0;
> +               }
> +       }
> +
> +       return -ENOENT;
> +}
> +
>  /**
>   * fwu_mdata_copies_allocate() - Allocate memory for metadata
>   * @mdata_size: Size of the metadata structure
> --
> 2.43.0
>


More information about the U-Boot mailing list