BISECTED f3866909e350 ("distro_bootcmd: call EFI bootmgr even without having /EFI/boot")

Heinrich Schuchardt xypron.glpk at gmx.de
Sun Jun 6 17:20:46 CEST 2021


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?
>


More information about the U-Boot mailing list