ASSER in UEFI - FvbNorFlashStandaloneMm.c(937): ((BOOLEAN)(0==1))

Hi Nvidia team,

During our development process, we have encountered multiple instances of boot failures on different boards, where the system gets stuck at the UEFI stage. This issue cannot be resolved by power cycling; once it occurs, subsequent boots also hang at the same point. We consider this to be a critical and reproducible problem. We are using custom board with Jetson Linux 36.3.

I/TC: Reserved shared memory is disabled
I/TC: Dynamic shared memory is enabled
I/TC: Normal World virtualization support is disabled
I/TC: Asynchronous notifications are disabled
I/TC: WARNING: Test UEFI variable auth key is being used !
I/TC: WARNING: UEFI variable protection is not fully enabled !

ASSERT [FvbNorFlashStandaloneMm] /out/nvidia/optee.t234-uefi/StandaloneMmOptee_RELEASE/edk2-nvidia/Silicon/NVIDIA/Drivers/FvbNorFlashDxe/FvbNorFlashStandaloneMm.c(937): ((BOOLEAN)(0==1))

boot_log.txt (35.1 KB)
We have also searched the forums for related solutions. Following the methods described in one article(Assertion issue in UEFI during boot - Jetson & Embedded Systems / Jetson AGX Orin - NVIDIA Developer Forums), we applied the UEFI modifications addressing this issue and updated the UEFI accordingly. However, even after merging these changes, the problem still recurs.


Our steps:

1.Download the code of uefi-202409.1 version: edkrepo clone nvidia-uefi NVIDIA-Platforms uefi-202409.1

2.Merge the following modifications: R36.x: https://github.com/NVIDIA/edk2-nvidia/pull/113/commits

3.Compile the following files:

uefi_StandaloneMmOptee_RELEASE.bin

uefi_Jetson_RELEASE.bin

4.Compile tos img using the Driver Package (BSP) Sources of Jetson Linux 36.3 //refer to the steps in atf_and_optee_README.txt to build tos image https://developer.nvidia.com/embedded/jetson-linux-r363

5.replace the file:

tos.img → replace Linux_for_Tegra/bootloader/tos-optee_t234.img

uefi_Jetson_RELEASE.bin → replace Linux_for_Tegra/bootloader/uefi_jetson.bin uefi_StandaloneMmOptee_RELEASE.bin → replace Linux_for_Tegra/bootloader/standalonemm_optee_t234.bin

After applied the UEFI changes, the built date of UEFI changed from 2024-05-06 to 2025-08-01.
May I ask if we missed any steps that caused the changes to not take effect?

Thanks!

Hi hanyang369,

The fix is included in tos image (A_secure-os) rather than UEFI binary(A_cpu-bootloader).

Please share the detailed steps how did you build tos image and replace it.

You have to check op-tee build date/time instead.

Do you have any chance to update to Jetpack 6.2(r36.4.3) or 6.2.1(r36.4.4) which should include the fix?

Hi Nvidia team,

The steps to build image are:

1.Compile uefi_Jetson_RELEASE.bin and uefi_StandaloneMmOptee_RELEASE.bin:
cd /workspace/nvidia-uefi/edk2-nvidia/Platform/NVIDIA/Jetson
./build.sh
uefi_Jetson_RELEASE.bin

cd ../StandaloneMm
./build.sh
uefi_StandaloneMmOptee_RELEASE.bin


2.Download the tos compilation tool:
aarch64–glibc–stable-2022.08-1.tar.bz2
Jetson_Linux_R36.3.0_aarch64.tbz2
public_sources.tbz2


3.Set environment variables:
export CROSS_COMPILE_AARCH64_PATH=/workspace/aarch64–glibc–stable-2022.08-1
export CROSS_COMPILE_AARCH64=/workspace/aarch64–glibc–stable-2022.08-1/bin/aarch64-buildroot-linux-gnu-
export UEFI_STMM_PATH=/workspace/nvidia-uefi/images/uefi_StandaloneMmOptee_RELEASE.bin
export NV_TARGET_BOARD=t234


4.Compile tos img:
./optee_src_build.sh -p t234

dtc -I dts -O dtb -o ./optee/tegra234-optee.dtb ./optee/tegra234-optee.dts

./nv_public_src_build.sh

cp ../nv_tegra/tos-scripts/gen_tos_part_img.py .
./gen_tos_part_img.py 
   –monitor ./arm-trusted-firmware/t234-t234/tegra/t234/release/bl31.bin 
   –os ./optee/build/t234/core/tee-raw.bin 
   –dtb ./optee/tegra234-optee.dtb 
   –tostype optee 
   ./tos.img

op-tee build date/time is 2025-08-04 20:26:32

Your steps look good to me to apply the change.

Could you share the steps how do you reproduce the issue?

Do you have any chance to update to Jetpack 6.2(r36.4.3) or 6.2.1(r36.4.4) which should include the fix?

1.It occurs during normal startup. It was randomly generated and no pattern was found

2.It is currently impossible to upgrade to 36.4.4

tos_r36.3_patched.img (1.5 MB)

Could use above tos image and run the following commands to verify?

$ cd <Linux_for_Tegra>/
$ cp <tos_r36.3_patched.img> bootloader/tos-optee_t234.img
$ sudo ./flash.sh -c bootloader/generic/cfg/flash_t234_qspi.xml jetson-orin-nano-devkit internal

Please let me know if you will still hit assertion 937 issue after applying the change.

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