NVIDIA / NVIDIA/edk2-nvidia

Boot Logo Display using APRIORI DXE

Open
#151 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
145
Forks
66
PR merge metrics
No merged PRs in 30d

Description

Hello Everyone!

I am working on NVIDIA jetson agx xavier board have edk2-nvidia v35.6.3. I want to display logo as soon as Possible. I studied DXE a little bit and figured out that edk2-nvidia loads DXE mentioned in APRIORI DXE first and then other things. Thats why I started adding the logo and graphics dependencies in APRIORI DXE so that I can get the logo on screen as soon as Possible. But I am stuck into dependency errors. Can someone guide me what should be the exact DXE order in APRIORI to load display logo as soon as possible

Here is my Current APRIORI DXE values in jetson.fdf file

  APRIORI DXE {
    INF MdeModulePkg/Universal/PCD/Dxe/Pcd.inf
    INF Silicon/NVIDIA/Drivers/TegraPlatformInit/TegraPlatformInitDxe.inf
    INF ArmPkg/Drivers/ArmGic/ArmGicDxe.inf
    INF ArmPkg/Drivers/CpuDxe/CpuDxe.inf
    INF MdeModulePkg/Bus/Pci/NonDiscoverablePciDeviceDxe/NonDiscoverablePciDeviceDxe.inf
    INF MdeModulePkg/Bus/Pci/SdMmcPciHcDxe/SdMmcPciHcDxe.inf
    INF MdeModulePkg/Bus/Sd/EmmcDxe/EmmcDxe.inf
    INF MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe.inf
    INF MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe.inf
    INF MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe.inf
    INF FatPkg/EnhancedFatDxe/Fat.inf
    INF MdeModulePkg/Core/RuntimeDxe/RuntimeDxe.inf
    INF MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe.inf
    INF MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe.inf
    INF MdeModulePkg/Application/CapsuleApp/CapsuleApp.inf
    INF MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe.inf
    INF MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
    INF EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe.inf
    INF EmbeddedPkg/MetronomeDxe/MetronomeDxe.inf
    INF Silicon/NVIDIA/Drivers/DefaultVariableDxe/DefaultVariableDxe.inf
    INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe.inf
    INF MdeModulePkg/Universal/Variable/RuntimeDxe/VariableSmmRuntimeDxe.inf
    INF MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe.inf
    INF MdeModulePkg/Universal/DisplayEngineDxe/DisplayEngineDxe.inf
    INF MdeModulePkg/Universal/BdsDxe/BdsDxe.inf
    INF Silicon/NVIDIA/Drivers/TegraGpio/TegraGpioDxe.inf
    INF Silicon/NVIDIA/Drivers/I2cExpanderGpio/I2cExpanderGpio.inf
    INF MdeModulePkg/Bus/I2c/I2cDxe/I2cDxe.inf
    INF Silicon/NVIDIA/Drivers/TegraPwmDxe/TegraPwmDxe.inf
    INF Silicon/NVIDIA/Drivers/TegraControllerEnableDxe/TegraControllerEnableDxe.inf
    INF Silicon/NVIDIA/Drivers/NvDisplayControllerDxe/NvDisplayControllerDxe.inf
    INF Silicon/NVIDIA/Tegra/T194/Drivers/T194GraphicsOutputDxe/T194GraphicsOutputDxe.inf
    INF Silicon/NVIDIA/Drivers/Logo/LogoDxe.inf
    INF MdeModulePkg/Universal/Acpi/BootGraphicsResourceTableDxe/BootGraphicsResourceTableDxe.inf
    }

Here are my edk-nvidia logs


nstallProtocolInterface: 1DA97072-BDDC-4B30-99F1-72A0B56FFF2A 0
Loading driver 4B28E4C7-FF36-4E10-93CF-A82159E777C5
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 878D55040
add-symbol-file /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/build/Build/Jetson/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe/DEBUG/ResetSystemRuntimeDxe.dll 0x87BB20000
Loading driver at 0x0087BB10000 EntryPoint=0x0087BB24064 ResetSystemRuntimeDxe.efi
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 878D55D98
ProtectUefiImageCommon - 0x78D55040
  - 0x000000087BB10000 - 0x0000000000040000
SetUefiImageMemoryAttributes - 0x000000087BB10000 - 0x0000000000010000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000087BB20000 - 0x0000000000010000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000087BB30000 - 0x0000000000020000 (0x0000000000004008)

InstallProtocolInterface: 27CFAC88-46CC-11D4-9A38-0090273FC14D 0
InstallProtocolInterface: 9DA34AE0-EAF9-4BBF-8EC3-FD60226C44BE 87BB302C0
InstallProtocolInterface: 695D7835-8D47-4C11-AB22-FA8ACCE7AE7A 87BB30270
InstallProtocolInterface: 2DF6BA0B-7092-440D-BD04-FB091EC3F3C1 87BB30298
Loading driver B336F62D-4135-4A55-AE4E-4971BBF0885D
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 878D54040
add-symbol-file /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/build/Build/Jetson/DEBUG_GCC5/AARCH64/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe/DEBUG/RealTimeClock.dll 0x87BAD0000
Loading driver at 0x0087BAC0000 EntryPoint=0x0087BAD49AC RealTimeClock.efi
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 878D54F18
ProtectUefiImageCommon - 0x78D54040
  - 0x000000087BAC0000 - 0x0000000000040000
SetUefiImageMemoryAttributes - 0x000000087BAC0000 - 0x0000000000010000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000087BAD0000 - 0x0000000000010000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000087BAE0000 - 0x0000000000020000 (0x0000000000004008)

InstallProtocolInterface: 27CFAC87-46CC-11D4-9A38-0090273FC14D 0
Loading driver 4C6E0267-C77D-410D-8100-1495911A989D
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 878D54540
add-symbol-file /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/build/Build/Jetson/DEBUG_GCC5/AARCH64/EmbeddedPkg/MetronomeDxe/MetronomeDxe/DEBUG/MetronomeDxe.dll 0x87AB7D000
Loading driver at 0x0087AB7C000 EntryPoint=0x0087AB804AC MetronomeDxe.efi
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 878D53F98
ProtectUefiImageCommon - 0x78D54540
  - 0x000000087AB7C000 - 0x0000000000009000
SetUefiImageMemoryAttributes - 0x000000087AB7C000 - 0x0000000000001000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000087AB7D000 - 0x0000000000006000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000087AB83000 - 0x0000000000002000 (0x0000000000004008)

InstallProtocolInterface: 26BACCB2-6F42-11D4-BCE7-0080C73C8881 87AB830E0
Loading driver CB14D604-34B9-4E2B-8551-CB78A03CA7A5
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 878D530C0
add-symbol-file /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/build/Build/Jetson/DEBUG_GCC5/AARCH64/Silicon/NVIDIA/Drivers/DefaultVariableDxe/DefaultVariableDxe/DEBUG/DefaultVariableDxe.dll 0x87AB71000
Loading driver at 0x0087AB70000 EntryPoint=0x0087AB76D30 DefaultVariableDxe.efi
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 878D53318
ProtectUefiImageCommon - 0x78D530C0
  - 0x000000087AB70000 - 0x000000000000C000
SetUefiImageMemoryAttributes - 0x000000087AB70000 - 0x0000000000001000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000087AB71000 - 0x0000000000009000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000087AB7A000 - 0x0000000000002000 (0x0000000000004008)

Loading driver CBD2E4D5-7068-4FF5-B462-9822B4AD8D60
InstallProtocolInterface: 5B1B31A1-9562-11D2-8E3F-00A0C969723B 878D52040
add-symbol-file /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/build/Build/Jetson/DEBUG_GCC5/AARCH64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe/DEBUG/VariableRuntimeDxe.dll 0x87B9C0000
Loading driver at 0x0087B9B0000 EntryPoint=0x0087B9C9338 VariableRuntimeDxe.efi
InstallProtocolInterface: BC62157E-3E33-4FEC-9920-2D3B36D750DF 878D52298
ProtectUefiImageCommon - 0x78D52040
  - 0x000000087B9B0000 - 0x0000000000100000
SetUefiImageMemoryAttributes - 0x000000087B9B0000 - 0x0000000000010000 (0x0000000000004008)
SetUefiImageMemoryAttributes - 0x000000087B9C0000 - 0x00000000000D0000 (0x0000000000020008)
SetUefiImageMemoryAttributes - 0x000000087BA90000 - 0x0000000000020000 (0x0000000000004008)

VarCheckLibRegisterSetVariableCheckHandler - 0x7B9CADEC Success
ASSERT [VariableRuntimeDxe] /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/edk2-tegra/edk2/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableNonVolatile.c(164): NvStorageBase != 0
Firmware Volume for Variable Store is corrupted

ASSERT_EFI_ERROR (Status = Volume Corrupt)
ASSERT [VariableRuntimeDxe] /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/edk2-tegra/edk2/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableDxe.c(546): !(((INTN)(RETURN_STATUS)(Status)) < 0)
InstallProtocolInterface: CD3D0A05-9E24-437C-A891-1EE053DB7638 87BA90488
InstallProtocolInterface: AF23B340-97B4-4685-8D4F-A3F28169B21D 87BA90358
InstallProtocolInterface: 1E5668E2-8481-11D4-BCF1-0080C73C8881 0
ASSERT [VariableRuntimeDxe] /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/edk2-tegra/edk2/MdePkg/Library/UefiLib/UefiLib.c(439): Lock->Lock == EfiLockReleased
ASSERT [DxeCore] /home/eptde20/atlas-os/build/tmp/work/atlas_aesku-poky-linux/edk2-firmware-tegra/35.6.1-r0/edk2-tegra/edk2/MdeModulePkg/Core/Dxe/Event/Tpl.c(69): ((NewTpl) <= 31)

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the APRIORI DXE block in jetson.fdf and the dependency errors in the supplied boot log, especially the VariableRuntimeDxe assertions. Trace the dependencies of the display and logo DXE entries before changing their order. Done means the firmware reaches logo initialization without dependency or related startup errors and displays the logo as early as intended.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
embedded-iot, operating-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.