Message ID | 20240122115439.653871-1-sughosh.ganu@linaro.org |
---|---|
Headers | show |
Series | FWU: Migrate FWU metadata to version 2 | expand |
Hi Sughosh, On Mon, Jan 22, 2024 at 05:24:21PM +0530, Sughosh Ganu wrote: > > The following patches migrate the FWU metadata access code to version > 2 of the structure. This is based on the structure definition as > defined in the latest rev of the FWU Multi Bank Update specification > [1]. > > Since the version 1 of the structure has currently been adopted on a > couple of platforms, it was decided to have a clean migration of the > metadata to version 2 only, instead of supporting both the versions of > the structure. Also, based on consultations with the main author of > the specification, it is expected that any further changes in the > structure would be minor tweaks, and not be significant. Hence a > migration to version 2. I think this makes sense. We've already verified Socionext doesn't mind dropping v1 support. If some from ST doesn't have objections, only supporting v2 will simplify the code a lot. Thanks /Ilias > > Similar migration is also being done in TF-A, including migrating the > ST platform port to support version 2 of the metadata structure [2]. > > The patches have been tested on STM32MP1 DK2 board and the Synquacer > board from Socionext. This covers testing both the GPT and the MTD > partitioned storage devices for the metadata access. > > [1] - https://developer.arm.com/documentation/den0118/latest/ > [2] - https://review.trustedfirmware.org/q/topic:%22topics/fwu_metadata_v2_migration%22 > > Sughosh Ganu (18): > configs: fwu: Remove FWU configs for metadata V2 migration > fwu: metadata: Migrate to version 2 of the structure > drivers: fwu: Add the size parameter to the metadata access API's > fwu: Add some API's for metadata version 2 access > lib: fwu: Make changes to support version 2 of FWU metadata > drivers: fwu: mtd: Allocate buffer for image info dynamically > drivers: fwu: Allocate memory for metadata copies > fwu: Add a function to put a bank in Trial State > capsule: Accept a bank on a successful update > fwu: mtd: Modify the DFU API's to align with metadata version 2 > efi_firmware: fwu: Do not read FWU metadata on sandbox > efi_firmware: fwu: Get the number of FWU banks at runtime > cmd: fwu: Align the command with metadata version 2 > test: fwu: Align the FWU metadata access test with version 2 > fwu: Remove the config symbols for number of banks and images > tools: mkfwumdata: Migrate to metadata version 2 > configs: fwu: Re-enable FWU configs > doc: fwu: Make changes for supporting FWU Metadata version 2 > > arch/sandbox/Kconfig | 6 - > board/armltd/corstone1000/corstone1000.c | 2 +- > cmd/fwu_mdata.c | 43 +++- > configs/synquacer_developerbox_defconfig | 1 - > doc/board/socionext/developerbox.rst | 9 +- > doc/develop/uefi/fwu_updates.rst | 12 +- > doc/usage/cmd/fwu_mdata.rst | 12 +- > drivers/fwu-mdata/fwu-mdata-uclass.c | 10 +- > drivers/fwu-mdata/gpt_blk.c | 27 +- > drivers/fwu-mdata/raw_mtd.c | 85 ++++--- > include/fwu.h | 94 ++++++- > include/fwu_mdata.h | 56 +++-- > lib/efi_loader/efi_capsule.c | 12 +- > lib/efi_loader/efi_firmware.c | 20 +- > lib/fwu_updates/Kconfig | 11 - > lib/fwu_updates/fwu.c | 308 ++++++++++++++++++----- > lib/fwu_updates/fwu_mtd.c | 76 ++++-- > test/dm/fwu_mdata.c | 56 +++-- > test/dm/fwu_mdata_disk_image.h | 124 ++++----- > tools/mkfwumdata.c | 43 +++- > 20 files changed, 705 insertions(+), 302 deletions(-) > > -- > 2.34.1 > >
Hi Sughosh, po 22. 1. 2024 v 12:55 odesÃlatel Sughosh Ganu <sughosh.ganu@linaro.org> napsal: > > > The following patches migrate the FWU metadata access code to version > 2 of the structure. This is based on the structure definition as > defined in the latest rev of the FWU Multi Bank Update specification > [1]. > > Since the version 1 of the structure has currently been adopted on a > couple of platforms, it was decided to have a clean migration of the > metadata to version 2 only, instead of supporting both the versions of > the structure. Also, based on consultations with the main author of > the specification, it is expected that any further changes in the > structure would be minor tweaks, and not be significant. Hence a > migration to version 2. > > Similar migration is also being done in TF-A, including migrating the > ST platform port to support version 2 of the metadata structure [2]. > > The patches have been tested on STM32MP1 DK2 board and the Synquacer > board from Socionext. This covers testing both the GPT and the MTD > partitioned storage devices for the metadata access. > > [1] - https://developer.arm.com/documentation/den0118/latest/ > [2] - https://review.trustedfirmware.org/q/topic:%22topics/fwu_metadata_v2_migration%22 > > Sughosh Ganu (18): > configs: fwu: Remove FWU configs for metadata V2 migration > fwu: metadata: Migrate to version 2 of the structure > drivers: fwu: Add the size parameter to the metadata access API's > fwu: Add some API's for metadata version 2 access > lib: fwu: Make changes to support version 2 of FWU metadata > drivers: fwu: mtd: Allocate buffer for image info dynamically > drivers: fwu: Allocate memory for metadata copies > fwu: Add a function to put a bank in Trial State > capsule: Accept a bank on a successful update > fwu: mtd: Modify the DFU API's to align with metadata version 2 > efi_firmware: fwu: Do not read FWU metadata on sandbox > efi_firmware: fwu: Get the number of FWU banks at runtime > cmd: fwu: Align the command with metadata version 2 > test: fwu: Align the FWU metadata access test with version 2 > fwu: Remove the config symbols for number of banks and images > tools: mkfwumdata: Migrate to metadata version 2 > configs: fwu: Re-enable FWU configs > doc: fwu: Make changes for supporting FWU Metadata version 2 > > arch/sandbox/Kconfig | 6 - > board/armltd/corstone1000/corstone1000.c | 2 +- > cmd/fwu_mdata.c | 43 +++- > configs/synquacer_developerbox_defconfig | 1 - > doc/board/socionext/developerbox.rst | 9 +- > doc/develop/uefi/fwu_updates.rst | 12 +- > doc/usage/cmd/fwu_mdata.rst | 12 +- > drivers/fwu-mdata/fwu-mdata-uclass.c | 10 +- > drivers/fwu-mdata/gpt_blk.c | 27 +- > drivers/fwu-mdata/raw_mtd.c | 85 ++++--- > include/fwu.h | 94 ++++++- > include/fwu_mdata.h | 56 +++-- > lib/efi_loader/efi_capsule.c | 12 +- > lib/efi_loader/efi_firmware.c | 20 +- > lib/fwu_updates/Kconfig | 11 - > lib/fwu_updates/fwu.c | 308 ++++++++++++++++++----- > lib/fwu_updates/fwu_mtd.c | 76 ++++-- > test/dm/fwu_mdata.c | 56 +++-- > test/dm/fwu_mdata_disk_image.h | 124 ++++----- > tools/mkfwumdata.c | 43 +++- > 20 files changed, 705 insertions(+), 302 deletions(-) Thanks for this work. I have tested it on kv260 and I see an issue with 2 image per location configuration. When I build mdata v2 with: ./tools/mkfwumdata -a 0 -i 2 -b 2 588aced7-2cce-ed11-81cd-d324e93ac223,e86660de-5602-ad4f-8238-e406e274c4cf,48054af6-ce2c-11ed-8f66-7bc4531cfe6b,4b819c3e-ce2c-11ed-bec8-23de4c6d2cf2 588aced7-2cce-ed11-81cd-d324e93ac223,d4cf9ecf-8b93-c541-8551-1f883ab7dc18,fb04da52-0e9d-11ee-a57f-637805837c3f,07609246-0e9e-11ee-a23a-a38980b779a1 mdata.bin fwu command is showing up configuration for the second image Image Type Guid: DE6066E8-0256-4FAD-8238-E406E274C4CF Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 Image Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B Image Acceptance: yes Image Guid: 3E9C814B-2CCE-ED11-BEC8-23DE4C6D2CF2 Image Acceptance: yes Image Type Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B Location Guid: 00000001-0000-0000-4B81-9C3ECE2C11ED Image Guid: DE23C8BE-6D4C-F22C-0100-000000000000 Image Acceptance: no Image Guid: 881F5185-B73A-18DC-588A-CED72CCEED11 Image Acceptance: no but it should be (from mdata v1) Image Type Guid: DE6066E8-0256-4FAD-8238-E406E274C4CF Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 Image Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B Image Acceptance: yes Image Guid: 3E9C814B-2CCE-ED11-BEC8-23DE4C6D2CF2 Image Acceptance: yes Image Type Guid: CF9ECFD4-938B-41C5-8551-1F883AB7DC18 Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 Image Guid: 52DA04FB-9D0E-EE11-A57F-637805837C3F Image Acceptance: yes Image Guid: 46926007-9E0E-EE11-A23A-A38980B779A1 Image Acceptance: yes And I think the issue is not with mdata v2 generation but it is with decoding inside u-boot. Which ends up in a situation that dfu_alt_info for 2 images is not generated properly. Thanks, Michal
hi Michal, On Fri, 26 Jan 2024 at 20:40, Michal Simek <monstr@monstr.eu> wrote: > > Hi Sughosh, > > po 22. 1. 2024 v 12:55 odesÃlatel Sughosh Ganu <sughosh.ganu@linaro.org> napsal: > > > > > > The following patches migrate the FWU metadata access code to version > > 2 of the structure. This is based on the structure definition as > > defined in the latest rev of the FWU Multi Bank Update specification > > [1]. > > > > Since the version 1 of the structure has currently been adopted on a > > couple of platforms, it was decided to have a clean migration of the > > metadata to version 2 only, instead of supporting both the versions of > > the structure. Also, based on consultations with the main author of > > the specification, it is expected that any further changes in the > > structure would be minor tweaks, and not be significant. Hence a > > migration to version 2. > > > > Similar migration is also being done in TF-A, including migrating the > > ST platform port to support version 2 of the metadata structure [2]. > > > > The patches have been tested on STM32MP1 DK2 board and the Synquacer > > board from Socionext. This covers testing both the GPT and the MTD > > partitioned storage devices for the metadata access. > > > > [1] - https://developer.arm.com/documentation/den0118/latest/ > > [2] - https://review.trustedfirmware.org/q/topic:%22topics/fwu_metadata_v2_migration%22 > > > > Sughosh Ganu (18): > > configs: fwu: Remove FWU configs for metadata V2 migration > > fwu: metadata: Migrate to version 2 of the structure > > drivers: fwu: Add the size parameter to the metadata access API's > > fwu: Add some API's for metadata version 2 access > > lib: fwu: Make changes to support version 2 of FWU metadata > > drivers: fwu: mtd: Allocate buffer for image info dynamically > > drivers: fwu: Allocate memory for metadata copies > > fwu: Add a function to put a bank in Trial State > > capsule: Accept a bank on a successful update > > fwu: mtd: Modify the DFU API's to align with metadata version 2 > > efi_firmware: fwu: Do not read FWU metadata on sandbox > > efi_firmware: fwu: Get the number of FWU banks at runtime > > cmd: fwu: Align the command with metadata version 2 > > test: fwu: Align the FWU metadata access test with version 2 > > fwu: Remove the config symbols for number of banks and images > > tools: mkfwumdata: Migrate to metadata version 2 > > configs: fwu: Re-enable FWU configs > > doc: fwu: Make changes for supporting FWU Metadata version 2 > > > > arch/sandbox/Kconfig | 6 - > > board/armltd/corstone1000/corstone1000.c | 2 +- > > cmd/fwu_mdata.c | 43 +++- > > configs/synquacer_developerbox_defconfig | 1 - > > doc/board/socionext/developerbox.rst | 9 +- > > doc/develop/uefi/fwu_updates.rst | 12 +- > > doc/usage/cmd/fwu_mdata.rst | 12 +- > > drivers/fwu-mdata/fwu-mdata-uclass.c | 10 +- > > drivers/fwu-mdata/gpt_blk.c | 27 +- > > drivers/fwu-mdata/raw_mtd.c | 85 ++++--- > > include/fwu.h | 94 ++++++- > > include/fwu_mdata.h | 56 +++-- > > lib/efi_loader/efi_capsule.c | 12 +- > > lib/efi_loader/efi_firmware.c | 20 +- > > lib/fwu_updates/Kconfig | 11 - > > lib/fwu_updates/fwu.c | 308 ++++++++++++++++++----- > > lib/fwu_updates/fwu_mtd.c | 76 ++++-- > > test/dm/fwu_mdata.c | 56 +++-- > > test/dm/fwu_mdata_disk_image.h | 124 ++++----- > > tools/mkfwumdata.c | 43 +++- > > 20 files changed, 705 insertions(+), 302 deletions(-) > > > Thanks for this work. I have tested it on kv260 and I see an issue > with 2 image per location configuration. > When I build mdata v2 with: > ./tools/mkfwumdata -a 0 -i 2 -b 2 > 588aced7-2cce-ed11-81cd-d324e93ac223,e86660de-5602-ad4f-8238-e406e274c4cf,48054af6-ce2c-11ed-8f66-7bc4531cfe6b,4b819c3e-ce2c-11ed-bec8-23de4c6d2cf2 > 588aced7-2cce-ed11-81cd-d324e93ac223,d4cf9ecf-8b93-c541-8551-1f883ab7dc18,fb04da52-0e9d-11ee-a57f-637805837c3f,07609246-0e9e-11ee-a23a-a38980b779a1 > mdata.bin > > fwu command is showing up configuration for the second image > > Image Type Guid: DE6066E8-0256-4FAD-8238-E406E274C4CF > Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 > Image Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B > Image Acceptance: yes > Image Guid: 3E9C814B-2CCE-ED11-BEC8-23DE4C6D2CF2 > Image Acceptance: yes > > Image Type Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B > Location Guid: 00000001-0000-0000-4B81-9C3ECE2C11ED > Image Guid: DE23C8BE-6D4C-F22C-0100-000000000000 > Image Acceptance: no > Image Guid: 881F5185-B73A-18DC-588A-CED72CCEED11 > Image Acceptance: no > > but it should be (from mdata v1) > Image Type Guid: DE6066E8-0256-4FAD-8238-E406E274C4CF > Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 > Image Guid: F64A0548-2CCE-ED11-8F66-7BC4531CFE6B > Image Acceptance: yes > Image Guid: 3E9C814B-2CCE-ED11-BEC8-23DE4C6D2CF2 > Image Acceptance: yes > > Image Type Guid: CF9ECFD4-938B-41C5-8551-1F883AB7DC18 > Location Guid: D7CE8A58-CE2C-11ED-81CD-D324E93AC223 > Image Guid: 52DA04FB-9D0E-EE11-A57F-637805837C3F > Image Acceptance: yes > Image Guid: 46926007-9E0E-EE11-A23A-A38980B779A1 > Image Acceptance: yes > > And I think the issue is not with mdata v2 generation but it is with > decoding inside u-boot. > Which ends up in a situation that dfu_alt_info for 2 images is not > generated properly. Thanks for trying this out. I will try to replicate the same setup on my end and triage this. -sughosh