On 16 March 2015 at 07:35, Koen Kooi koen.kooi@linaro.org wrote:
On 15 March 2015 at 13:09, Leif Lindholm leif.lindholm@linaro.org wrote:
On Sun, Mar 15, 2015 at 11:16:04AM +0100, Koen Kooi wrote:
Hi,
I was reading https://www.kernel.org/doc/Documentation/arm/uefi.txt and it looks like I should have everything needed to get EFI stuff in linux, but instead I get:
root@hikey:~# dmesg | grep -i efi [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.079367] EFI services will not be available.
So, most likely the kernel has been invoked by the world's most tedious and least useful U-Boot emulator, also known as the "built-in Linux loader".
I am unfortunately completely unfamiliar with the HiKey UEFI port.
It would have been useful to get the UEFI team involved in the HiKey work somewhere along the line, to ensure mix-ups like this did not happen.
[snip kernel config]
This is an UEFI I built myself using https://github.com/96boards/edk2/commits/hikey with a change to use /dev/sda1 as root in bootargs, nothing more.
What is needed to get linux to notice UEFI? It looks like all the bits are in place (bootloader, kernelstub, kernel config).
Booting the kernel as a stub.
How is the kernel actually invoked in this HiKey build-UEFI-but-don't-use-it firmware?
I'm still unfamiliar with EDK2, so I'm going to take a stab at answering your question without knowning what I'm doing :)
HisiPkg/HiKeyPkg/HiKey.dsc sets:
gArmPlatformTokenSpaceGuid.PcdDefaultBootType|2
Which seems to imply it's not loaded in EFI mode:
# PcdDefaultBootType define the type of the binary pointed by
PcdDefaultBootDevicePath: \r # - 0 = an EFI application\r # - 1 = a Linux kernel with ATAG support\r # - 2 = a Linux kernel with FDT support\r
Would entering the shell and doing
./Image dtb=hi6220-hikey.dtb console=ttyAMA0,115200
earlycon=pl011,0xf8015000 root=/dev/sda1 r0 quiet
Should launch it in uefi mode, right?
Thanks to the hint from Riku:
root@hikey:~# dmesg | grep -i efi
[ 0.000000] efi: Getting EFI parameters from FDT:
[ 0.000000] EFI v2.40 by Linaro HiKey EFI Mar 10 2015 11:06:19
[ 0.000000] efi:
[ 0.079378] Remapping and enabling EFI services.
[ 0.084093] EFI remap 0x000000003fc50000 => 0000000040000000
[ 0.090067] EFI remap 0x000000003fc91000 => 0000000040051000
[ 0.096026] EFI remap 0x00000000f8003000 => 00000000400b3000
[ 3.916651] rtc-efi rtc-efi: can't read time
[ 3.925562] rtc-efi rtc-efi: rtc core: registered rtc-efi as rtc0
[ 4.380505] EFI Variables Facility v0.08 2004-May-17
[ 4.683551] rtc-efi rtc-efi: can't read time
[ 4.704381] rtc-efi rtc-efi: hctosys: unable to read the hardware clock
The trick is to boot using the bootmenu and have the shell (auto)execute startup.nsh. A bit annoying to need to use serial every (re)boot, but that should be fixed in the hikey uefi port: https://github.com/96boards/bugs/issues/27