[PATCH v2 00/39] efi: Improvements to U-Boot running on top of UEFI

Simon Glass sjg at chromium.org
Mon Oct 18 17:25:12 CEST 2021


Hi Heinrich,

On Fri, 24 Sept 2021 at 18:31, Simon Glass <sjg at chromium.org> wrote:
>
> At present U-Boot can be built as an EFI app, but it is really just for
> testing, with very few features. Instead, the payload build is used for
> booting on top of UEFI, where U-Boot takes over the machine immediately
> and supplies its own drivers.
>
> But the app could be made more useful.
>
> This series provides access to EFI block devices and the video console
> within U-Boot. It also restructures the app to make it possible to boot
> a kernel, although further work is needed to implement this.
>
> This can be thought of as making U-Boot perform a little like 'grub', in
> that it runs purely based on UEFI-provided services.
>
> Of course a lot more work is required, but this is a start.
>
> Note: It would be very useful to include qemu tests of the app and stub
> in CI.
>
> This is available at u-boot-dm/efi-working
>
> Changes in v2:
> - Add MAINTAINERS entry
> - Add a better boot command too
> - Add a note that EFI_GRAPHICS_OUTPUT_PROTOCOL is used
> - Add a sentence about what the patch does
> - Add a work-around to avoid a toolchain crash
> - Add new patch to drop the OF_EMBED warning for EFI
> - Add new patch to enable DM_ETH for the app
> - Add new patch to support the efi command in the app
> - Add new patch with maintainer entry
> - Add support for creating a partition table with a filesystem inside
> - Add support for running qemu with just a serial console (no display)
> - Drop mention of partitions from the commit message
> - Expand the commit message to make things clearer
> - Fix 'as' typo
> - Mention why this patch is included in this series
> - Put this patch first so that it is separated from the rest of the series
> - Show the correct interface type with 'part list'
> - Update commit message to mention that these function are x86-specific
> - Update commit message to mention why the data structure is like it is
> - Update commit message to mention why ulong is used
> - Update documentation
> - Update the commit message to explain things better
> - Use log_info() instead of printf()
>
> Simon Glass (39):
>   RFC: efi: Drop code that doesn't work with driver model
>   efi: Add a separate maintainer entry for the app
>   x86: Keep symbol information in u-boot ELF file
>   x86: Create a new header for EFI
>   x86: Show some EFI info with the bdinfo command
>   x86: Tidy up global_data pointer for 64-bit
>   efi: Add a script for building and testing U-Boot on UEFI
>   efi: Enable DM_ETH for the app
>   efi: Drop the OF_EMBED warning for EFI
>   x86: Create a 32/64-bit selection for the app
>   efi: Create a 64-bit app
>   x86: Don't duplicate global_ptr in 64-bit EFI app
>   efi: Add a way to obtain boot services in the app
>   efi: Add video support to the app
>   efi: Add EFI uclass for media
>   efi: Add a media/block driver for EFI block devices
>   efi: Locate all block devices in the app
>   patman: Use a ValueError exception if tools.Run() fails
>   binman: Report an error if test files fail to compile
>   binman: Support reading the offset of an ELF-file symbol
>   binman: Allow timeout to occur in the image or its section
>   binman: Tidy up comments on _DoTestFile()
>   binman: Support updating the dtb in an ELF file
>   efi: serial: Support arrow keys
>   bloblist: Support allocating the bloblist
>   x86: Allow booting a kernel from the EFI app
>   x86: Don't process the kernel command line unless enabled
>   x86: efi: Add room for the binman definition in the dtb
>   efi: Add comments to struct efi_priv
>   efi: Fix ll_boot_init() operation with the app
>   efi: Add a few comments to the stub
>   efi: Share struct efi_priv between the app and stub code
>   efi: Move exit_boot_services into a function
>   efi: Check for failure when initing the app
>   efi: Mention that efi_info_get() is only used in the stub
>   efi: Show when allocated pages are used
>   efi: Allow easy selection of serial-only operation
>   efi: Update efi_get_next_mem_desc() to avoid needing a map
>   efi: Support the efi command in the app
>
>  MAINTAINERS                                   |  14 +
>  Makefile                                      |  10 +-
>  arch/sandbox/dts/test.dts                     |   4 +
>  arch/x86/config.mk                            |   4 +-
>  arch/x86/cpu/efi/payload.c                    |  21 +-
>  arch/x86/cpu/intel_common/Makefile            |   2 +-
>  arch/x86/cpu/u-boot-64.lds                    |   2 +
>  arch/x86/cpu/x86_64/Makefile                  |   4 +
>  arch/x86/cpu/x86_64/cpu.c                     |  32 +-
>  arch/x86/cpu/x86_64/misc.c                    |  41 +++
>  arch/x86/dts/Makefile                         |   2 +-
>  arch/x86/dts/efi-x86_app.dts                  |   4 +
>  arch/x86/include/asm/efi.h                    |  39 +++
>  arch/x86/include/asm/global_data.h            |   2 +
>  arch/x86/include/asm/zimage.h                 |   3 -
>  arch/x86/lib/Makefile                         |   1 +
>  arch/x86/lib/bdinfo.c                         |  22 ++
>  arch/x86/lib/bootm.c                          |  11 +-
>  arch/x86/lib/zimage.c                         |  14 +-
>  board/efi/Kconfig                             |  15 +-
>  board/efi/efi-x86_app/Kconfig                 |   6 +-
>  board/efi/efi-x86_app/MAINTAINERS             |  11 +-
>  cmd/Makefile                                  |   2 +-
>  cmd/efi.c                                     |  76 +++--
>  common/Kconfig                                |  15 +-
>  common/bloblist.c                             |  16 +-
>  common/board_f.c                              |   8 +-
>  ..._app_defconfig => efi-x86_app32_defconfig} |   3 +-
>  configs/efi-x86_app64_defconfig               |  39 +++
>  disk/part.c                                   |   5 +-
>  doc/develop/bloblist.rst                      |  16 +
>  doc/develop/uefi/u-boot_on_efi.rst            |  74 ++++-
>  drivers/block/Kconfig                         |  33 +++
>  drivers/block/Makefile                        |   4 +
>  drivers/block/blk-uclass.c                    |   2 +-
>  drivers/block/efi-media-uclass.c              |  15 +
>  drivers/block/efi_blk.c                       | 115 ++++++++
>  drivers/block/sb_efi_media.c                  |  20 ++
>  drivers/serial/serial_efi.c                   |  11 +-
>  drivers/video/Kconfig                         |   2 +-
>  drivers/video/efi.c                           |  45 ++-
>  include/configs/efi-x86_app.h                 |  31 +-
>  include/dm/uclass-id.h                        |   1 +
>  include/efi.h                                 | 123 +++++++-
>  include/efi_api.h                             |  15 +
>  include/init.h                                |   2 +-
>  lib/efi/Kconfig                               |  34 ++-
>  lib/efi/efi.c                                 | 106 +++++++
>  lib/efi/efi_app.c                             | 276 +++++++++++++++++-
>  lib/efi/efi_stub.c                            |  95 +++---
>  lib/efi_driver/Makefile                       |   2 +-
>  lib/efi_loader/Kconfig                        |   1 +
>  lib/efi_loader/efi_device_path.c              |  96 ++----
>  lib/efi_loader/efi_disk.c                     |  48 ---
>  scripts/build-efi.sh                          | 188 ++++++++++++
>  test/dm/Makefile                              |   1 +
>  test/dm/efi_media.c                           |  24 ++
>  tools/binman/binman.rst                       |  36 +++
>  tools/binman/cmdline.py                       |   2 +
>  tools/binman/control.py                       |  11 +
>  tools/binman/elf.py                           |  74 ++++-
>  tools/binman/elf_test.py                      |  45 ++-
>  tools/binman/ftest.py                         |  91 +++++-
>  tools/binman/test/Makefile                    |  13 +-
>  tools/binman/test/bss_data.c                  |   2 +-
>  tools/binman/test/embed_data.c                |  16 +
>  tools/binman/test/embed_data.lds              |  23 ++
>  tools/binman/test/u_boot_binman_embed.c       |  13 +
>  tools/binman/test/u_boot_binman_embed.lds     |  29 ++
>  tools/binman/test/u_boot_binman_embed_sm.c    |  13 +
>  tools/patman/tools.py                         |   2 +-
>  71 files changed, 1841 insertions(+), 337 deletions(-)
>  create mode 100644 arch/x86/cpu/x86_64/misc.c
>  create mode 100644 arch/x86/include/asm/efi.h
>  create mode 100644 arch/x86/lib/bdinfo.c
>  rename configs/{efi-x86_app_defconfig => efi-x86_app32_defconfig} (94%)
>  create mode 100644 configs/efi-x86_app64_defconfig
>  create mode 100644 drivers/block/efi-media-uclass.c
>  create mode 100644 drivers/block/efi_blk.c
>  create mode 100644 drivers/block/sb_efi_media.c
>  create mode 100755 scripts/build-efi.sh
>  create mode 100644 test/dm/efi_media.c
>  create mode 100644 tools/binman/test/embed_data.c
>  create mode 100644 tools/binman/test/embed_data.lds
>  create mode 100644 tools/binman/test/u_boot_binman_embed.c
>  create mode 100644 tools/binman/test/u_boot_binman_embed.lds
>  create mode 100644 tools/binman/test/u_boot_binman_embed_sm.c
>
> --
> 2.33.0.685.g46640cef36-goog
>

These patches seem to be in your queue. Can you please give me an update?

Thanks,
Simon


More information about the U-Boot mailing list