[PATCH RFC 3/4] doc: uefi: document dynamic GUID generation

Ilias Apalodimas ilias.apalodimas at linaro.org
Fri May 24 08:13:03 CEST 2024


On Fri, 26 Apr 2024 at 17:19, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>
> Document how platforms can generate GUIDs at runtime rather than
> maintaining a list of GUIDs per-board.
>
> Signed-off-by: Caleb Connolly <caleb.connolly at linaro.org>
> ---
>  doc/develop/uefi/uefi.rst | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/doc/develop/uefi/uefi.rst b/doc/develop/uefi/uefi.rst
> index 0389b269c01b..52076fb4c106 100644
> --- a/doc/develop/uefi/uefi.rst
> +++ b/doc/develop/uefi/uefi.rst
> @@ -448,8 +448,43 @@ the location of the firmware updates is not a very secure
>  practice. Getting this information from the firmware itself is more
>  secure, assuming the firmware has been verified by a previous stage
>  boot loader.
>
> +The image_type_id contains a GUID value which is specific to the image

which is/that is

> +and board being updated, that is to say it should uniquely identify the
> +board model (and revision if relevant) and image pair. Traditionally,
> +these GUIDs are generated manually and hardcoded on a per-board basis,
> +however this scheme makes it difficult to scale up to support many
> +boards.
> +
> +To address this, v5 GUIDs can be used to generate board-specific GUIDs
> +at runtime, based on a set of persistent identifiable information:
> +
> +.. code-block:: c
> +
> +       /**
> +       * efi_capsule_update_info_gen_ids - Generate image_type_id UUIDs
> +       * for all firmware images based on a platform namespace UUID.
> +       *
> +       * @namespace: The arch/platform specific namespace salt. This should be
> +       * hardcoded per platform and replaced by vendors.
> +       * @soc: A string identifying the SoC used on this board.
> +       * @model: The model string for the board.
> +       * @compatible: The most specific (first) root compatible string.
> +       *
> +       * This can be called by board code to populate the image_type_id
> +       * UUID fields deterministically based on the board's model. Allowing

model, allowing

> +       * many boards to be supported without the need for a large hardcoded
> +       * array of fw images. This works using v5 UUIDs.
> +       */
> +       int efi_capsule_update_info_gen_ids(efi_guid_t *namespace, const char *soc,
> +                                                                               const char *model,
> +                                                                               const char *compatible);
> +
> +These strings are combined with the fw_image name to generate GUIDs for
> +each image. This function should be called during board init, before the
> +EFI subsystem is initialised.

initialized

> +
>  The firmware images structure defines the GUID values, image index
>  values and the name of the images that are to be updated through
>  the capsule update feature. These values are to be defined as part of
>  an array. These GUID values would be used by the Firmware Management
>
> --
> 2.44.0
>

With these
Reviewed-by: Ilias Apalodimas <ilias.apalodimas at linaro.org>


More information about the U-Boot mailing list