JetPack 6.0 no display when modify the kernel defconfig

Hi Nvidia,

JetPack 6.0 (L4T36.3.0)
Orin NX 16GB
Customer carrier board based on p3509-a02

The HDMI worked fine if I use original default defconfig.
But I modify the defconfig, the hdmi is no display after system boot. (I can login by terminal)

The same defconfig file is worked fine on JetPack 6.2 but 6.0 is not.
defconfig.txt (31.6 KB)

Update the dmesg llog.

It got following error:

[   30.176687] nvidia: disagrees about version of symbol module_layout
[   30.548120] nvidia: disagrees about version of symbol module_layout
[   30.684672] nvidia: disagrees about version of symbol module_layout
[   30.821984] nvidia: disagrees about version of symbol module_layout
[   30.955333] nvidia: disagrees about version of symbol module_layout

dmesg.txt (60.7 KB)

Did you rebuild the display drivers (nvidia.ko/nvidia-drm.ko/nvidia-modeset.ko) after you used a new kernel?

Yes, I do following command.

cd source
make -C kernel
sudo -E make install -C kernel
cp kernel/kernel-jammy-src/arch/arm64/boot/Image ../kernel/Image

make modules
sudo -E make modules_install

make dtbs
cp nvidia-oot/device-tree/platform/generic-dts/dtbs/* ../kernel/dtb/

cd Linux_for_Tegra
sudo ./tools/l4t_update_initrd.sh
sudo ./tools/kernel_flash/l4t_initrd_flash.sh --external-device nvme0n1p1 -c tools/kernel_flash/flash_l4t_t234_nvme.xml -p "-c bootloader/generic/cfg/flash_t234_qspi.xml" --showlogs --network usb0 p3509-a02-p3767-0000 internal

These steps do not build display drivers.
Display drivers are in separate source tarball.

Hi Wayne,

But when I run:

make modules
sudo -E make modules_install

I got

  LD [M]  /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/nvdisplay/kernel-open/nvidia-drm.ko
  LD [M]  /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/nvdisplay/kernel-open/nvidia-modeset.ko
  LD [M]  /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/nvdisplay/kernel-open/nvidia.ko
================================================================================
make modules_install - nvidia-display ...
================================================================================
make -C /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/out/nvidia-linux-header \
	M=/mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/nvdisplay/kernel-open modules_install
make[1]: Entering directory '/mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/source/out/nvidia-linux-header'
  INSTALL /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia-drm.ko
  SIGN    /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia-drm.ko
  INSTALL /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia-modeset.ko
  SIGN    /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia-modeset.ko
  INSTALL /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia.ko
  SIGN    /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra/updates/nvidia.ko
  DEPMOD  /mnt/NVMe2/OrinNX/JP6.0/Linux_for_Tegra/rootfs//lib/modules/5.15.136-tegra

Or how do I check I build the display drivers?

Could you check if the nvidia.ko loaded on your device is really the one you built?

I rebuild image again and check the driver timestamps.
I think they’re from my built

~$ ls -al /lib/modules/5.15.136-tegra/updates/nvidia*
-rw-r--r-- 1 root root  990617  一  28 18:18 /lib/modules/5.15.136-tegra/updates/nvidia-drm.ko
-rw-r--r-- 1 root root 4481585  一  28 18:18 /lib/modules/5.15.136-tegra/updates/nvidia.ko
-rw-r--r-- 1 root root 2457833  一  28 18:18 /lib/modules/5.15.136-tegra/updates/nvidia-modeset.ko

Would running insmod on them give you the same error as you saw before?

drm and modeset got Unknown synbol error.
I will try to rebuid them.

Hi Wayne,

I rebuild the driver and still got error.

nvidia: disagrees about version of symbol module_layout

I can reproduce the issue on the Xavier dev kit.
Could you help test it on your side using the defconfig?

HW: Orin NX 16GB + Xavier devkit carrier board
SW:
jetson_linux_r36.3.0_aarch64.tbz2
tegra_linux_sample-root-filesystem_r36.3.0_aarch64.tbz2
./source_sync.sh -t jetson_36.3

I just only change the defconfig file.

Where did you build the nvidia.ko file? Is it on your host PC or you directly build it on your Jetson?

Hi Wayne,

I got the key point, the rootfs and source Module.symvers are not match.

Linux_for_Tegra$ grep "module_layout" ./rootfs/usr/src/linux-headers-5.15.136-tegra-ubuntu22.04_aarch64/3rdparty/canonical/linux-jammy/kernel-source/Module.symvers
0x8aa1adfc	module_layout	vmlinux	EXPORT_SYMBOL
Linux_for_Tegra$ grep "module_layout" ./source/kernel/kernel-jammy-src/Module.symvers
0xdf261632	module_layout	vmlinux	EXPORT_SYMBOL

But I don’t know why. I follow the document step by step to build image.

Just want to clarify. Did you see such behavior when you build latest Jetpack6?

Jetpack6.0 is basically old release that won’t have any update. If same build method won’t make such behavior in later release, then it means it was fixed in later release.

Hi Wayne,

This issue doesn’t happen in JP6.2.
But my customer is using JP6.0 so I need to fix it.

Host PC:

$ grep "module_layout" ./source/kernel/kernel-jammy-src/Module.symvers
0xdf261632 module_layout vmlinux EXPORT_SYMBOL

$ sha256sum kernel/Image
fd95391c299dec557f5883cde783fa817edcbf276677305d8b6f89daecf8e3eb  kernel/Image

Orin NX:

$ grep "module_layout" ./source/kernel/kernel-jammy-src/Module.symvers
0xdf261632 module_layout vmlinux EXPORT_SYMBOL

$ sha256sum /boot/Image
fd95391c299dec557f5883cde783fa817edcbf276677305d8b6f89daecf8e3eb  /boot/Image

They looks OK.
I also try to build nvdisplay driver on Orin NX.
But I still got symbol module_layout error.
I have no idea now.