Hardware: Jetson Orin,
JetPack Version: JetPack 6.2,
Display Interface: HDMI 1080x1920
Issue Description
Our requirement is to display a custom logo at 1080x1920 portrait resolution via HDMI within 1 second after power-on.
Currently, the UEFI boot time alone (from entry to HDMI logo display) is approximately 8.9 seconds on DEBUG build. Even after significant driver/feature pruning, the boot time cannot be reduced to under 3 seconds, let alone the 1-second target.
Key Findings from Official Documentation
1. UEFI Boot Logo Resolution Support
According to NVIDIA official documentation and forum threads, the UEFI boot logo supports the following resolutions :
-
640x480
-
1280x720
-
1920x1080
1080x1920 (portrait mode) is NOT listed as a supported resolution for UEFI boot logo display. This suggests that the current UEFI GOP (Graphics Output Protocol) driver may not support portrait orientation initialization at boot time.
2. Boot Time Breakdown (from internal measurement)
| Component | Time Consumed | Percentage |
|---|---|---|
| nvgop-chips-platform GOP initialization | ~2916ms | 32.8% |
| MmCommunicationOptee session setup | ~371ms | 4.2% |
| Other UEFI components | ~5613ms | 63% |
| Total UEFI boot time | ~8900ms | 100% |
The GOP initialization alone exceeds the 1-second target and cannot be optimized as it is a pre-compiled closed-source binary (nvgop-chips-platform.efi).
Technical Barriers
Barrier 1: Portrait Resolution (1080x1920) Not Supported
From the UEFI boot logo documentation, only standard landscape resolutions (640x480, 1280x720, 1920x1080) are supported. There is no mention of portrait mode (1080x1920) support .
Question for NVIDIA: Does the UEFI GOP driver support 1080x1920 portrait mode initialization? If yes, what configuration is required?
Barrier 2: GOP Initialization Cannot Be Accelerated
The nvgop-chips-platform.efi driver takes ~2916ms during ConnectController. This is a pre-compiled closed-source binary provided by NVIDIA that we cannot modify or optimize .
The GOP initialization process includes:
-
Display controller hardware initialization
-
HDCP handshake
-
HDMI link training
-
Framebuffer allocation
All these operations are handled internally by the closed-source driver and cannot be:
-
Shortened via external PCD or configuration parameters
-
Delayed until after logo display (logo display depends on GOP)
Barrier 3: 1-Second Target vs Current Baseline
Even if we eliminate all other boot time contributors, the GOP initialization alone (~2916ms) exceeds the 1-second requirement. Achieving <1s boot with logo display is mathematically impossible with the current GOP driver.
Specific Requests to NVIDIA
Based on the analysis above, we respectfully request NVIDIA’s support on the following:
Request 1: Portrait Mode Support
-
Please confirm whether 1080x1920 portrait resolution is supported for UEFI boot logo display.
-
If supported, please provide guidance on configuration.
-
If not supported, please consider adding portrait mode support in future UEFI releases.
Request 2: GOP Initialization Optimization
-
Provide an optimized version of
nvgop-chips-platform.efiwith significantly reduced initialization time (<500ms). -
Or implement phased GOP initialization:
-
Phase 1: Minimal display capability (just enough to show logo) within <500ms
-
Phase 2: Full display initialization in background after logo is shown
-
Request 3: Alternative Fast Boot Display Path
-
Is there an alternative method to show a custom logo on HDMI earlier than UEFI GOP?
-
Can the bootloader (MB2) or earlier stage initialize display output?
Additional Information
According to the optimization configuration in the official documentation, some key log outputs in MB1, MB2, UEFI, and rootfs have been disabled. The modification points are as follows:
-
diff --git a/Linux_for_Tegra/p3701.conf.common b/Linux_for_Tegra/p3701.conf.common index f8d526703..03fad1367 100644 --- a/Linux_for_Tegra/p3701.conf.common +++ b/Linux_for_Tegra/p3701.conf.common @@ -153,11 +153,11 @@ process_fuse_level() # Common values and/or defaults across P3701: -ODMDATA="gbe-uphy-config-22,hsstp-lane-map-3,nvhs-uphy-config-0,hsio-uphy-config-0,gbe0-enable-10g"; +ODMDATA="gbe-uphy-config-22,nvhs-uphy-config-0,hsio-uphy-config-0,gbe0-enable-10g,hsstp-lane-map-3"; CHIPID=0x23; ITS_FILE=; OVERLAY_DTB_FILE="L4TConfiguration.dtbo,tegra234-p3701-overlay.dtbo"; -CMDLINE_ADD="mminit_loglevel=4 console=ttyTCU0,115200 console=ttyAMA0,115200 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0" +CMDLINE_ADD="mminit_loglevel=4 firmware_class.path=/etc/firmware fbcon=map:0 nospectre_bhb video=efifb:off console=tty0 net.ifnames=0 quiet" target_board="generic"; ROOTFSSIZE=55GiB; ROOT_DEV="mmcblk0p1 ------------ internal eMMC. -
diff --git a/Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi b/Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi index 32ead8270..e81f40357 100644 --- a/Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi +++ b/Linux_for_Tegra/bootloader/tegra234-mb1-bct-misc-common.dtsi @@ -183,7 +183,7 @@ #ifdef DISABLE_UART_MB1_MB2 log_level = <0>; #else - log_level = <4>; + log_level = <0>; #endif uart8_usb_port_sel = <0>; usb2_nvjtag = <0>; -
# Decompile device tree binary (dtb) to device tree source (dts) dtc -O dts -o bootloader/generic/tegra234-bpmp-3701-0000-3737-0000.dts -I dtb bootloader/generic/tegra234-bpmp-3701-0000-3737-0000.dtb # Compile device tree source (dts) to device tree binary (dtb) dtc -O dtb -o bootloader/generic/tegra234-bpmp-3701-0000-3737-0000.dtb -I dts bootloader/generic/tegra234-bpmp-3701-0000-3737-0000.dtsboottime_serial_060400_log.txt (77.2 KB)
# Flash the QSPI firmware partition in eMMC individually" sudo ADDITIONAL_DTB_OVERLAY="BootOrderEmmc.dtbo" ./flash.sh -c bootloader/generic/cfg/flash_t234_qspi.xml --no-systemimg jetson-agx-orin-devkit internal