Hi Bin, Simon, On 18 August 2015 at 15:47, Stoppa, Igor <igor.sto...@intel.com> wrote: > Hi, > I have verified that I can reproduce a working build of U-Boot as > x86-64bit EFI payload for Qemu: I can boot it, interact with various > filesystems of both real and emulated disks, etc. > > > Now I would like to build and boot it for a real board, still as EFI payload. > > The docs/README.efi file states: > >> U-Boot is packaged up and loaded in its entirety by EFI. Once >> started, U-Boot changes to 32-bit mode (currently) and takes over the >> machine. You can use devices, boot a kernel, etc. > > My test device is a a D4250WYK NUC with a 4th generation Core i5 > Haswell processor. > I tried booting it with an USB stick that I prepared and tested with qemu. > The build is based on the qemu-x86_defconfig, plus the EFI settings > needed for generating a 64 bit payload. > > On qemu I can reach the U-Boot shell and run commands, however on the > NUC it stops at > the message "U-Boot EFI Payload", which is printed by the stub.
I've added traces to my setup and somewhat narrowed down the place where it gets stuck. It happens much earlier than I thought: I was expecting it would get stuck during the handover from the stub to the real U-Boot, after the jump_to_uboot call, instead it never reaches that point. On the NUC I get a system hang at the first ret = boot->exit_boot_services(image, key); in efi_main. I traced it with some putc(). My assumption was that, even if the payload is configured for QEmu, rather than for the real board I am using, the loading should be successful anyway, because it relies on the EFI API. Is my assumption in correct? I noticed something (unrelated?) regarding exit_boot_services: There's a comment in the efi_stub.c file, stating: /* * Unfortunately it happens that we cannot exit boot services * the first time. But the second time it work. I don't know * why but this seems to be a repeatable problem. To get * around it, just try again. */ But, with Qemu, "exit_boot_services" always work at the first attempt: the execution never enters the braces containing that comment. -- thanks, igor _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot