[U-Boot] [PATCH 00/16] efi: Enable basic sandbox support for EFI loader
Rob Clark
robdclark at gmail.com
Mon Sep 18 13:18:46 UTC 2017
On Sun, Sep 17, 2017 at 11:48 PM, Heinrich Schuchardt
<xypron.glpk at gmx.de> wrote:
> 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:
I'm seeing something similar, because:
(gdb) print gd->bd->bi_dram[0]
$2 = {start = 0, size = 134217728}
u-boot expects 1:1 phys:virt mapping, so that probably won't work.
> => 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.
fwiw, qemu-x86 still works for me (I can still load Shell.efi) with
these patches..
BR,
-R
> 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