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

Sughosh Ganu sughosh.ganu at linaro.org
Wed Sep 4 09:18:21 CEST 2024


On Tue, 3 Sept 2024 at 22:37, Michal Simek <michal.simek at amd.com> wrote:
>
>
>
> 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?

They just got dropped during the code refactor. Will put them back. Thanks.

-sughosh


More information about the U-Boot mailing list