mirror of
https://git.yoctoproject.org/meta-arm
synced 2026-06-05 14:30:10 +00:00
arm-bsp/u-boot: corstone1000: use mdata v2
The mdata structure was modified to use the v2 and did the minimal necessarry changes to make it build without errors. This way the U-Boot metadata is aligned with the TF-A and TF-M structs. Signed-off-by: Bence Balogh <bence.balogh@arm.com> Signed-off-by: Jon Mason <jon.mason@arm.com>
This commit is contained in:
@@ -65,6 +65,7 @@ SRC_URI:append = " \
|
||||
file://0047-corstone1000-dts-add-external-system-node.patch \
|
||||
file://0048-corstone1000-Enable-UEFI-Secure-boot.patch \
|
||||
file://0049-corstone1000-Add-secondary-cores-cpu-nodes-for-FVP.patch \
|
||||
file://0050-fwu-Use-metadata-v2.patch \
|
||||
"
|
||||
|
||||
do_configure:append() {
|
||||
|
||||
@@ -0,0 +1,105 @@
|
||||
From 54b407fc74c9989c72ab7a571395d8793b409514 Mon Sep 17 00:00:00 2001
|
||||
From: Bence Balogh <bence.balogh@arm.com>
|
||||
Date: Wed, 3 Jul 2024 16:38:22 +0200
|
||||
Subject: [PATCH] fwu: Use metadata v2
|
||||
|
||||
The mdata structure was modified to use the v2 and did the minimal
|
||||
necessarry changes to make it build without errors. This way the
|
||||
U-Boot metadata is aligned with the TF-A and TF-M structs.
|
||||
|
||||
Upstream-Status: Inappropriate
|
||||
[This is done correctly upstream but using the upstream patches would
|
||||
require too many backported patches. The merge commit of the upstream
|
||||
changes is 7e52d6ccfb76e2afc2d183b357abe2a2e2f948cf.]
|
||||
Signed-off-by: Bence Balogh <bence.balogh@arm.com>
|
||||
---
|
||||
cmd/fwu_mdata.c | 2 +-
|
||||
include/fwu_mdata.h | 17 ++++++++++++++++-
|
||||
lib/fwu_updates/fwu.c | 8 ++++----
|
||||
3 files changed, 21 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/cmd/fwu_mdata.c b/cmd/fwu_mdata.c
|
||||
index f04af27de6..73374dca8b 100644
|
||||
--- a/cmd/fwu_mdata.c
|
||||
+++ b/cmd/fwu_mdata.c
|
||||
@@ -27,7 +27,7 @@ static void print_mdata(struct fwu_mdata *mdata)
|
||||
|
||||
printf("\tImage Info\n");
|
||||
for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) {
|
||||
- img_entry = &mdata->img_entry[i];
|
||||
+ img_entry = &mdata->fw_desc.img_entry[i];
|
||||
printf("\nImage Type Guid: %pUL\n",
|
||||
&img_entry->image_type_uuid);
|
||||
printf("Location Guid: %pUL\n", &img_entry->location_uuid);
|
||||
diff --git a/include/fwu_mdata.h b/include/fwu_mdata.h
|
||||
index c61221a917..6a0eb7dce9 100644
|
||||
--- a/include/fwu_mdata.h
|
||||
+++ b/include/fwu_mdata.h
|
||||
@@ -40,6 +40,16 @@ struct fwu_image_entry {
|
||||
struct fwu_image_bank_info img_bank_info[CONFIG_FWU_NUM_BANKS];
|
||||
} __packed;
|
||||
|
||||
+struct fwu_fw_store_desc {
|
||||
+ uint8_t num_banks;
|
||||
+ uint8_t reserved;
|
||||
+ uint16_t num_images;
|
||||
+ uint16_t img_entry_size;
|
||||
+ uint16_t bank_info_entry_size;
|
||||
+
|
||||
+ struct fwu_image_entry img_entry[CONFIG_FWU_NUM_IMAGES_PER_BANK];
|
||||
+} __packed;
|
||||
+
|
||||
/**
|
||||
* struct fwu_mdata - FWU metadata structure for multi-bank updates
|
||||
* @crc32: crc32 value for the FWU metadata
|
||||
@@ -60,8 +70,13 @@ struct fwu_mdata {
|
||||
uint32_t version;
|
||||
uint32_t active_index;
|
||||
uint32_t previous_active_index;
|
||||
+ uint32_t metadata_size;
|
||||
+ uint16_t desc_offset;
|
||||
+ uint16_t reserved1;
|
||||
+ uint8_t bank_state[4];
|
||||
+ uint32_t reserved2;
|
||||
|
||||
- struct fwu_image_entry img_entry[CONFIG_FWU_NUM_IMAGES_PER_BANK];
|
||||
+ struct fwu_fw_store_desc fw_desc;
|
||||
} __packed;
|
||||
|
||||
#endif /* _FWU_MDATA_H_ */
|
||||
diff --git a/lib/fwu_updates/fwu.c b/lib/fwu_updates/fwu.c
|
||||
index 5313d07302..488c9cc661 100644
|
||||
--- a/lib/fwu_updates/fwu.c
|
||||
+++ b/lib/fwu_updates/fwu.c
|
||||
@@ -131,7 +131,7 @@ static int in_trial_state(struct fwu_mdata *mdata)
|
||||
struct fwu_image_bank_info *img_bank_info;
|
||||
|
||||
active_bank = mdata->active_index;
|
||||
- img_entry = &mdata->img_entry[0];
|
||||
+ img_entry = &mdata->fw_desc.img_entry[0];
|
||||
for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) {
|
||||
img_bank_info = &img_entry[i].img_bank_info[active_bank];
|
||||
if (!img_bank_info->accepted) {
|
||||
@@ -418,8 +418,8 @@ int fwu_get_image_index(u8 *image_index)
|
||||
*/
|
||||
for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) {
|
||||
if (!guidcmp(&image_type_id,
|
||||
- &mdata.img_entry[i].image_type_uuid)) {
|
||||
- img_entry = &mdata.img_entry[i];
|
||||
+ &mdata.fw_desc.img_entry[i].image_type_uuid)) {
|
||||
+ img_entry = &mdata.fw_desc.img_entry[i];
|
||||
img_bank_info = &img_entry->img_bank_info[update_bank];
|
||||
image_guid = &img_bank_info->image_uuid;
|
||||
ret = fwu_plat_get_alt_num(dev, image_guid, &alt_num);
|
||||
@@ -512,7 +512,7 @@ static int fwu_clrset_image_accept(efi_guid_t *img_type_id, u32 bank, u8 action)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
- img_entry = &mdata.img_entry[0];
|
||||
+ img_entry = &mdata.fw_desc.img_entry[0];
|
||||
for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) {
|
||||
if (!guidcmp(&img_entry[i].image_type_uuid, img_type_id)) {
|
||||
img_bank_info = &img_entry[i].img_bank_info[bank];
|
||||
--
|
||||
2.25.1
|
||||
|
||||
Reference in New Issue
Block a user