UEFI optimization question

Hi, I’ve been working on reducing Xavier NX with R35.3.1 boot time and found that it took long time during UEFI.
Then I use uefi DEBUG version to show how it works, but I can not figure out which part can be removed.
uefidebuglog.txt (75.9 KB)
And it seems UEFI loaded a lot of drivers, if I want to remove such as USB driver loaded in UEFI, how can I change the configuration file in UEFI source file

Hi 854053437,

Are you using the devkit or custom board for Xavier NX?

Please refer to the following thread to remove the modules in configuration files.
Jetson AGX Orin Long Boot Time - #25 by KevinFFF

I‘m using a custom board for Xavier NX
I tried remove Networking stack in NVIDIA.common.dsc,inc and NVIDIA.fvmain.fdf.inc, but error happend in UEFI build as follows:

INFO - ------------------------------------------------
INFO - --------------Cmd Output Starting---------------
INFO - ------------------------------------------------
INFO - Build environment: Linux-5.4.0-150-generic-x86_64-with-glibc2.27
INFO - Build start time: 10:44:05, Nov.09 2023
INFO - WORKSPACE        = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1
INFO - PACKAGES_PATH    = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/BaseTools/:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-platforms/:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia/:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia-non-osi/:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-non-osi:/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-platforms/Features/Intel/OutOfBandManagement
INFO - EDK_TOOLS_PATH   = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/BaseTools
INFO - EDK_TOOLS_BIN    = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/BaseTools/Source/C/bin
INFO - CONF_PATH        = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/Conf/Jetson/DEBUG
INFO - PYTHON_COMMAND   = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/venv/bin/python3
INFO - Processing meta-data .
INFO - Architecture(s)  = AARCH64
INFO - Build target     = DEBUG
INFO - Toolchain        = GCC5
INFO - Active Platform          = /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia/Platform/NVIDIA/Jetson/Jetson.dsc
INFO - ..
INFO - build.py...
INFO - /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia/Platform/NVIDIA/Jetson/Jetson.dsc(...): error 4000: Instance of library class [NetLib] is not found
INFO -  in [/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/ShellPkg/Library/UefiShellNetwork2CommandsLib/UefiShellNetwork2CommandsLib.inf] [AARCH64]
INFO -  consumed by module [/home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2/ShellPkg/Application/Shell/Shell.inf]
INFO - - Failed -
INFO - Build end time: 10:44:07, Nov.09 2023
INFO - Build total time: 00:00:02
INFO - ------------------------------------------------
INFO - --------------Cmd Output Finished---------------
INFO - --------- Running Time (mm:ss): 00:02 ----------
INFO - ----------- Return Code: 0x00000001 ------------
INFO - ------------------------------------------------
ERROR - Compiler #4000 from /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia/Platform/NVIDIA/Jetson/Jetson.dsc(...):   Instance of library class [NetLib] is not found
CRITICAL - Build failed
PROGRESS - End time: 2023-11-09 10:44:07.736876  Total time Elapsed: 0:00:02
SECTION - Log file is located at: /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/Build/BUILDLOG_Jetson.txt
SECTION - Summary
ERROR - Error

I found that I mistakely remove Networking Requirements part causes build error and this is not a question anymore

By the way, I noticed that r35.3.1-updates can reduce boot time, and I met build error after I clone updates work space as picture shows

Do you know how to fix it?

Hi, Kevin. I followed your suggestion to modify UEFI and remove Networking support. It did reduce some boot time.
And I want to remove more things like USB support, but it always come to build failed such as

Module /home/csp/nvidia_source/uefi_lxh/nvidia-uefi-r35.3.1/edk2-nvidia/Silicon/NVIDIA/Drivers/EFuseDxe/EFuseDxe.inf NOT found in DSC file; Is it really a binary module?

when I removed usb support line in NVIDIA.common.dsc.inc、NVIDIA.fvmain.fdf.inc、Jetson.dsc.inc、Jetson.fdf.inc
did I miss some thing?
Thanks for your help

I found the reason that why build r3531-updates failed, the build option -mno-outline-atomics requires GCC 10.x and my gcc tool version is gcc-bootlin-9.3.0-aarch64-buildroot-linux-gnu
Is there any way to avoid this problem

Yes, there’re some fixes in this update branch improve the boot time.
You could also update to R35.4.1 and the fixes should be included.

Could you build the UEFI binary when you don’t have any modification in source?

Are you using Ubuntu 18.04 or 20.04 as your host PC?

Thanks, I’ll try it

Yes, I have already build the UEFI binary without modification and with removing networking stack.
But removing the USB support part it will failed when build
My host PC is Ubuntu18.04

I would suggest just removing other parts in UEFI.

You could remove the 5s autoboot time in UEFI to reduce boot time.

Thanks, I’ve reduced some time in UEFI included 5s autoboot time,

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