[U-Boot] [PATCH 00/16] efi: Enable basic sandbox support for EFI loader

Simon Glass sjg at chromium.org
Mon Sep 18 03:59:28 UTC 2017


Hi Heinrich,

On 17 September 2017 at 21:48, 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:
>
> => 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

Are you able to bisect this to the commit which causes the problem.
I've had a look through and cannot figure it out my inspection.
Otherwise I should be able to look at it on Tuesday.

Regards,
Simon


More information about the U-Boot mailing list