Reset Timing of Boot Retry Count

I am curious about the control of the retry count in the bootloader used in the Orin environment, which is GitHub - NVIDIA/edk2-nvidia: NVIDIA EDK2 platform support.

As far as I can tell from reviewing the code, if the lower 4 BYTES of the Status register( Update and Redundancy — Jetson Linux Developer Guide documentation ), which are the magic number, are not overwritten with FACE, they are initialized; if they are overwritten with FACE, initialization does not occur, and the retry counter progresses with each boot. Is my understanding correct that this magic number in the Status register resets to 0x4EF1 when power is lost, meaning it is volatile?

If I am mistaken and the information of FACE is retained even after the power is turned OFF/ON, then if the power is turned off during the time between the UEFI retry countdown process and the retry reset by service, etc., the retry countdown will progress, and if this is repeated, will it lead to a retry over?

I look forward to your assistance.

Hi koichi.tanoiri,

Are you using the devkit or custom board for Orin NX?
What’s your Jetpack version in use?

You could configure the retry count during flash.

Hello Kevin,

Regarding the environment, it is set up with the Orin Nx mounted on the OrinNano sample board.
If there are any differences in specifications between the Orin Nano and Orin Nx, I would appreciate it if you could inform me about them.

I was aware that it’s possible to change the number of retries. I apologize if my poor English has caused any misunderstanding. My question was not about the issue of retry over, but rather I wanted to know the specifications to check whether retry over would occur depending on the nature of the work.

Best regards.

It seems you are using Orin NX module on the Orin Nano(p3768) devkit board.
It should be find with this combination, Orin NX and Orin Nano modules have the similar design.
What’s your Jetpack version in use?

You could refer to the following verification from us for the fail-over mechanism.
Rootfs A/B redundancy fail-over mechanism in Jetpack5.1 - Jetson & Embedded Systems / Jetson Xavier NX - NVIDIA Developer Forums

I am currently using R35.3.1(Jetpack5.1.1) for verification. However, ultimately I plan to use R36.2(Jetpack 6.0), so if there are any differences, I would appreciate a response based on the specifications for R36.2.

Thank you for the information. However, unless I’m mistaken, I believe this information mainly describes the process of how the system fails over when the rootfs is truly corrupted.
What I am more concerned about are the finer details, specifically regarding the countdown for retries and the timing for resetting the count. In particular, I am curious if there could be cases of retry overflows due to the user’s method of operation, even when the rootfs is not corrupted. (For example, as mentioned earlier, if the count reset only occurs upon successful completion of the startup process, would turning the power OFF/ON during the interval from countdown to startup advance the count?)

Thank you for your assistance

You could run the following command to check the retry count, which is derived from scratch register.

$ nvbootctrl -t rootfs dump-slots-info

Let me share the logic for retry count as following:

  1. boot up to L4TLauncher → initialize the retry_count
    a. if cold boot: retry_count=MAX
    b. if warm boot: retry_count=value in Scratch register
  2. retry_count-- (in Scratch register) in L4TLauncher
  3. boot to kernel successfully, the background service<nv-l4t-bootloader-config.service> clear the retry_count value in Scratch register

If you perform power off during boot up, it is the case as cold boot so that it will configure the retry_count to MAX.

1 Like

Thank you for your response.
I understand now that the count is reset in a cold boot, including when the power is turned off.
Your answer has resolved my question.

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