[RFC PATCH v3 0/9] FWU: Add support for FWU Multi Bank Update feature

Sughosh Ganu sughosh.ganu at linaro.org
Fri Jan 21 08:10:26 CET 2022


hi Takahiro,

On Thu, 20 Jan 2022 at 11:01, AKASHI Takahiro
<takahiro.akashi at linaro.org> wrote:
>
> Sughosh,
>
> On Thu, Jan 20, 2022 at 12:25:39AM +0530, Sughosh Ganu wrote:
> >
> > The patchset adds support for the FWU Multi Bank Update[1]
> > 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.
>
> Do you have a plan to develop any test cases for sandbox,
> especially in pytest framework?
>
> I don't see much difficulty to do so and it would be very
> helpful for U-Boot CI process.

Okay, will check on adding the test cases.

-sughosh

>
> -Takahiro Akashi
>
> > 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].
> >
> > These patches are based on top of the series from Takahiro to add
> > Authentication support to mkeficapsule utility[4]
> >
> > [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
> > [4] - https://patchwork.ozlabs.org/project/uboot/list/?series=281549
> >
> > Changes since V2:
> > * Use uint*_t types in fwu_mdata.h since the file is to be reused in
> >   other projects
> > * Keep only the FWU metadata structures in fwu_mdata.h
> > * Move all other function and macro declarations in fwu.h
> > * Keep common implementations of fwu_update_active_index and
> >   fwu_revert_boot_index in fwu_mdata.c
> > * Add a update_mdata function pointer in the fwu_mdata_ops structure
> > * Move the function definition of fwu_verify_mdata to fwu_mdata.c to
> >   facilitate reuse
> > * Remove the block device specific desc->devnum parameter for the
> >   fwu_plat_get_alt_num function call
> > * Change the implementation of fwu_plat_get_alt_num to get the devnum
> >   in the function before calling gpt_plat_get_alt_num
> > * Add logic to delete the TrialStateCtr variable if system is not in
> >   Trial State
> > * Add logic to check if bit 15(OS Acceptance) of the Flags member in
> >   the capsule header is set
> > * Add logic to set the accept bit of all images from a capsule if the
> >   OS Acceptance bit in the capsule header is not set
> > * Include the log.h and stdio.h header files
> >
> > Sughosh Ganu (9):
> >   FWU: Add FWU metadata structure and functions for accessing metadata
> >   FWU: Add FWU metadata access functions for GPT partitioned block
> >     devices
> >   FWU: stm32mp1: Add helper functions for accessing FWU 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 FWU metadata
> >   mkeficapsule: Add support for generating empty capsules
> >
> >  board/st/stm32mp1/stm32mp1.c        | 183 ++++++++++
> >  cmd/Kconfig                         |   7 +
> >  cmd/Makefile                        |   1 +
> >  cmd/fwu_mdata.c                     |  67 ++++
> >  common/board_r.c                    |   6 +
> >  include/fwu.h                       |  81 +++++
> >  include/fwu_mdata.h                 |  69 ++++
> >  lib/Kconfig                         |   6 +
> >  lib/Makefile                        |   1 +
> >  lib/efi_loader/efi_capsule.c        | 233 ++++++++++++-
> >  lib/efi_loader/efi_firmware.c       |  90 ++++-
> >  lib/efi_loader/efi_setup.c          |   3 +-
> >  lib/fwu_updates/Kconfig             |  31 ++
> >  lib/fwu_updates/Makefile            |  11 +
> >  lib/fwu_updates/fwu.c               | 198 +++++++++++
> >  lib/fwu_updates/fwu_mdata.c         | 358 +++++++++++++++++++
> >  lib/fwu_updates/fwu_mdata_gpt_blk.c | 521 ++++++++++++++++++++++++++++
> >  tools/eficapsule.h                  |   8 +
> >  tools/mkeficapsule.c                | 102 +++++-
> >  19 files changed, 1955 insertions(+), 21 deletions(-)
> >  create mode 100644 cmd/fwu_mdata.c
> >  create mode 100644 include/fwu.h
> >  create mode 100644 include/fwu_mdata.h
> >  create mode 100644 lib/fwu_updates/Kconfig
> >  create mode 100644 lib/fwu_updates/Makefile
> >  create mode 100644 lib/fwu_updates/fwu.c
> >  create mode 100644 lib/fwu_updates/fwu_mdata.c
> >  create mode 100644 lib/fwu_updates/fwu_mdata_gpt_blk.c
> >
> > --
> > 2.17.1
> >
> >


More information about the U-Boot mailing list