Skip to content

UEFI fails to boot if cpu cores are listed in the wrong order inside device tree #157

Description

@eadams-cti

Running r36.5.0-updates branch with L4T 36.5 and a custom device tree for our kernel on orin-agx. We see the error message

ProcHierarchyInfoParser: NumSockets = 1, MaxClustersPerSocket = 3, MaxCoresPerSocket = 12, MaxCoresPerCluster = 4
ERROR DeviceTree for CoreIndex 1 has CoreId = 0x10000, but expected 0x100
ASSERT [DebugStatusCodeDxe] [ConfigurationManagerDataDxe] /home/sweng/trunk_t23x_36.5.0/Linux_for_Tegra/uefi-out/nvidia-uefi/edk2-nvidia/Silicon/NVIDIA/Drivers/ConfigurationManagerData/CacheInfo/CacheInd

Resetting the system in 5 seconds.
▒▒▒▒Shutdown state requested 1
Rebooting system ...

Investigation found that the "cpus" node in our dtb had the cpu cores in the following order:

cpus {
        #address-cells = <0x00000001>;
        #size-cells = <0x00000000>;
        cpu@0 {
                   ...
        };
        cpu@10000 {
                   ...
        };
        cpu@20000 {
                   ...
        };
        cpu@100 {
                   ...
        };

with the rest in ascending order. If we recompiled our dtb so that all the cpu cores were in ascending order, the uefi error went away and the agx-orin boots successfully.

Since the order of nodes in the device tree should not matter as long as they are nested the same, UEFI should be able to process the device tree cpu cores regardless of order in the flattened device tree. Otherwise this error can happen simply due to importing dtsi files in the "wrong" order, as we saw with our device tree.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions