UKIs look like a kernel image, but barebox doesn't detect them as one,
which has barebox treat them as it would treat e.g. an EFI shell: An
executable it can start, but can't pass arguments to and that it assumes
will return to it when it exits.

This doesn't hold of course as a UKI should never return execution to
barebox.

Additionally, to select a UKI profile, barebox will need to add an @N
(where N identifies the profile by number) as the very first load
option.

This is also enabled by this series.

v2 -> v3:
    - New patch "efi: treat EFI zboot Linux images like other EFI-stubbed
      kernels". CONFIG_EFI_ZBOOT kernels were detected as plain EFI
      applications, so bootm passed them no bootargs, initrd or device tree
    - "common: bootargs: drop legacy bootargs fallback with FLEXIBLE_BOOTARGS":
      pass global.linux.mtdparts.* and global.linux.blkdevparts.* even if no
      global.linux.bootargs.* variable has a value. With "globalvar: skip
      empty variables in globalvar_get_match()", they would otherwise be
      dropped after every boot entry. Mention this in the migration note
    - "efi: payload: always shutdown barebox when booting": add a migration
      note, as EFI applications booted via bootm no longer return to barebox
    - "efi: payload: pass shell arguments as load options to executed images":
      print the "Booting ... with options" message for all images, not only
      for EFI-stubbed kernels, and reword the comment on clearing the load
      options of a still loaded driver (Marco)
    - "efi: add global.efi.bootargs for bootm'd EFI applications": simplify
      efi_bootargs_get() with strjoin() and isempty() (Marco), and compute
      the load options only after the dryrun check
    - "Documentation: efi: describe load options handling": note that UKIs
      executed directly from the shell are started like any other EFI
      application, so barebox doesn't shut down before they take over
    - New patch "boot: report exit status of failing boot scripts"
    - Rebase onto current master. The migration notes are now separate files
      under Documentation/migration-guides/migration-master/
    - Link to v2: 
https://lore.barebox.org/barebox/[email protected]/

v1 -> v2:
  - New patch "commands: devlookup: honour global.bootm.root_param for -k",
    so scripts can build the root option that bootm would append, e.g. for
    UKIs (Fabian)
  - "common: bootargs: don't leave linux_bootargs dangling after free":
    move from 9/9 to the front of the series, as skipping empty variables
    in globalvar_get_match() made the double free reachable after any boot
    entry
  - "efi: payload: honour bootm dryrun in the EFI application handler":
    move before "always shutdown barebox when booting", so bootm -d no
    longer ends the barebox session at any point in the series; drop the
    commit message sentence that only made sense in the old order
  - "Documentation: efi: describe load options handling": turn the UKI
    note into a paragraph explaining that the Linux bootargs, including
    bootm.appendroot's root=, aren't passed, how systemd-stub treats load
    options with and without Secure Boot, and how to pass root= via
    devlookup -k and global.efi.bootargs.root (Fabian)
  - Rebase onto current next
  - Link to v1: 
https://lore.barebox.org/barebox/[email protected]/


Ahmad Fatoum (12):
  efi: treat EFI zboot Linux images like other EFI-stubbed kernels
  commands: devlookup: honour global.bootm.root_param for -k
  common: bootargs: don't leave linux_bootargs dangling after free
  common: bootargs: drop legacy bootargs fallback with FLEXIBLE_BOOTARGS
  globalvar: skip empty variables in globalvar_get_match()
  efi: payload: honour bootm dryrun in the EFI application handler
  efi: payload: always shutdown barebox when booting
  efi: payload: pass shell arguments as load options to executed images
  efi: add global.efi.bootargs for bootm'd EFI applications
  Documentation: efi: describe load options handling
  test: py: efiloader: check global.efi.bootargs reaches the kernel
  boot: report exit status of failing boot scripts

 Documentation/boards/efi.rst                  | 68 +++++++++++++++-
 .../efi-payload-bootm-shutdown.rst            | 10 +++
 .../flexible-bootargs-legacy-fallback.rst     | 19 +++++
 Documentation/user/booting-linux.rst          | 12 ++-
 commands/devlookup.c                          |  5 +-
 common/block.c                                |  5 +-
 common/boot.c                                 | 10 ++-
 common/bootargs.c                             | 32 ++++----
 common/filetype.c                             |  5 +-
 common/globalvar.c                            |  6 +-
 efi/Makefile                                  |  2 +-
 efi/bootargs.c                                | 62 +++++++++++++++
 efi/loader/bootm.c                            | 34 +++++---
 efi/payload/bootm.c                           | 29 ++++++-
 efi/payload/image.c                           | 79 ++++++++++++++-----
 efi/payload/image.h                           |  3 +-
 include/block.h                               |  6 +-
 include/efi/bootargs.h                        |  9 +++
 include/filetype.h                            |  8 ++
 test/py/test_linux_efiloader.py               |  6 ++
 test/py/test_shell.py                         | 26 ++++++
 21 files changed, 371 insertions(+), 65 deletions(-)
 create mode 100644 
Documentation/migration-guides/migration-master/efi-payload-bootm-shutdown.rst
 create mode 100644 
Documentation/migration-guides/migration-master/flexible-bootargs-legacy-fallback.rst
 create mode 100644 efi/bootargs.c
 create mode 100644 include/efi/bootargs.h

-- 
2.47.3


Reply via email to