[PATCH v2 00/10] efi: Expose loaded image properties via info struct
Ard Biesheuvel
ardb+git at google.com
Tue Nov 10 04:17:32 PST 2026
From: Ard Biesheuvel <ardb at kernel.org>
Clean up the arm64 build script and linker hacks that zboot uses to
obtain properties of the loaded image (which it cannot access directly
via a relative reference like the ordinary EFI stub).
Instead, define a generic struct efi_image_info, and expose its offset
in the loaded image in a similar manner, but without relying on explicit
linker script exports.
Populate the struct with section markers that all architecture use for
loading the kernel image at boot, so that all the linker exports can be
dropped for them.
Changes since v1:
- drop arm64 image header changes
- move efi_image_info out of __efistub_ scope so it can access vmlinux
symbols directly
- implement in a generic manner for all architectures that support zboot
- address Sashiko comments
Cc: Jason Gunthorpe <jgg at nvidia.com>
Cc: Paul Walmsley <pjw at kernel.org>
Cc: Palmer Dabbelt <palmer at dabbelt.com>
Cc: Albert Ou <aou at eecs.berkeley.edu>
Cc: Huacai Chen <chenhuacai at kernel.org>
Cc: loongarch at lists.linux.dev
Cc: linux-riscv at lists.infradead.org
Link: https://lore.kernel.org/all/0-v2-989a18390eb1+486-arm64_drtm_jgg@nvidia.com/
Ard Biesheuvel (10):
efi/zboot: arm64: Add missing barrier after cache maintenance
efi/riscv: Rename __init_text_end to __inittext_end like other archs
efi/libstub: Avoid _end section marker in library code
efi/libstub: Capture loaded image information in struct efi_image_info
efi/libstub: arm64: Use struct efi_image_info to access image
properties
efi/libstub: loongarch: Use struct efi_image_info to access image
properties
efi/libstub: riscv: Use struct efi_image_info to access image
properties
efi/libstub: Make efi_remap_image() return efi_status_t
efi/zboot: Disentangle efi_remap_image() from efi_cache_sync_image()
efi/libstub: arm64: Drop zboot code_size hack
arch/arm64/boot/Makefile | 3 --
arch/arm64/kernel/efi-header.S | 2 +
arch/arm64/kernel/image-vars.h | 10 ----
arch/loongarch/kernel/head.S | 1 +
arch/loongarch/kernel/image-vars.h | 1 -
arch/riscv/include/asm/sections.h | 2 +-
arch/riscv/kernel/head.S | 1 +
arch/riscv/kernel/image-vars.h | 5 --
arch/riscv/kernel/vmlinux.lds.S | 4 +-
drivers/firmware/efi/libstub/Makefile | 1 +
drivers/firmware/efi/libstub/Makefile.zboot | 11 ++++-
drivers/firmware/efi/libstub/arm32-stub.c | 3 ++
drivers/firmware/efi/libstub/arm64-stub.c | 20 ++++----
drivers/firmware/efi/libstub/arm64.c | 8 ++--
drivers/firmware/efi/libstub/efi-stub-entry.c | 10 +++-
drivers/firmware/efi/libstub/efi-stub-helper.c | 15 ++++--
drivers/firmware/efi/libstub/efi-stub.c | 3 +-
drivers/firmware/efi/libstub/efistub.h | 48 ++++++++++++++++++--
drivers/firmware/efi/libstub/image_info.S | 12 +++++
drivers/firmware/efi/libstub/kaslr.c | 2 +-
drivers/firmware/efi/libstub/loongarch-stub.c | 4 +-
drivers/firmware/efi/libstub/riscv-stub.c | 14 +++---
drivers/firmware/efi/libstub/zboot-decompress-gzip.c | 2 -
drivers/firmware/efi/libstub/zboot-decompress-zstd.c | 2 -
drivers/firmware/efi/libstub/zboot.c | 29 +++++++++++-
drivers/firmware/efi/libstub/zboot.lds | 6 +--
26 files changed, 150 insertions(+), 69 deletions(-)
create mode 100644 drivers/firmware/efi/libstub/image_info.S
base-commit: 6628e7d4c6b25c8d18f1345e3a20d21829aae7e4
--
2.56.0.542.g3ef89b7020-goog
More information about the linux-riscv
mailing list