On 12/12/18 7:11 PM, Heinrich Schuchardt wrote:
On 12/12/18 3:02 PM, Dominik Adamski wrote:
Hello,
I think that I have found a bug in U-Boot UEFI implementation for
BeagleBone Black board.
I have tested U-Boot UEFI implementation for BeagleBone Black. I am able
to load Linux successfully via GRUB bootloader with U-Boot v2018.09-rc2
. U-Boot v2018.09-rc3 and above versions cause that the platform
restarts over and over again. It starts booting, then it loads GRUB and
when GRUB finishes its work an error occurs and the board restarts.
I have looked through U-Boot repository and I have found the commit,
which breaks booting. It's name is as follows: "efi_loader: update
runtime services table crc32" (commit ID:
a39f39cdd8be5cd3e7a8b696a463b621e3d827e0 ) . I have figured out, that
when I comment out function call:
efi_update_table_header_crc32(&efi_runtime_services.hdr); in function
efi_runtime_detach then I am able to launch Linux successfully.
My setup of U-Boot, GRUB and Linux was as follows:
https://github.com/DominikAdamski/Beaglebone_GRUB_Manual . For U-Boot
v2018.09 I get following log when booting:
U-Boot 2018.09 (Dec 11 2018 - 11:11:16 +0100)
CPU : AM335X-GP rev 2.1
Model: TI AM335x BeagleBone Black
DRAM: 512 MiB
NAND: 0 MiB
MMC: OMAP SD/MMC: 0, OMAP SD/MMC: 1
Loading Environment from FAT... *** Warning - bad CRC, using default
environment
No USB device found
<ethaddr> not set. Validating first E-fuse MAC
Net: eth0: ethernet@4a100000
Hit any key to stop autoboot: 2 ^H^H^H 1 ^H^H^H 0
switch to partitions #0, OK
mmc0 is current device
SD/MMC found on device 0
** Unable to read file boot.scr **
85 bytes read in 1 ms (83 KiB/s)
Loaded env from uEnv.txt
Importing environment from mmc0 ...
Running uenvcmd ...
403968 bytes read in 28 ms (13.8 MiB/s)
^[[18tScanning disks on usb...
Disk usb0 not ready
Disk usb1 not ready
Disk usb2 not ready
Disk usb3 not ready
Scanning disks on mmc...
MMC Device 2 not found
MMC Device 3 not found
Found 4 disks
WARNING: booting without device tree
## Starting EFI application at 82000000 ...
^[[?25h^[[0;30;47mWelcome to GRUB!
^M
^M^[[0;37;40m^[[0;37;40m^[[0;37;40mEFI stub: Booting Linux Kernel...^M
EFI stub: Using DTB from configuration table^M
EFI stub: Exiting boot services and installing virtual address map...^M
U-Boot EFI: Relocation at 9ff4a8a8 is out of range (2008214f)
data abort
pc : [<9ff4a7cc>] lr : [<9ff4a8b9>]
reloc pc : [<808007cc>] lr : [<808008b9>]
sp : 9df1ebac ip : 00000020 fp : 00000000
r10: 00001000 r9 : 9df29eb8 r8 : 00000028
r7 : 9ff4aa10 r6 : 9ff4aec4 r5 : 00000003 r4 : 9ff4aa70
r3 : 2002aac0 r2 : 00000050 r1 : 9ff4aa70 r0 : ffffffff
Flags: NzCv IRQs off FIQs on Mode SVC_32
Code: 61204621 f876f000 bd106120 b5f04b36 (b31c681c)
UEFI image [0x9ceb1000:0x9cf139ff] '/\grub.efi'
UEFI image [0x94728000:0x9510bfff]
Resetting CPU ...
resetting ...
Please let me know, if I should add more detailed logs.
Dominik Adamski
Hello Dominik,
you refer to an outdated release candidate v2018.09-rc2.
The following patch is missing in the release candidate:
commit 483dbab9f9318149e5ea97daacbfae320f53e35a
Author: Heinrich Schuchardt <xypron.g...@gmx.de>
Date: Sun Jul 29 09:49:03 2018 +0200
lib: crc32: mark function crc32() as __efi_runtime
It is contained in the v2018.09 release. Please, update your page
https://github.com/DominikAdamski/Beaglebone_GRUB_Manual accordingly.
The latest release is v2018.11. Release v2018.11 will require a recent
GRUB (later than patch d0c070179d4d). Or apply the following patch
http://git.denx.de/?p=u-boot.git;a=commit;h=f31239acff61f7def88a06eef1f091fce74ecd61
Revert "efi_loader: remove efi_exit_caches()"
Best regards
Heinrich
Hello Heinrich,
I am resending my mail, because I haven't noticed that I should answer below
your response. I am also adding some more information just to be sure, that
everything is clear.
I have build the newest GRUB from master branch and I have checked out
U-Boot with this patch:
http://git.denx.de/?p=u-boot.git;a=commit;h=f31239acff61f7def88a06eef1f091fce74ecd61
Revert "efi_loader: remove efi_exit_caches()"
and I still get an error while Linux booting :
EFI stub: Booting Linux Kernel...
EFI stub: Using DTB from configuration table
EFI stub: Exiting boot services and installing virtual address map...
efi_runtime_relocate: Relocation at 9ff57a20 is out of range (20081092)
data abort
pc : [<9ff57944>] lr : [<9ff57a31>]
reloc pc : [<80800944>] lr : [<80800a31>]
sp : 9df2b594 ip : 1f757000 fp : 00000000
r10: 00002000 r9 : 9df36eb8 r8 : 00000028
r7 : 9ff57bc8 r6 : 9ff5807c r5 : 00000003 r4 : 9ff57c28
r3 : 20027c78 r2 : 00000050 r1 : 9ff57c28 r0 : ffffffff
Flags: NzCv IRQs off FIQs on Mode SVC_32
Code: 46216120 f876f000 bd106120 4b36b5f0 (b31c681c)
UEFI image [0x9cebf000:0x9cf21bff] '/\grub.efi'
UEFI image [0x94732000:0x95115fff]
Resetting CPU ...
resetting ...
I can boot Linux only when I remove line:
efi_update_table_header_crc32(&efi_runtime_services.hdr); (file
lib/efi_loader/efi_runtime.c line: 344 ) .
In my manual I referred to version v2018.09-rc2 because it is the last tagged
version which works fine on BeagleBone with GRUB. v2018.09 version does not
cooperate with GRUB for BB. It restarts BB over and over again. The problem is
caused by this patch:
commit a39f39cdd8be5cd3e7a8b696a463b621e3d827e0 (HEAD)
Author: Heinrich Schuchardt <xypron.g...@gmx.de>
Date: Sun Jul 29 09:49:04 2018 +0200
efi_loader: update runtime services table crc32
This patch is a child of the patch, which you have mentioned:
commit 483dbab9f9318149e5ea97daacbfae320f53e35a
Author: Heinrich Schuchardt <xypron.g...@gmx.de>
Date: Sun Jul 29 09:49:03 2018 +0200
lib: crc32: mark function crc32() as __efi_runtime
The revert patch which you have mentioned:
http://git.denx.de/?p=u-boot.git;a=commit;h=f31239acff61f7def88a06eef1f091fce74ecd61
Revert "efi_loader: remove efi_exit_caches()" does not solve the problem. I can
boot Linux only if I revert this patch:
commit a39f39cdd8be5cd3e7a8b696a463b621e3d827e0 (HEAD)
Author: Heinrich Schuchardt <xypron.g...@gmx.de>
Date: Sun Jul 29 09:49:04 2018 +0200
efi_loader: update runtime services table crc32
When I revert the wrong patch ( a39f39cdd8be5cd3e7a8b696a463b621e3d827e0 ),
then I can boot Linux with U-Boot sources younger than v2018.09-rc2 .
Best regards,
Dominik
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot