doc: uefi: document dynamic UUID generation

Document how platforms can generate GUIDs at runtime rather than
maintaining a list of UUIDs per-board.

Reviewed-by: Ilias Apalodimas <ilias.apalodimas@linaro.org>
Signed-off-by: Caleb Connolly <caleb.connolly@linaro.org>
This commit is contained in:
Caleb Connolly 2024-08-30 13:34:34 +01:00 committed by Heinrich Schuchardt
parent 788cf33315
commit 3c52951bda

View file

@ -449,6 +449,33 @@ practice. Getting this information from the firmware itself is more
secure, assuming the firmware has been verified by a previous stage
boot loader.
Dynamic Firmware Update GUIDs
*****************************
The image_type_id contains a GUID value which is specific to the image
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 the board's devicetree root compatible
(e.g. "qcom,qrb5165-rb5").
These strings are combined with the fw_image name to generate GUIDs for
each image. Support for dynamic UUIDs can be enabled by generating a new
namespace UUID and setting EFI_CAPSULE_NAMESPACE_GUID to it. Dynamic GUID
generation is only enabled if the image_type_id property is unset for your
firmware images, this is to avoid breaking existing boards with hardcoded
GUIDs.
The mkeficapsule tool can be used to determine the GUIDs for a particular
board and image. It can be found in the tools directory.
Firmware update images
**********************
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