How to reboot to forced-recovery from UEFI shell?

Hello

I am working on a remotely-located xavier devkit and have just upgraded the platform to use the new UEFI bootloader.

A change I was testing is causing a kernel panic on boot, resulting in infinite loop. I have a serial port attached and have been trying to figure out how to reboot the jetson in forced recovery mode from here.

I tried setting the value of L4TDefaultBootMode to 0x3 by performing the below steps based on the documentation here: VariableList · NVIDIA/edk2-nvidia Wiki (github.com) but it is not behaving as I had expected it to.

I eventually got someone to physically reset the devkit to recovery mode without issue, but it would be very helpful to do this without the need for physical intervention. Is there a way to force recovery mode from UEFI shell?

Shell> dmpstore -all L4TDefaultBootMode
Variable NV+RT+BS '781E084C-A330-417C-B678-38E696380CB9:L4TDefaultBootMode' Data
Size = 0x04
  00000000: FF 00 00 00  
  
Shell> setvar -guid 781E084C-A330-417C-B678-38E696380CB9 L4TDefaultBootMode =0x3

Shell> setvar -guid 781E084C-A330-417C-B678-38E696380CB9 L4TDefaultBootMode
781E084C-A330-417C-B678-38E696380CB9 - L4TDefaultBootMode - 0001 Bytes
03

Shell> reset

...

Jetson UEFI firmware (version 1.0-d7fb19b built on 2022-08-10T20:18:13-07:00)
Press ESCAPE for boot options **  WARNING: Test Key is used.  **
......
      L4TLauncher: Attempting Recovery Boot
Header not seen at either offset 0 or offset 0x1000
Failed to boot recovery:0 partition

Sorry for the late response, is this still an issue to support? Thanks

Hello,

Yes, I am still looking for a solution for this. I have tried a few more things:

I dug around in the EDK source see now that setting the L4TDefaultBootMode to 0x3 is trying to boot a recovery kernel partition that is not part of the yocto meta-tegra linux images.

Based on how the “forced-recovery” reboot argument is handled in the L4T code at drivers/soc/tegra/pmc.c I tried writing to TEGRA_PMC_SCRATCH0 register from uefi but this resulted in an exception and the bootloader resetting.

From device tree:
PMC base address = 0xc360000

offset from pmc.c:
[TEGRA_PMC_SCRATCH0] = 0x2000,

Exception trying to read:

Shell> mm 0xC362000 -w 4 -n
MEM

Synchronous Exception at 0x0000000857C88874

I created a related issue on the edk2-nvidia github: failing boot retry count requires hard flash · Issue #22 · NVIDIA/edk2-nvidia (github.com) in which I attempt to either reset the reboot retry count or enter forced recovery mode from the UEFI shell but have not been able to find a way to.

Any assistance greatly appreciated.

We’re check with our internal team to see if can provide suggestions.

Hi,

Currently there is no support for this.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.