On 12/14/18 9:15 PM, Heinrich Schuchardt wrote: > On 12/14/18 3:58 PM, Dominik Adamski wrote: >> 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 >> >> > > Hello Dominik, > > the message > efi_runtime_relocate: Relocation at 9ff57a20 is out of range (20081092) > looks like a runtime function trying to call a non-runtime function. > > Actual addresses depend on compiler versions. > > Please, supply the following files to Alex and me for further analysis: > > .config > u-boot.map > u-boot > lib/crc32.o > lib/efi_loader/efi_runtime.o > > which match the U-Boot version you use together with the matching error > output. Please, also provide the output of the U-Boot command line tool > bdinfo. > > Do I understand you right in that the code you compiled is > commit f31239acff61f7def88a06eef1f091fce74ecd61 with no further patches > applied and the .config file is generated with am335x_evm_defconfig? > > Best regards > > Heinrich >
I tried booting an Asus Tinker Board via grub-efi. At least on Debian some GRUB patches have broken EFI booting, cf: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=916695 Best regards Heinrich _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot