Hi.
We have a custom board with an iMX8MP processor. Sometimes when doing a warm reset the board fails to boot. This can either be a reset at the PMIC or using the Linux reboot command (watchdog reset).
When it fails to boot, u-boot SPL (inside imx-boot) reports:
Trying to boot from BOOTROM
Boot Stage: Recovery boot
image offset 0x8000, pagesize 0x200, ivt offset 0x0
spl_romapi_raw_seekable_read Failure when load 0x63000, size 0xc3800
SPL: failed to boot from all boot devices
Note "Boot Stage: Recovery boot". For a normal/working boot it says "Primary boot"
Because the message is printed by u-boot SPL, the ROM has already successfully loaded the imx-boot image from the primary boot device (SD). Looking at the code (arch/arm/mach-imx/spl_imx_romapi.c), it is attempting to ask the ROM to load the next stage and the ROM is not returning "success". I have verified that the boot device, offset and size are the same in the working and non-working cases.
Also, with additional debugging, I can see that one read requests made to the ROM works before the one that fails:
spl_romapi_raw_seekable_read 0x60000, size 0x3000
spl_romapi_raw_seekable_read ROM returned f0
spl_romapi_raw_seekable_read 0x63000, size 0xc3800
spl_romapi_raw_seekable_read ROM returned 2
What is recovery boot and what causes the device to do enter that stage?
Where can I find information on the ROM interface being used by the u-boot code?
Thanks,
Steve