
On 6/6/21 4:37 PM, Matwey V. Kornilov wrote:
Hi,
I've found that
f3866909e350 ("distro_bootcmd: call EFI bootmgr even without having /EFI/boot")
breaks running EFI application from USB device on BeagleBone Black (am335x) device.
With this patch I see the following:
Booting /efi\boot\bootarm.efi Welcome to GRUB!
data abort pc : [<9ce0b6d0>] lr : [<9ffab7c7>] reloc pc : [<7d69d6d0>] lr : [<8083d7c7>] sp : 9df44e28 ip : 9ffdfe90 fp : 00000003 r10: 9ffe3300 r9 : 00000000 r8 : 9df6fe88 r7 : 00000000 r6 : 9ce5da08 r5 : 9ce571f8 r4 : 9ce2c040 r3 : 00000000 r2 : 00000001 r1 : 9ce56598 r0 : 00000000 Flags: NzCv IRQs off FIQs on Mode SVC_32 Code: e3500000 0a000015 e590000c eb00f96e (e5d03000) UEFI image [0x9ce46000:0x9cf28fff] '/efi\boot\bootarm.efi' Resetting CPU ...
Hello Matwey,
thank you for reporting the issue.
$ echo 'Code: e3500000 0a000015 e590000c eb00f96e (e5d03000)' | CROSS_COMPILE=arm-linux-gnueabihf- ARCH=arm scripts/decodecode
Code: e3500000 0a000015 e590000c eb00f96e (e5d03000) All code ======== 0: e3500000 cmp r0, #0 4: 0a000015 beq 0x60 8: e590000c ldr r0, [r0, #12] c: eb00f96e bl 0x3e5cc 10:* e5d03000 ldrb r3, [r0] <-- trapping instruction
Code starting with the faulting instruction =========================================== 0: e5d03000 ldrb r3, [r0]
Looking at the disassembly above we see that reading memory location NULL fails.
We need to find out where the exception occurs. The code position is neither in bootarm.efi nor in U-Boot (9ce0b6d0 is lower than the load position of bootarm.efi, so it is below the relocated U-Boot code).
Please, add the following line at the start of grub.cfg to get more output from GRUB:
debug=all
When building U-Boot, please, add
#define DEBUG 1
in lib/efi_loader/efi_disk.c and lib/efi_loader_file.c a line before #include <common.h>.
Best regards
Heinrich
while without the patch, GRUB works as usual. Could you please help me to figure out what is going wrong here?