[PATCH 2/6] fwu: v2: try reading both copies of metadata

Michal Simek michal.simek at amd.com
Tue Sep 3 19:07:37 CEST 2024



On 8/30/24 13:40, Sughosh Ganu wrote:
> In the version 2 of the FWU metadata, the metadata is broken into two
> parts, a top-level structure, which provides information on the total
> size of the structure among other things. Try reading the primary
> partition first, and if that fails, try reading the secondary
> partition. This will help in the scenario where the primary metadata
> partition has been corrupted, but the secondary partition is intact.
> 
> Signed-off-by: Sughosh Ganu <sughosh.ganu at linaro.org>
> ---
>   lib/fwu_updates/fwu_v2.c | 77 +++++++++++++++++++++-------------------
>   1 file changed, 41 insertions(+), 36 deletions(-)
> 
> diff --git a/lib/fwu_updates/fwu_v2.c b/lib/fwu_updates/fwu_v2.c
> index d0d8a25929..69306282aa 100644
> --- a/lib/fwu_updates/fwu_v2.c
> +++ b/lib/fwu_updates/fwu_v2.c
> @@ -10,6 +10,12 @@
>   #include <linux/types.h>
>   
>   #define FWU_MDATA_VERSION	0x2U
> +#define FWU_IMG_DESC_OFFSET	0x20U
> +
> +static struct fwu_mdata g_mdata;
> +
> +#define PRI_PART		0x1U
> +#define SEC_PART		0x2U
>   
>   static inline struct fwu_fw_store_desc *fwu_get_fw_desc(struct fwu_mdata *mdata)
>   {
> @@ -109,6 +115,31 @@ static int fwu_trial_state_start(uint update_index)
>   	return 0;
>   }
>   
> +static bool fwu_get_mdata_mandatory(uint part)
> +{
> +	int ret = 0;
> +	struct udevice *fwu_dev = fwu_get_dev();
> +
> +	memset(&g_mdata, 0, sizeof(struct fwu_mdata));
> +
> +	ret = fwu_read_mdata(fwu_dev, &g_mdata,
> +			     part == PRI_PART ? true : false,
> +			     sizeof(struct fwu_mdata));
> +	if (ret)
> +		return false;
> +
> +	if (g_mdata.version != FWU_MDATA_VERSION)
> +		return false;

Any reason to remove error logs which were here?

Thanks,
Michal


More information about the U-Boot mailing list