[RESEND RFC PATCH 00/10] FWU: Add support for FWU Multi Bank Update feature

Heinrich Schuchardt xypron.glpk at gmx.de
Fri Nov 26 13:29:02 CET 2021


On 11/25/21 08:12, Sughosh Ganu wrote:
> (resending to including the first paragraph which got deleted for some
> reason).
>
> The patchset adds support for the FWU Multi Bank Update[1]

The patch set is lacking a documentation update
The patch set is lacking an integration test.

Please, add both to enable reviewing.

Best regards

Heinrich

> feature. Certain aspects of the Dependable Boot[2] specification have
> also been implemented.
>
> The FWU multi bank update feature is used for supporting multiple
> sets(also called banks) of firmware image(s), allowing the platform to
> boot from a different bank, in case it fails to boot from the active
> bank. This functionality is supported by keeping the relevant
> information in a structure called metadata, which provides information
> on the images. Among other parameters, the metadata structure contains
> information on the currect active bank that is being used to boot
> image(s).
>
> Functionality is being added to work with the UEFI capsule driver in
> u-boot. The metadata is read to gather information on the update bank,
> which is the bank to which the firmware images would be flashed to. On
> a successful completion of the update of all components, the active
> bank field in the metadata is updated, to reflect the bank from which
> the platform will boot on the subsequent boots.
>
> Currently, the feature is being enabled on the STM32MP157C-DK2
> board which boots a FIP image from a uSD card partitioned with the GPT
> partioning scheme. This also requires changes in the previous stage of
> bootloader, which parses the metadata and selects the bank to boot the
> image(s) from. Support is being added in tf-a(BL2 stage) for the
> STM32MP157C-DK2 board to boot the active bank images. These changes
> are under review currently[3].
>
> Todo's
> ------
> 1) Add a test(selftest) for the metadata access.
> 2) Add a tool for generation of the metadata. Not sure if this needs to
>     be part of the u-boot repository though.
> 3) Add a tool for generation of the firmware accept/reject dummy
>     capsule. Need to check if this can be added to the mkeficapsule
>     tool in u-boot.
>
> [1] - https://developer.arm.com/documentation/den0118/a
> [2] - https://staging-git.codelinaro.org/linaro/firmware-dual-banked-updates/test
> [3] - https://review.trustedfirmware.org/c/TF-A/trusted-firmware-a/+/12566
>
> Sughosh Ganu (10):
>    GPT: Add function to get gpt header and partition entries
>    stm32mp: dfu: Move the ram partitions to the end of the dfu_alt_info
>      variable
>    FWU: Add metadata structure and functions for accessing metadata
>    FWU: Add metadata access functions for GPT partitioned block devices
>    FWU: stm32mp1: Add helper functions for accessing metadata
>    FWU: STM32MP1: Add support to read boot index from backup register
>    EFI: FMP: Add provision to update image's ImageTypeId in image
>      descriptor
>    FWU: Add boot time checks as highlighted by the FWU specification
>    FWU: Add support for FWU Multi Bank Update feature
>    FWU: cmd: Add a command to read metadata
>
>   arch/arm/mach-stm32mp/include/mach/stm32.h |   1 +
>   board/st/common/stm32mp_dfu.c              |  11 +-
>   board/st/stm32mp1/stm32mp1.c               |  70 ++
>   cmd/Kconfig                                |   6 +
>   cmd/Makefile                               |   1 +
>   cmd/fwu_metadata.c                         |  65 ++
>   common/board_r.c                           |   6 +
>   disk/part_efi.c                            |  10 +
>   include/fwu_metadata.h                     | 140 ++++
>   include/part.h                             |  14 +
>   lib/Kconfig                                |  32 +
>   lib/Makefile                               |   1 +
>   lib/efi_loader/efi_capsule.c               | 190 +++++-
>   lib/efi_loader/efi_firmware.c              |  76 ++-
>   lib/fwu_updates/Makefile                   |  11 +
>   lib/fwu_updates/fwu.c                      | 170 +++++
>   lib/fwu_updates/fwu_metadata.c             | 275 ++++++++
>   lib/fwu_updates/fwu_metadata_gpt_blk.c     | 716 +++++++++++++++++++++
>   18 files changed, 1784 insertions(+), 11 deletions(-)
>   create mode 100644 cmd/fwu_metadata.c
>   create mode 100644 include/fwu_metadata.h
>   create mode 100644 lib/fwu_updates/Makefile
>   create mode 100644 lib/fwu_updates/fwu.c
>   create mode 100644 lib/fwu_updates/fwu_metadata.c
>   create mode 100644 lib/fwu_updates/fwu_metadata_gpt_blk.c
>



More information about the U-Boot mailing list