[PATCH v3 00/19] bootstd: Support recording images

Tom Rini trini at konsulko.com
Thu Jan 16 00:31:57 CET 2025


On Wed, Jan 15, 2025 at 04:14:27PM -0700, Simon Glass wrote:
> Hi Tom,
> 
> On Wed, 15 Jan 2025 at 14:24, Tom Rini <trini at konsulko.com> wrote:
> >
> > On Wed, Jan 15, 2025 at 06:55:45AM -0700, Simon Glass wrote:
> > > Hi,
> > >
> > > On Mon, 4 Nov 2024 at 10:51, Simon Glass <sjg at chromium.org> wrote:
> > > >
> > > > This series provides a way to keep track of the images used in bootstd,
> > > > including the type of each image.
> > > >
> > > > At present this is sort-of handled by struct bootflow but in quite an
> > > > ad-hoc way. The structure has become quite large and is hard to query.
> > > > Future work will be able to reduce its size.
> > > >
> > > > Ultimately the 'bootflow info' command may change to also show images as
> > > > a list, but that is left for later, as this series is already fairly
> > > > long. So for now, just introduce the concept and adjust bootstd to use
> > > > it, with a simple command to list the images.
> > > >
> > > > This series includes various alist enhancements, to make use of this new
> > > > data structure a little easier.
> > > >
> > > > Changes in v3:
> > > > - Add a helper in bootflow
> > > > - Add a new patch supporting ad-hoc bootflows
> > > > - Add new patch to export bootdev_get_from_blk()
> > > > - Add new patch to record loaded files in an ad-hoc bootflow
> > > > - Update bootstd_add_bootflow() to return the element number
> > > > - Use the helper function
> > > >
> > > > Changes in v2:
> > > > - Add an image type extension in bootflow.h
> > > > - Change the tag to bootmeth_efi
> > > > - Drop patches already applied
> > > > - Drop patches which add new image types
> > > > - Update to use a new image-type enum in bootflow.h
> > > > - Use the word 'feature' instead of 'hack'
> > > >
> > > > Simon Glass (19):
> > > >   bootstd: Move bootflow-adding to bootstd
> > > >   bootstd: Move bootflow-clearing to bootstd
> > > >   bootstd: Add a function to get bootstd only if available
> > > >   bootstd: Drop the bootdev-specific list of bootflows
> > > >   bootstd: Move the bootflow list into an alist
> > > >   bootstd: Maintain a list of images
> > > >   bootstd: Update bootmeth_alloc_file() to record images
> > > >   boot: pxe: Drop the duplicate comment on get_pxe_file()
> > > >   bootmeth_efi: Simplify reading files by using the common function
> > > >   bootmeth: Update the read_file() method to include a type
> > > >   bootmeth_efi: Check the filename-allocation in the network path
> > > >   boot: Update extlinux pxe_getfile_func() to include type
> > > >   boot: Update pxe bootmeth to record images
> > > >   Update bootmeth_alloc_other() to record images
> > > >   bootstd: Update cros bootmeth to record images
> > > >   bootstd: Add a simple command to list images
> > > >   bootstd: Export bootdev_get_from_blk()
> > > >   bootstd: Add the concept of an ad-hoc bootflow
> > > >   fs: Record loaded files in an ad-hoc bootflow
> > > >
> > > >  boot/bootdev-uclass.c            |  78 ++++++-------------
> > > >  boot/bootflow.c                  |  77 +++++++++++++++----
> > > >  boot/bootmeth-uclass.c           |  29 +++++--
> > > >  boot/bootmeth_android.c          |   3 +-
> > > >  boot/bootmeth_cros.c             |  17 ++++-
> > > >  boot/bootmeth_efi.c              |  16 ++--
> > > >  boot/bootmeth_efi_mgr.c          |   3 +-
> > > >  boot/bootmeth_extlinux.c         |   7 +-
> > > >  boot/bootmeth_pxe.c              |  10 ++-
> > > >  boot/bootmeth_qfw.c              |   3 +-
> > > >  boot/bootmeth_sandbox.c          |   3 +-
> > > >  boot/bootmeth_script.c           |   7 +-
> > > >  boot/bootstd-uclass.c            | 104 +++++++++++++++++++++++--
> > > >  boot/pxe_utils.c                 |  36 ++++-----
> > > >  boot/vbe_simple.c                |   5 +-
> > > >  cmd/Kconfig                      |   9 +++
> > > >  cmd/Makefile                     |   1 +
> > > >  cmd/bootdev.c                    |   2 +-
> > > >  cmd/bootflow.c                   |  11 +--
> > > >  cmd/bootstd.c                    |  65 ++++++++++++++++
> > > >  cmd/pxe.c                        |   2 +-
> > > >  cmd/sysboot.c                    |   6 +-
> > > >  doc/develop/bootstd/overview.rst |  24 +++++-
> > > >  doc/usage/cmd/bootstd.rst        |  79 +++++++++++++++++++
> > > >  doc/usage/index.rst              |   1 +
> > > >  fs/fs.c                          |  15 ++++
> > > >  include/bootdev.h                |  36 +++------
> > > >  include/bootflow.h               |  88 ++++++++++++++++++---
> > > >  include/bootmeth.h               |  22 ++++--
> > > >  include/bootstd.h                |  69 ++++++++++++++++-
> > > >  include/pxe_utils.h              |  14 +++-
> > > >  test/boot/bootflow.c             | 126 +++++++++++++++++++++++++++++++
> > > >  test/py/tests/test_ut.py         |   3 +-
> > > >  33 files changed, 788 insertions(+), 183 deletions(-)
> > > >  create mode 100644 cmd/bootstd.c
> > > >  create mode 100644 doc/usage/cmd/bootstd.rst
> > > >
> > > > --
> > > > 2.34.1
> > > >
> > >
> > > patchwork link: https://patchwork.ozlabs.org/project/uboot/list/?series=433068
> > >
> > > What is the status of this series please?
> >
> > So, for v4 of this series, most arm64 platforms grow by ~1KiB (a few are
> > 2, a few are a bit less than 1). 32bit ARM is similar but now mx6sabresd
> > doesn't build in CI (there's some embedded path names that now overflow,
> > try make O=/tmp/1/2/3/4/5/6/7/8/9/10/mx6sabresd mx6sabresd_config all).
> > For size changes, really most architectures are like that, so perhaps
> > it's worth stepping back again and asking where this should be default
> > enabled. For the mx6sabresd part, if we drop the recording for ad-hoc
> > (which I think you had suggested at some point since I wasn't sure about
> > that direction), everything builds at least.
> 
> Thanks for looking at it. So what do you think about dropping those
> last two patches and applying the rest? The increase is about 416
> bytes on pinecube (Thumb2). Quite a bit of this seems to be bringing
> alist which is something of a one-off hit:
> 
>                  alist_ensure_ptr                             -      64     +64
>                  alist_calc_index                             -      32     +32
>                  alist_add_ptr                                -      26     +26
>                  alist_update_end                             -      18     +18
>                  alist_empty                                  -       6      +6
>                  alist_add_placeholder                        -       6      +6
> 
> Then I can use the final two patches as the start of the series to
> finish off ad-hoc images.

I was thinking just patch #20, but we can drop 19 and 20 instead, sure.

> As to default-enabled, moving bootflow to an alist isn't really
> something we can disable.

I'm referring to the whole bootmeth/bootflow/etc thing. Is this going to
be put to use by anyone / anywhere on PowerPC? M68K? MIPS? 32bit ARM is
a harder question there, which is also where this particular overflow
was.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20250115/32cd6240/attachment.sig>


More information about the U-Boot mailing list