[U-Boot] [PATCH 00/16] efi: Enable basic sandbox support for EFI loader
Heinrich Schuchardt
xypron.glpk at gmx.de
Mon Sep 18 03:48:03 UTC 2017
On 09/18/2017 12:59 AM, Simon Glass wrote:
> A limitation of the EFI loader at present is that it does not build with
> sandbox. This makes it hard to write tests, since sandbox is used for most
> testing in U-Boot.
>
> This series enables the EFI loader feature. It allows sandbox to build and
> run a trivial function which calls the EFI API to output a message.
>
> Much work remains but this should serve as a basis for adding tests more
> easily for EFI loader.
>
> This series sits on top of Heinrich's recent EFI test series. It is
> available at u-boot-dm/efi-working
>
>
> Simon Glass (16):
> efi: Update efi_smbios_register() to return error code
> efi: Move the init check inside efi_init_obj_list()
> efi: Add error checking for efi_init_obj_list()
> efi: Add a TODO to efi_init_obj_list()
> efi: Correct header order in efi_memory
> efi: sandbox: Adjust memory setup for sandbox
> sandbox: smbios: Update to support sandbox
> sandbox: Add a setjmp() implementation
> efi: sandbox: Add required linker sections
> efi: sandbox: Add distroboot support
> Define board_quiesce_devices() in a shared location
> Add a comment for board_quiesce_devices()
> efi: sandbox: Add relocation constants
> efi: Add a comment about duplicated ELF constants
> efi: sandbox: Enable EFI loader builder for sandbox
> efi: sandbox: Add a simple 'bootefi test' command
>
> arch/arm/include/asm/u-boot-arm.h | 1 -
> arch/sandbox/cpu/cpu.c | 13 ++++++++++
> arch/sandbox/cpu/os.c | 17 ++++++++++++
> arch/sandbox/cpu/u-boot.lds | 29 +++++++++++++++++++++
> arch/sandbox/include/asm/setjmp.h | 21 +++++++++++++++
> arch/sandbox/lib/Makefile | 2 +-
> arch/sandbox/lib/sections.c | 12 +++++++++
> arch/x86/include/asm/u-boot-x86.h | 1 -
> arch/x86/lib/bootm.c | 4 ---
> cmd/bootefi.c | 54 ++++++++++++++++++++++++++++++++++-----
> common/bootm.c | 4 +++
> configs/sandbox_defconfig | 1 +
> include/bootm.h | 8 ++++++
> include/config_distro_bootcmd.h | 2 +-
> include/efi_loader.h | 13 ++++++++--
> include/os.h | 21 +++++++++++++++
> lib/efi_loader/Kconfig | 12 ++++++++-
> lib/efi_loader/Makefile | 1 +
> lib/efi_loader/efi_boottime.c | 4 +++
> lib/efi_loader/efi_memory.c | 33 +++++++++++++-----------
> lib/efi_loader/efi_runtime.c | 7 +++++
> lib/efi_loader/efi_smbios.c | 6 +++--
> lib/efi_loader/efi_test.c | 17 ++++++++++++
> lib/smbios.c | 38 ++++++++++++++++++++-------
> 24 files changed, 277 insertions(+), 44 deletions(-)
> create mode 100644 arch/sandbox/include/asm/setjmp.h
> create mode 100644 arch/sandbox/lib/sections.c
> create mode 100644 lib/efi_loader/efi_test.c
>
Thanks for enabling efi_loader on sandbox. That will make many things
easier.
Unfortunately
efi_status_t EFIAPI efi_selftest(efi_handle_t image_handle,
struct efi_system_table *systab)
{
...
boottime = systable->boottime;
...
ret = boottime->allocate_pool(EFI_BOOT_SERVICES_DATA, map_size,
(void **)&memory_map);
leads to a segmentation fault:
=> bootefi selftest
Testing EFI API implementation
Number of tests to execute: 3
<snip>
Setting up 'ExitBootServices'
Setting up 'ExitBootServices' succeeded
Segmentation fault
user at workstation:~/workspace/u-boot-odroid-c2/denx$
The problem does not exist with qemu-x86_defconfig without your patches.
qemu-x86_defconfig cannot be built with you patches:
UPD include/generated/asm-offsets.h
sh: echo: I/O error
Kbuild:47: recipe for target 'include/generated/generic-asm-offsets.h'
failed
make[1]: *** [include/generated/generic-asm-offsets.h] Error 1
make[1]: *** Waiting for unfinished jobs....
Makefile:1332: recipe for target 'prepare0' failed
make: *** [prepare0] Error 2
Best regards
Heinrich
More information about the U-Boot
mailing list