[PATCH RFC 00/14] efi: implement EFISTUB support for ARM64 and Qualcomm
Simon Glass
sjg at chromium.org
Mon Feb 3 13:54:40 CET 2025
Hi Caleb,
On Sun, 24 Nov 2024 at 13:27, Caleb Connolly <caleb.connolly at linaro.org> wrote:
>
> This series implements support for launching U-Boot as an EFI payload on
> ARM64 devices that already have an EFI capable bootloader.
>
> Patches 9 through 14 in tandem with another series [1] provide all the
> pieces necessary to build and run U-Boot on Snapdragon X Elite laptops.
> They're only here to demonstrate the usecase and either already have or
> will be sent separately, they should not be reviewed as part of this
> RFC.
>
> Initial support is provided for:
> * Building U-Boot with an EFI stub on ARM64
> * Inheriting DRAM banks from the EFI memory map
> * Creating a framebuffer node in the OF tree based on EFI GOP info
>
> This allows for booting Linux on top of U-Boot's EFI implementation on
> Qualcomm Snapdragon X Elite platforms.
>
> The primary motivation for this is to provide a more standard EFI
> interface on devices like Qualcomm powered Windows laptops. While these
> devices ship an EFI capable bootloader, it has no understanding of
> devicetree, requiring distros (or more often, users) to handle
> devicetree selection and applying necessary fixups.
>
> Additionally, the EFI implementation on these devices is often very far
> from being systemready compliant, with a variety of bugs like broken
> keyboards, crashes in OS loaders like systemd-boot, and other small
> idiosyncrocies.
>
> As a result, simply running U-Boot as an EFI app isn't a suitable
> solution.
>
> [1]: 20241124-b4-modernise-smem-v1-0-b7852c11b67c at linaro.org
>
> ---
> Caleb Connolly (10):
> cmd: efi: avoid unitialized read
> efi: stub: support running U-Boot as an EFI payload on ARM64
> efi: move efi_info_get() to a new header file
> efi: stub: add helpers to populate memory map and framebuffer
> efi: stub: add additional types of memory
> efi: stub: log EFI memory banks
> efi: stub: add known memory to U-Boot's EFI memory map
> mach-snapdragon: support booting with EFISTUB
> common/board_f: init malloc earlier
> configs: add x1e_defconfig
>
> Neil Armstrong (4):
> clk: qcom: Add X1E80100 clock driver
> qcom_defconfig: enable X1E80100 clock driver
> pinctrl: qcom: Add X1E80100 pinctrl driver
> qcom_defconfig: enable X1E80100 pinctrl driver
>
> Makefile | 15 +-
> arch/arm/cpu/armv8/config.mk | 11 +
> arch/arm/include/asm/global_data.h | 3 +
> arch/arm/lib/Makefile | 2 +
> arch/arm/mach-snapdragon/board.c | 15 ++
> arch/arm/mach-snapdragon/dram.c | 15 +-
> arch/arm/mach-snapdragon/qcom-priv.h | 2 +
> arch/x86/cpu/efi/payload.c | 32 +--
> board/qualcomm/efistub.env | 11 +
> cmd/efi.c | 3 +-
> common/board_f.c | 2 +-
> configs/qcom_defconfig | 2 +
> configs/x1e_defconfig | 17 ++
> drivers/clk/qcom/Kconfig | 8 +
> drivers/clk/qcom/Makefile | 1 +
> drivers/clk/qcom/clock-x1e80100.c | 348 ++++++++++++++++++++++++++++++++
> drivers/pinctrl/qcom/Kconfig | 7 +
> drivers/pinctrl/qcom/Makefile | 1 +
> drivers/pinctrl/qcom/pinctrl-x1e80100.c | 100 +++++++++
> drivers/video/efi.c | 1 +
> include/efi.h | 27 +--
> include/efi_stub.h | 67 ++++++
> lib/efi/Kconfig | 9 +-
> lib/efi/Makefile | 28 ++-
> lib/efi/efi_app.c | 1 +
> lib/efi/efi_info.c | 165 +++++++++++++++
> lib/efi/efi_stub_arm64.c | 237 ++++++++++++++++++++++
> lib/efi/{efi_stub.c => efi_stub_x86.c} | 1 +
> lib/efi_loader/efi_memory.c | 5 +
> lib/of_live.c | 9 +
> 30 files changed, 1072 insertions(+), 73 deletions(-)
> ---
> base-commit: 1e327ec30e48902fff65fb58337b8f80cc526f08
>
I am pulling this in as I need to get the app going on ARM and this is
a better starting point.
For the series, applied to sjg/master, thanks!
Regards,
SImon
More information about the U-Boot
mailing list