[PATCH 0/6] Miscellaneous FWU fixes

Michal Simek michal.simek at amd.com
Wed Sep 4 13:59:57 CEST 2024



On 8/30/24 13:40, Sughosh Ganu wrote:
> 
> The following set of patches are miscellaneous fixes and some
> hardening of the FWU update logic.
> 
> Sughosh Ganu (6):
>    fwu: v2: perform some checks before reading metadata
>    fwu: v2: try reading both copies of metadata
>    fwu: v1: do a version check for the metadata
>    fwu: check all images for transitioning out of Trial State
>    fwu: add dependency checks for selecting FWU metadata version
>    fwu: do not allow capsule processing on exceeding Trial Counter
>      threshold
> 
>   include/fwu.h            | 11 ++++++
>   lib/fwu_updates/Kconfig  |  1 +
>   lib/fwu_updates/fwu.c    | 31 +++++++++++++++-
>   lib/fwu_updates/fwu_v1.c | 18 +++++++--
>   lib/fwu_updates/fwu_v2.c | 80 ++++++++++++++++++++++------------------
>   5 files changed, 99 insertions(+), 42 deletions(-)
> 

I found one more thing.

I did this change

diff --git a/tools/mkfwumdata.c b/tools/mkfwumdata.c
index fbc2067bc12d..dab9530e499c 100644
--- a/tools/mkfwumdata.c
+++ b/tools/mkfwumdata.c
@@ -293,7 +293,7 @@ static void fwu_fill_version_specific_mdata(struct 
fwu_mdata_object *mobj)
         struct fwu_mdata *mdata = mobj->mdata;

         mdata->metadata_size = mobj->size;
-       mdata->desc_offset = sizeof(struct fwu_mdata);
+       mdata->desc_offset = 0x21; sizeof(struct fwu_mdata);

         for (i = 0; i < MAX_BANKS_V2; i++)
                 mdata->bank_state[i] = i < mobj->banks ?


to break desc_offset location. I generated mdata structure and write it to 
primary mdata partition.

This has been spotted by (my debug) which is the reason why I did it.

	if (g_mdata.desc_offset != FWU_IMG_DESC_OFFSET) {
		printf("mdata offset is not 0x20\n");
		return false;
	}

But I got one more message below which

mdata offset is not 0x20
Both FWU metadata copies are valid but do not match. Restoring the secondary 
partition from the primary

But this is wrong. 0x21 there is wrong as been detected but sync code detects it 
as correct one and by this break also backup copy.

Thanks,
Michal


More information about the U-Boot mailing list