[PATCH v4 10/12] bloblist: Adjust the bloblist header

Simon Glass sjg at chromium.org
Thu Dec 28 14:37:05 CET 2023


Hi Ilias,

On Thu, Dec 28, 2023 at 7:37 AM Ilias Apalodimas
<ilias.apalodimas at linaro.org> wrote:
>
> Hi Raymond,
>
> [...]
>
> >
> >  void bloblist_show_list(void)
> > @@ -463,7 +477,7 @@ void bloblist_reloc(void *to, uint to_size, void *from, uint from_size)
> >
> >         memcpy(to, from, from_size);
> >         hdr = to;
> > -       hdr->size = to_size;
> > +       hdr->total_size = to_size;
> >  }
> >
> >  int bloblist_init(void)
> > @@ -493,7 +507,7 @@ int bloblist_init(void)
> >                                     addr, ret);
> >                 } else {
> >                         /* Get the real size, if it is not what we expected */
> > -                       size = gd->bloblist->size;
> > +                       size = gd->bloblist->total_size;
> >                 }
> >         }
> >         if (ret) {
> > diff --git a/include/bloblist.h b/include/bloblist.h
> > index 7024d7bf9e..4ec4b3d449 100644
> > --- a/include/bloblist.h
> > +++ b/include/bloblist.h
> > @@ -166,32 +166,33 @@ enum bloblist_tag_t {
> >   * from the last.
> >   *
> >   * @magic: BLOBLIST_MAGIC
> > + * @chksum: checksum for the entire bloblist allocated area. Since any of the
> > + *     blobs can be altered after being created, this checksum is only valid
> > + *     when the bloblist is finalized before jumping to the next stage of boot.
> > + *     This is the value needed to make all checksummed bytes sum to 0
> >   * @version: BLOBLIST_VERSION
> >   * @hdr_size: Size of this header, normally sizeof(struct bloblist_hdr). The
> >   *     first bloblist_rec starts at this offset from the start of the header
> > - * @flags: Space for BLOBLISTF... flags (none yet)
> > - * @size: Total size of the bloblist (non-zero if valid) including this header.
> > - *     The bloblist extends for this many bytes from the start of this header.
> > - *     When adding new records, the bloblist can grow up to this size.
> > - * @alloced: Total size allocated so far for this bloblist. This starts out as
> > + * @align_log2: Power of two of the maximum alignment required by this list
> > + * @used_size: Size allocated so far for this bloblist. This starts out as
> >   *     sizeof(bloblist_hdr) since we need at least that much space to store a
> >   *     valid bloblist
> > + * @total_size: The number of total bytes that the bloblist can occupy.
> > + *     Any blob producer must check if there is sufficient space before adding
> > + *     a record to the bloblist.
> > + * @flags: Space for BLOBLISTF... flags (none yet)
> >   * @spare: Spare space (for future use)
> > - * @chksum: checksum for the entire bloblist allocated area. Since any of the
> > - *     blobs can be altered after being created, this checksum is only valid
> > - *     when the bloblist is finalised before jumping to the next stage of boot.
> > - *     This is the value needed to make all checksummed bytes sum to 0
> >   */
> >  struct bloblist_hdr {
> >         u32 magic;
> > -       u32 version;
> > -       u32 hdr_size;
> > +       u8 chksum;
> > +       u8 version;
> > +       u8 hdr_size;
> > +       u8 align_log2;
> > +       u32 used_size;
> > +       u32 total_size;
> >         u32 flags;
> > -
> > -       u32 size;
> > -       u32 alloced;
> >         u32 spare;
> > -       u32 chksum;
> >  };
>
> The patch generally looks ok, but while we are renaming things, can't
> we just copy what the spec says instead of slightly changing the
> names?
>
> With this applied we end up with
>   struct bloblist_hdr {
>          u32 magic;
>          u8 chksum;
>          u8 version;
>          u8 hdr_size;
>          u8 align_log2;
>          u32 used_size;
>          u32 total_size;
>          u32 flags;
>          u32 spare;
>   };
>
> Can you at least rename the ones you touch here properly?
> - Drop the patch that renames spare to _spare
> - used_size -> size
> - total_size -> max_size (which btw mean different things)
> - spare -> reserved

Yes that would be good, but since the spec only recently changed the
names, how about a 'rename' patch on top, if that is easier?

I was hoping that this series could be applied as is, or close to it.
It looks like a good base to me.

Regards,
Simon


More information about the U-Boot mailing list