Releases: NVIDIA/edk2-nvidia
edk2-nvidia-202605.0
New Features
- Upstream upgrade: Upgrade to edk2-stable202508. Implementations added for new APIs (MetadataHandlerLib, MetadataObjLib, CmObjHelperLib); ArmMmuLib moved to UefiCpuPkg; UGA support removed; Tpm2DeviceTableLib added (required by AcpiTpm2Lib); UefiDevicePathLib no longer supports MM_STANDALONE — STMM uses UefiDevicePathLibBase instead.
- Redfish HTTP Boot: Add driver to support HTTP boot provisioning through Redfish BIOS attributes for automated system deployment.
- ACPI 6.6 migration: Update all EFI_ACPI_6_3_, EFI_ACPI_6_4_, and EFI_ACPI_6_5_* macro and type references to EFI_ACPI_6_6_* (mechanical rename — values are identical across ACPI 6.3 through 6.6).
- ImageInfoLib: Add new library for image information lookup; DefaultExceptionHandlerLib now depends on it.
- DisplayUpdateProgressLibText: Center and scale the progress bar with screen resolution; uses SetCursorPosition for precise placement below the boot logo.
- Android — TegraPlatformSpec: Build the TegraPlatformSpec UEFI variable from NCT board info and hardware fuses so Android FMP can identify the exact board variant.
- Android — networking: Drop UEFI in-firmware networking from the Android build to reduce firmware volume size.
- Android — NctLib: Populate NCT-stored MAC addresses to kernel-dtb so OS drivers can consume them.
- Android — platform identification: Select correct dtb/o image entry based on platform identification from NCT board info.
- AvbLib: Add AddRpmbInfoToDtb() to publish RPMB AVB content under /chosen/rpmb_dump for the Diag AVB2 RPMB test.
- Boot config: Add androidboot.in_OTA bootconfig parameter set when Bcb active slot is not yet bootsuccessful.
- Capsule — multi-image: Extend single-image minimal updates to support capsules with multiple images via PcdFmpMultiImageMinimalUpdate.
- Fastboot — flash capsule: Support
fastboot flash capsuleandfastboot stage/fastboot oem bootloader_updatefor low-level firmware updates via fastboot. - Fastboot — key combo: Support entering fastboot mode by pressing A+B on the connected USB device, useful when adb is unavailable.
- NctLib — dtb dump: Dump nct/tnspec info to dtb for android settings and diag tools to consume.
- SsdtPcieSupportLib: Implement AddHostBridgeDsmMethod() to add a DSM method from the template to the host bridge node.
Bug Fixes
- ACPI — FADT PWR_BUTTON: Publish FADT PWR_BUTTON flag via PCD on TH500 so the DSDT PNP0C0C power button is consistent with the FADT (resolves fwts acpi_pwrb).
- Capsule size: Increase general firmware capsule size limit (PcdMaxSizeNonPopulateCapsule) from 16 MiB to 64 MiB to accommodate multi-spec BUP capsules for platforms like Jetson Orin Nano.
- AvbLib — encrypted data: Add check for zero encrypted blocks to prevent loop counter underflow.
- Memory map — reserved carveouts: Install firmware-usable carveouts as reserved resource HOBs (not back into the system DRAM list) so DXE publishes them as reserved to the OS from the first memory map exposed; preserves WB mapping, retags boot-service HOBs, and moves PrePi to a normal DRAM stack.
- NvRngLib: Remove incorrect StMM references from docs and debug messages; the HW RNG path uses ATF TRNG via ArmTrngLib, not a driver in StMM.
- T268 — display driver: Disable display driver for t268 systems by checking DTB root node compatibility when t264-compatible display node is present.
- T268 — GPIO UPHY: Change t264 GPIO UPHY compatibility string from
tegra264totegra26*to support t268, which shares controller mappings but has different pin support in the OS. - ACPI headers: Replace direct includes of version-specific ACPI headers (Acpi64.h, Acpi65.h) with the top-level Acpi.h so ACPI 6.6 definitions are picked up consistently.
Documentation
- PreIsoInstaller: Update README_PreIsoInstaller.md to match current platform spec logic and document AGX Orin Super, Orin Nano Super, and NanoE8GB base/Super board names.
- Jetson Capsule Update: Update Jetson Capsule Update markdown document for multi-image minimal capsule updates.
Refactoring and Maintenance
- StandaloneMm — t24x: Remove NorFlashStandaloneMmBlob and UserAuthenticationMm drivers from the t24x STMM image to gain space after the OpenSSL 3.5.1 upgrade; SECURITY_UEFI_MENU_USER_AUTH disabled on t24x. (TH500 deprecated on this codeline.)
edk2-nvidia-202603.2 (r39.2)
No changes since edk2-nvidia-202603.1.
edk2-nvidia-202603.1
New Features
- L4TLauncher: Add capsule update support for ISO-based installation media. When the boot media is detected as ISO9660 and the ESP contains a valid
EFI\ISO_IDfile (a SHA-256 hash ofEFI\versioncontent concatenated with "L4T"), prompt the user to confirm the update; on confirm, apply the capsule to both slots, otherwise skip. - NvDisplayControllerDxe: Port T264 display-handoff work to T234. Add BPMP
MRQ_BWMGR_INTsupport to set the max EMC frequency duringEnableHwT234, and update Display Device Tree properties (nvidia,max-disp-clk-rate-khz,nvidia,max-hub-clk-rate-khz,nvidia,iso-bandwidth-kbps,nvidia,dram-floor-kbps) viaDisplayDeviceTreeUpdateMaxClockRates. - NvDisplayControllerDxe: Allow disabling of T234 display clocks by setting appropriate clock parents before disabling.
- ASpeed: Enable the ASpeed driver on t26x IGX.
Bug Fixes
- L4TLauncher: Fall back to a static stub of
gNVIDIAL4TLauncherSupportProtocolwhen running on older firmware (predatingL4TLauncherSupportDxe) so L4TLauncher continues in a restricted ISO install mode rather than exiting immediately. - L4TLauncher: Check
ISO_IDbefore probing ISO9660 in the support-protocol fallback path; ISO_ID validation is a cheap file/hash check whileIsIso9660BootMediaenumerates BlockIo handles and child controllers, so this avoids expensive media probing on normal non-ISO boots. - L4TPreIsoInstaller: Use the UEFI service-binding pattern (
gEfiHash2ServiceBindingProtocolGuid→CreateChild→HandleProtocol) to obtain the SHA-256 protocol instance. Fixes anEFI_HASH2_PROTOCOL not availablefailure on older firmware such as R35.5.x. - L4TPreIsoInstaller: Enhance ISO capsule version checks — warn if the current chain is older than 35.5.0 (which predates capsule layout changes), skip the capsule update if the ISO capsule version is older than the non-current chain (preventing rollback), and use the correct 8-bit mask when printing firmware version fields.
- t234: Fix BPMP ISO BW call failures by using decimal=1000 instead of binary=1024 in the bandwidth calculation for the 4.5 GB/s request, which was causing failures on Orin Nano SKU4. Guard the shutdown codepath so display registers are not accessed when display clocks were never enabled, and clear the controller
Privatepointer after start to prevent a double-Destroyon certain error paths. - t264: Support the new
tegra264-gpiocompatibility string, replacing the deprecatedtegra264-gpio-mainstring. - BootManager: Set
PcdFindLoadOptionIgnoreDescriptionto TRUE soEfiBootManagerFindLoadOptionignores the description field when comparing load options. Prevents unwanted re-ordering of boot options after OTA updates when upstream changes a boot entry's description text. - StandaloneMM: Set
PcdGptIsPerBootChainto TRUE in Standalone MM so GPT-related FwPartition protocols are created, supporting GPT updates during capsule updates on Jetson platforms. - BasicProfilerDxe: Write profiler data in
PROFILER_RECORDformat (string + timestamp) to match the Linux kernel structure.
Documentation
- L4TPreIsoInstaller: Add a design document describing the ISO-based firmware capsule update flow integrated into L4TLauncher.
edk2-nvidia-202506.4 (r38.5, IGX-SW 2.0)
New Features
- UfsControllerDxe: New
PcdUfsMaxBurstLengthPCD for per-platform UFS burst length configuration. T264 is set to a burst length of 64.
Bug Fixes
- EqosDeviceDxe: Enable de-assertion of power gates
- PcieControllerDxe: Fix T264 PCIe controller shutdown by changing ExitBootServices callback priority from TPL_NOTIFY to TPL_CALLBACK so client drivers (EHCI/XHCI) complete cleanup first; remove verbose debug prints and unnecessary 100ms post-PERST# delay
Refactoring and Maintenance
- T264: Enable Mgbe driver
edk2-nvidia-202504.3 (r36.5.1, IGX 1.1.3)
Bug Fixes
- DisplayDeviceTreeHelperLib: Avoid using DeviceTreeCheckNodeSingleCompatibility when searching for simple-framebuffer DT nodes. That helper requires nodes' status to be "okay", but simple-framebuffer nodes are intentionally disabled — UEFI enables them when display is up.
edk2-nvidia-202603.0
New Features
- AVB: Enable AVB UI to display a warning picture for 5 seconds based on AVB validation result before booting to kernel
- FwImage: Add
EraseBlockSizefield toFwPartitionandFwImageattributes, allowingFmpDeviceLibto use the actual flash erase block size to optimize capsule update writes - edk2-stable202505: Upgrade to edk2-stable202505
Performance Improvements
- Capsule Update: Skip partition writes when the target already contains the correct data, reducing capsule update time
Bug Fixes
- NIC Boot Filtering: Fix hex input handling for PCIe segment/bus/device/function values, which were incorrectly treated as decimal
- StandaloneMM (T234): Include header size in
MeasSizefor forward compatibility - TH500: Reduce HTTP buffer size for boards with limited network bandwidth
- PCIe: Fix integer overflow in bounds check when
Register + Lengthexceeds maximum value - XusbControllerDxe: Add NULL checks and bounds validation for USB descriptor array accesses
- EQOS / PHY: Add status checks for all PHY register read operations across multiple PHY drivers to prevent use of uninitialized data
- Display: Initialize variables and add ROM data validation in
NvDisplayController,NvDisplayControllerT234,NvDisplayControllerT264, andNonDiscoverablePciDeviceIo - Device Tree: Add NULL checks after memory allocation and initialize variables in
TegraDeviceTreeOverlayLibandDeviceTreeHelperLibParser - Security: Add explicit error checks after
ASSERTmacros inVarIntCheck,UserAuthenticationMm, andNvVarIntLibraryto ensure correctness in release builds - StandaloneMM: Add variable initialization and error checks in
StandaloneMmOpteeLib,StandaloneMmCoreEntryPoint, andPrePiMemoryfor release build correctness - Platform: Initialize variables in
DeviceDiscoveryLib,CommonFloorSweepingLib, andRegulatorDxe - Utility Libraries: Add defensive programming to
BaseDebugLibSerialPort,DebugLogScratchRegLib,QspiControllerLib,WildcardStringLib,ConfigurationManagerDataLib, andUfsControllerDxe
Deprecations
- T410: The T410 platform is deprecated as of this release and will no longer be tested.
Refactoring and Maintenance
- FdtLib: Migrate from deprecated
EmbeddedPkg/Library/FdtLibtoMdePkg/Library/BaseFdtLib(update headers, API calls, and byte conversion functions) - L4TLauncher: Replace
memcpywithCopyMem()andstrlenwithAsciiStrLenfollowing FdtLib migration
edk2-nvidia-202602.0
New Features
- GpioBootCompleteDxe: New driver that toggles the BOOT_COMPLETE GPIO pin on ReadyToBoot to signal boot completion to the BMC
- NvDisplayControllerDxe: T238 display controller support with chip-specific clock, reset, and GPIO configuration
- NvDisplayControllerDxe: Parse framebuffer carveout header when present, enabling sharing the framebuffer carveout with DCE DTB
- PlatformBootManagerLib: New KConfig option (
CONFIG_DISPLAY_BOOT_INFO) to suppress firmware version, date, and hotkey text during boot, showing only the logo - UfsControllerDxe: New
PcdUfsMaxBurstLengthPCD for per-platform UFS burst length configuration - RAS: New driver and FF-A GUID to send SMBIOS Type 17 memory device data to RASFW SP
- BMC: Factory reset option in UEFI menu using BMC IP and user-supplied credentials (credentials are never written to NVRAM)
- ACPI: OS power button support, allowing the OS to control power button actions via the
acpi-power-button-policydevice tree property - PCIe: Add support for new GB110 device ID
Bug Fixes
- L4TLauncher: Handle empty or missing
APPENDline inextlinux.conf - NvDisplayControllerDxe: Fix false
EFI_BUFFER_TOO_SMALLerror in GPIO pin lookup by switching to NULL-terminated array traversal - StandaloneMM: Always report
BUILD_NAME,BUILDID_STRING, andBUILD_DATE_TIMEon all STMM images - UEFI SCT: Correct return codes in
Query()andResponse()for UEFI Specification 2.10 compliance - Boot Configuration: Fix F9 (Reset to Defaults) not restoring defaults for efivarstore-backed settings (Quick Boot, New Device Hierarchy, IPMI Network Boot Mode, Redfish Host Interface, UEFI Shell, SOC Display Hand-Off Mode)
- CMOS: Allow CMOS clear command to execute when the SingleBoot flag is enabled
- UPHY: Remove unsupported UPHY settings to prevent invalid configurations
- XusbControllerDxe: Replace
memcpy/memsetwith EDK2BaseMemoryLibfunctions - Android: Default FMP certificates to DTB; set Simple/General/Datacenter builds to use EDK2 test certificate
- InterruptMap: Remove workaround for zero-address-cell interrupt-map, now fixed in DTB
Refactoring and Maintenance
- StandaloneMM: Distinguish between FFA and FFA-Legacy platforms; FFA-Legacy uses
StandalonePkgLegacy, newer FFA platforms useStandalonePkg
edk2-nvidia-202601.0
Release Notes
Features
-
Configurable TCU Mailbox Addresses
TCU mailbox addresses are now configurable. -
New
t238_androiddefconfig
Added for T238-specific early boot needs. -
OemPartition Buffer Allocation
Read/Write functions now allocate buffers for headers and data. -
Android Recovery via vendor_boot
Recovery loads from vendor_boot ramdisk (no separate partition). -
Android FMP Capsule Driver
Handles FMP variables, capsule callback, and capsule consumption. -
CPU Floorsweeping Uses DeviceTreeHelperLib
Core floorsweeping now usesDeviceTreeHelperLib. -
UEFI Variable Locking
NV UEFI variables locked outside UEFI menu. -
Memory Access UEFI App
New app for direct address read/write. -
MmCommunicateNullDxe for Android
Satisfies dependencies on non-MM platforms. -
FMP PKCS7 Certificate Options
Kconfig options for test, production, and DTB-based FMP PKCS7 certs.
Fixes
-
RCE-DTB Carveout
Allocated carveout for RCE DTB loading. -
Menuconfig/defconfig Sync
defconfigupdates after--menuconfig. -
FvbNorFlashStandaloneMm Buffer Init
Buffer pointers initialized to NULL on error. -
Profiler UEFI Variables Exposed
Profiler carveout base/size now exposed as UEFI variables. -
RPMB Response Size
Corrected RPMB response size check. -
AndroidBcbLib Boot Chain Revert
UEFI reverts boot chain when retry count is zero.
Refactoring
- TH500 Parser Renames
Telemetry and ThermalZone parsers renamed for TH500.
Chores & Docs
-
Test FMP PKCS7 Cert Overlay
Overlay added for test FMP PKCS7 cert. -
Capsule Auth Docs
Wiki updated for FMP PKCS7 certificate usage.
edk2-nvidia-202512.1
Release Notes
-
PCIe Controller (T264)
- Improved shutdown order to ensure client drivers (EHCI/XHCI) clean up before PCIe controller shutdown.
- Removed verbose debug prints and unnecessary 100ms delay after PERST# deassertion.
- Added PERST assertion at UEFI exit (if DTB node has
nvidia,uefi-exit-reset) to prevent EHCI USB errors.
-
T26x Platform
- Enabled per-boot-chain GPT for capsule updates with partition layout changes.
-
OP-TEE fTPM Library
- Added FFA support and refactored SMC support.
- Added return value checks for OP-TEE functions.
- Updated OP-TEE sign service function ID to
0xF.
-
Virtual Storage Client Driver
- Add support for UFS RPMB.
edk2-nvidia-202506.3 (r38.4)
Release Notes
New Features
- T26x Per-Boot-Chain GPT: Capsule updates support partition layout changes.
- PCIe Controller:
- PERST asserted at UEFI exit (avoids USB errors).
- Supports all 32-bit PCI memory ranges.
- 100ms delay after link training per spec.
- I2C: Device initialization from DTB.
- OP-TEE fTPM: Added FF-A support; refactored SMC handling.
- NvDisplayControllerDxe:
- Thor display clocks can be disabled.
- HW info (clocks, bandwidth) updated in DT.
- HW-specific context struct added.
- ISP: Floorsweeping support in overlays.
- FMP: DTS files for image type ID (T234/T264).
- FF-A MEM_SHARE ABI: Added; enables var store protection on T264.
- Build System:
- Added "simple" build configs for T23x/T26x.
- Renamed "embedded" build class to "minimal".
- Added
t26x_general_igx.defconfig. - GitHub workflow auto-builds all defconfigs.
Improvements
- Boot Menu: Handles disabled menu/apps gracefully.
- Shell PCD: Follows Kconfig setting.
- RCM: Non-secure variable support enabled.
- EqosDeviceDxe: Updated nvethernetrm; stats initialized.
- Memory Handling: Improved init and freeing in PlatformBm.c.
- FmpDeviceLib: Avoids uninitialized pointer.
- Thermals: T264 cooling-device list floorsweeping.
Bug Fixes
- MMU: Prevents disable during table updates.
- STMM: Uses NV_ASSERT for errors.
- Status Codes: OemDescStatusCodeDxe ignores debug logs.
- BPMP: Proper token/status initialization.
- QSPI: Improved tap delay handling and reset checks.
- OP-TEE: Correct service ID; return value checks.
- Measurement Partition: Cache reset on erase.
- Var Store: Explicit reserved partition erase.
- PCIe: Splits 32-bit memory aperture.
- UFS: Conditional init for T26x.
- NvDisplayControllerDxe:
- Keeps EMC floor if display active.
- Forces max EMC during UEFI.
- Allows null pointer for DT property truncation.
Maintenance
- NvDisplayControllerDxe: Refactored clock functions.
- EqosDeviceDxe: Code cleanups.