Hi Igor,

On Tue, 4 Mar 2025 at 07:50, Igor Opaniuk <igor.opan...@gmail.com> wrote:
>
> Hello Simon,
>
> On Sat, Feb 15, 2025 at 2:08 PM Simon Glass <s...@chromium.org> wrote:
> >
> > The original x86 EFI-app was written back in 2015, about a year before
> > the EFI-loader was introduced. At that point, ARM mostly used U-Boot and
> > FIT (Flat Image Tree).
> >
> > Today, sadly, there are a few efforts to re-invent FIT poorly, to cater
> > to more primitive boot-environments than U-Boot. One justification for
> > this re-invetion has been that EDK2 did not support FIT.
> >
> > EDK2 does now support FIT but only for the firmware stage. Even then,
> > vendors tend to use their own forks, so any new features are slow to
> > make it into the market.
> >
> > EDK2 also supports the ext4 filesystem, but many devices don't include
> > that feature, so most distros make use of FAT for storing their boot
> > files. Since FAT is not journalled, it is not particularly reliable in
> > the face of reset, power failure, etc.
> >
> > As an interim measure, we can use U-Boot as an EFI app running on top of
> > whatever EDK2 fork is in use. This allows use of modern features such as
> > FIT and filesystems other than FAT. So far this only supports x86, but
> > recent ARM laptops are making use of EFI too.
> >
> > So this series adds an EFI app for 64-bit ARM.
> >
> > Note: Since U-Boot does not support EFI's GOP 'blt-only' mode, the
> > vidconsole does not operate, but it can still be used, since EDK2
> > handles drawing instead of U-Boot. As a result, the U-Boot logo is not
> > shown.
> >
> > Changes in v4:
> > - Got back to depending on HAVE_TEXT_BASE
> > - Drop the confusing comment about position-independent code
> > - Put EFI_LDS back as it is required for building helloword.efi etc.
> > - Put the config.mk changes in the board directory
> >
> > Changes in v3:
> > - Use the same copyright message as the original pci_rom.c file
> > - Rewrite the commit message
> > - Drop setting of EFI_LDS and rely on the CONFIG_SYS_LDSCRIPT value
> >
> > Changes in v2:
> > - Depend on CONFIG_EFI_APP instead
> > - Drop change to u-boot-elf rule
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Drop the word 'Sadly'
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Add new patch to rename VENDOR_EFI to ARCH_EFI
> > - Update to use ARCH_EFI instead of VENDOR_EFI
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Rework the commit message to clarify the relationship to link-scripts
> > - Expand commit message to explains that EFI_APP skips relocation
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Document the x86 field better and add a comment for ARM too
> > - Mention '64-bit ARM' here, rather than just 'ARM'
> > - Put the EFI-app case first in setup_mon_len(), for clarity
> > - Use ARCH_EFI instead of VENDOR_EFI
> > - Merge the linker-script rules into Kconfig in this patch
> > - Drop patch 'Select the EFI linker script for the app'
> >
> > Simon Glass (29):
> >   Makefile: Avoid using TEXT_BASE with the EFI APP
> >   video: Move vesa_setup_video_priv() into its own file
> >   video: Use a local mode_info struct in the EFI driver
> >   lib: Provide fdtdec_get_pci_bar32() only with PCI enabled
> >   efi: Rename app and payload to include x86
> >   efi: Allow board/efi Kconfig to be used outside x86
> >   efi: x86: Move EFI SDRAM-handling into a common file
> >   treewide: Rename VENDOR_EFI to ARCH_EFI
> >   efi: x86: Rework VENDOR_EFI option to permit other archs
> >   efi: x86: Allow setting the global_data pointer with EFI
> >   efi: Tidy up setup of global_data
> >   efi: Rename ImageBase to image_base
> >   efi: lmb: Avoid access to _start
> >   efi: arm: Don't do the EL2 switch when running under EFI
> >   efi: arm: Avoid allocating page tables when running under EFI
> >   efi: arm: Avoid enabling caches when running under EFI
> >   efi: arm: Implement access to global_data for EFI
> >   efi: arm: Omit the ARM start-up code in the EFI app
> >   efi: arm: Drop exception-level code when running as EFI app
> >   efi: arm: x86: Allow use of the EFI table in the app
> >   efi: arm: Disable --gc-sections for the app
> >   efi: arm: Drop startup code from the app
> >   efi: arm: Adjust how the monitor length is calculated
> >   efi: arm: Provide startup and relocation code
> >   efi: Generate the app as a shared library
> >   efi: arm: Disable STATIC_RELA for the EFI app
> >   efi: arm: Use EFI flags for all compilation with the app
> >   efi: arm: Simplify the crt0 file and update link script
> >   efi: arm: Add an EFI app for arm64
> >
> >  Kconfig                               |   1 +
> >  MAINTAINERS                           |   4 +-
> >  Makefile                              |   7 +-
> >  arch/Kconfig                          |   2 +
> >  arch/arm/Kconfig                      |   6 +-
> >  arch/arm/Makefile                     |   2 +
> >  arch/arm/config.mk                    |  12 ++
> >  arch/arm/cpu/armv8/Makefile           |   4 +-
> >  arch/arm/cpu/armv8/config.mk          |   2 +-
> >  arch/arm/dts/efi-arm_app.dts          |  31 +++++
> >  arch/arm/include/asm/global_data.h    |  18 ++-
> >  arch/arm/lib/Makefile                 |  12 +-
> >  arch/arm/lib/bootm.c                  |   7 +-
> >  arch/arm/lib/cache.c                  |   3 +
> >  arch/arm/lib/crt0_aarch64_efi.S       | 158 ++++----------------------
> >  arch/arm/lib/crt0_arm_efi.S           |   2 +-
> >  arch/arm/lib/elf_aarch64_efi.lds      |  49 +++++---
> >  arch/riscv/lib/crt0_riscv_efi.S       |  30 ++---
> >  arch/x86/Kconfig                      |   4 +-
> >  arch/x86/cpu/efi/Makefile             |   1 -
> >  arch/x86/include/asm/global_data.h    |   9 +-
> >  board/efi/Kconfig                     |  44 ++++++-
> >  board/efi/efi-arm_app/Kconfig         |  19 ++++
> >  board/efi/efi-arm_app/MAINTAINERS     |  13 +++
> >  board/efi/efi-arm_app/Makefile        |   5 +
> >  board/efi/efi-arm_app/board.c         |  18 +++
> >  board/efi/efi-arm_app/config.mk       |   4 +
> >  board/efi/efi-arm_app/efi-arm_app.env |  11 ++
> >  board/efi/efi-x86_payload/Kconfig     |   2 +-
> >  common/board_f.c                      |   6 +-
> >  common/board_r.c                      |   9 +-
> >  configs/efi-arm_app64_defconfig       |  51 +++++++++
> >  configs/efi-x86_app32_defconfig       |   4 +-
> >  configs/efi-x86_app64_defconfig       |   4 +-
> >  configs/efi-x86_payload32_defconfig   |   4 +-
> >  configs/efi-x86_payload64_defconfig   |   4 +-
> >  doc/develop/uefi/u-boot_on_efi.rst    |  17 +--
> >  drivers/pci/pci_rom.c                 |  32 ------
> >  drivers/video/Makefile                |   2 +
> >  drivers/video/efi.c                   |   1 +
> >  drivers/video/vesa_helper.c           |  41 +++++++
> >  include/asm-generic/sections.h        |   2 +
> >  include/vesa.h                        |   2 +
> >  lib/efi/Kconfig                       |   2 +-
> >  lib/efi/Makefile                      |   1 +
> >  lib/efi/efi_app.c                     |  13 ++-
> >  {arch/x86/cpu => lib}/efi/sdram.c     |   1 -
> >  lib/fdtdec.c                          |   2 +
> >  lib/lmb.c                             |   3 +-
> >  49 files changed, 431 insertions(+), 250 deletions(-)
> >  create mode 100644 arch/arm/dts/efi-arm_app.dts
> >  create mode 100644 board/efi/efi-arm_app/Kconfig
> >  create mode 100644 board/efi/efi-arm_app/MAINTAINERS
> >  create mode 100644 board/efi/efi-arm_app/Makefile
> >  create mode 100644 board/efi/efi-arm_app/board.c
> >  create mode 100644 board/efi/efi-arm_app/config.mk
> >  create mode 100644 board/efi/efi-arm_app/efi-arm_app.env
> >  create mode 100644 configs/efi-arm_app64_defconfig
> >  create mode 100644 drivers/video/vesa_helper.c
> >  rename {arch/x86/cpu => lib}/efi/sdram.c (94%)
> >
> > --
> > 2.43.0
> >
>
> It looks like some patches, such as "efi: x86: Move EFI SDRAM-handling
> into a common file,"
> depend on another patch series from Matthew Garrett [1], which has
> already been merged into "ci/master.".
>
> Could you please provide a link to that branch (assuming it's [1])? I
> wasn't able to
> find it in the custodian trees.
>
> [1] https://www.mail-archive.com/u-boot@lists.denx.de/msg528541.html
>

Yes, it is here:

https://sjg.u-boot.org/u-boot/u-boot/-/tree/master?ref_type=heads

Regards,
Simon

Reply via email to