nv-load-display-modules Service#

Two different sets of display drivers are used across Jetson modules. Jetson Orin devices use the NVGPU driver, nvgpu.ko, for graphics and compute and the following drivers for display:

  • updates/opensrc-disp/nvidia.ko

  • updates/opensrc-disp/nvidia-drm.ko

  • updates/opensrc-disp/nvidia-modeset.ko

Jetson Thor devices have a combined graphics, compute, and display driver in nvidia.ko. The corresponding drivers for Jetson Thor and later devices are as follows:

  • updates/opensource-gpu-disp/nvidia.ko

  • updates/opensource-gpu-disp/nvidia-drm.ko

  • updates/opensource-gpu-disp/nvidia-modeset.ko

  • updates/opensource-gpu-disp/nvidia-uvm.ko

Typically, you cannot have multiple drivers of the exact same name in the Linux kernel module updates folder. As a result, in releases prior to JetPack 7.2, you needed to decide when unpacking the Debian files whether to install the NVGPU packages or the OpenRM packages.

JetPack 7.2 re-implemented how these drivers are managed, allowing both to be present simultaneously in the root file system. Picking the appropriate set for a given device becomes a run-time decision handled by the nv-load-display-modules service. The advantage of this new setup is that a single root file system can be used across both Jetson Orin and Jetson Thor devices.

Implementation#

The capability provided by the nv-load-display-modules service has been expanded.

  • By default, the following modules are denylisted in /etc/modprobe.d/denylist-oot-modules.conf:

    • nvgpu

    • nv_gpu_static_pg

    • nvidia

    • nvidia-drm

    • nvidia-modeset

    • nvidia-uvm

  • The service is implemented in the /etc/systemd/nv-load-display-modules.sh file and uses the variant selected by nv-load-display-modules-choose-variant.sh. This same variant selection file is also used by the nv-load-gpu-libs service.

The service performs the following tasks:

  1. The service picks a variant based on the chip architecture:

    • Tegra23x selects nvgpu-l4t.

    • Tegra26x selects openrm-l4t.

  2. The variant selected by the service is stored in /run/nvidia-gpu-driver-active.

  3. The service copies /opt/nvidia/nv-disp-module-configs/nv-modprobe-${variant}-display.conf to /etc/modprobe.d/nvidia-display.conf. This file defines the parameters specific to the module.

  4. The service copies /opt/nvidia/nv-disp-module-configs/nv-depmod-${variant}-display.conf to /etc/depmod.d/nvidia-display.conf. This file uses override commands to specify which set of modules will be loaded.

  5. The service calls depmod -a. For subsequent boots, depmod is skipped if nothing has changed.

Additional options, such as overrides, are documented inside nv-load-display-modules.sh.

Checking the Service State#

To check which variant was selected by the service, enter this command:

$ cat /run/nvidia-gpu-driver-active

To check whether the service is enabled, enter this command:

$ systemctl is-enabled nv-load-display-modules.service

To check whether the service completed successfully during the current boot, enter this command:

$ systemctl status nv-load-display-modules.service

To review service log messages, enter this command:

$ journalctl -u nv-load-display-modules.service

To verify that the DRM module is loaded, enter this command:

$ lsmod | grep nvidia_drm