[PATCH v3 00/18] bootstd: Add a bootmeth for ChromiumOS on x86

Simon Glass sjg at chromium.org
Wed Jul 12 17:04:29 CEST 2023


This series adds a simple bootmeth for ChromiumOS on x86. It uses zimage
to boot the kernel.

Full verified boot is not included at this stage - that is still a
separate chunk of code to be brought into standard boot at some point.
For now it just obtains the kernel and command line and boots. This should
be enough to boot Chrome OS from coreboot on all x86 machines in
circulation, although only Brya (2022) and Coral (2017) have been tested.

ChromiumOS needs quite large kernel parameters, to hold the DM verity
settings and other pieces. This makes it painful to modify just one
parameter, since the whole cmdline must be adjusted at once. To cope with
this, a new cmdline-editing feature is provided: the 'bootflow cmdline'
command allows individual parameters to be added, modified and deleted.

To deal with enabling debug console, a variant supports setting 'earlycon'
and 'console' automatically. The 'bdinfo' command is updated to show
serial-port info also.

Booting the zimage is now done programmatically, rather than running
through the command-line interface. Minor tweaks are made to the coreboot
and coral config so that booting works correctly.

Note that the ACPI tables are not updated with the required firmware
information in this series, so a warning is shown on boot. This will be
addressed later since it requires quite a bit of configuration.

Finally, this fixes a recently introduced bug in unit testing and updates
the algorithm to avoid running flat-tree tests which don't actually use
the devicetree.

Changes in v3:
- Drop CONFIG_MISC and CONFIG_NVMEM
- Update commit message
- Separate out patch to restore test behaviour on failure

Changes in v2:
- Update host_bootdev.c too
- Correct 'it not known' typo
- Explain why the setup information is not behind an #ifdef
- Add comment for copy_in()
- Avoid multiplication on a boolean
- Add a comment as to why @len is needed
- Show error messages when something goes wrong
- Add new patch to create a little more room for U-Boot on qemu-x86_64
- Add new patch to switch x86 qemu to standard boot
- Drop mention of NVMe support

Simon Glass (18):
  test: Skip flat-tree tests if devicetree is not used
  bootstd: Correct the name of the QEMU bootmeth
  bootstd: Use bootdev instead of bootdevice
  bootstd: Correct baudrate typo
  bootstd: Allow storing the OS command line in the bootflow
  bootstd: Use the bootargs env var for changing the cmdline
  bootstd: Allow storing x86 setup information
  bdinfo: Show information about the serial port
  bootstd: Add a function to update a command line
  bootstd: Add support for updating elements of the cmdline
  x86: qemu: Create a little more room for U-Boot
  x86: qemu: Switch to standard boot
  bootstd: Support automatically setting Linux parameters
  x86: Add a function to boot a zimage
  x86: zimage: Export the function to obtain the cmdline
  bootstd: Add a simple bootmeth for ChromiumOS
  x86: coreboot: Adjust various config options
  x86: coral: Adjust various config options

 arch/x86/include/asm/zimage.h      |  27 +++
 arch/x86/lib/zimage.c              |  93 ++++++--
 boot/Kconfig                       |  11 +
 boot/Makefile                      |   1 +
 boot/bootflow.c                    | 339 ++++++++++++++++++++++++++++-
 boot/bootmeth-uclass.c             |   2 +-
 boot/bootmeth_cros.c               | 212 ++++++++++++++++++
 boot/bootmeth_qfw.c                |   2 +-
 cmd/bdinfo.c                       |  21 ++
 cmd/bootflow.c                     |  87 +++++++-
 configs/chromebook_coral_defconfig |  10 +-
 configs/coreboot_defconfig         |  14 +-
 configs/qemu-x86_64_defconfig      |   5 +-
 configs/qemu-x86_defconfig         |   2 +-
 configs/tools-only_defconfig       |   1 +
 doc/usage/cmd/bootflow.rst         | 100 ++++++++-
 drivers/mmc/mmc_bootdev.c          |   2 +-
 drivers/scsi/scsi_bootdev.c        |   2 +-
 drivers/usb/host/usb_bootdev.c     |   2 +-
 fs/sandbox/host_bootdev.c          |   2 +-
 include/bootdev.h                  |   2 +-
 include/bootflow.h                 | 100 ++++++++-
 include/configs/qemu-x86.h         |   8 -
 include/env_callback.h             |   6 +-
 net/eth_bootdev.c                  |   2 +-
 test/boot/bootflow.c               | 263 ++++++++++++++++++++++
 test/test-main.c                   |   3 +-
 27 files changed, 1263 insertions(+), 56 deletions(-)
 create mode 100644 boot/bootmeth_cros.c

-- 
2.41.0.390.g38632f3daf-goog



More information about the U-Boot mailing list