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

Raymond Mao raymond.mao at linaro.org
Thu Dec 28 17:18:47 CET 2023


Hi Ilias,

On Thu, 28 Dec 2023 at 02:37, 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
>
> I was been told by Simon for the naming changes of `used_size` and
`total_size` at:
https://github.com/FirmwareHandoff/firmware_handoff/pull/25
I will prefer to keep this minor fix until spec v1.0 is released since the
spec
is still continuously being updated without upgrading the revision number.
When a v1.0 spec is released I will update the TF-A, OP-TEE and U-Boot
together.

[...]

Thanks and regards,
Raymond


More information about the U-Boot mailing list