diff --git a/DC-nvidia-jetson b/DC-nvidia-jetson new file mode 100644 index 000000000..1bb4a602b --- /dev/null +++ b/DC-nvidia-jetson @@ -0,0 +1,17 @@ +# This file originates from the project https://github.com/openSUSE/doc-kit +# This file can be edited downstream. + +MAIN="nvidia-jetson.asm.xml" +# Point to the ID of the of your assembly +ROOTID="nvidia-jetson" +SRC_DIR="articles" +IMG_SRC_DIR="images" + +PROFCONDITION="suse-product" +#PROFCONDITION="suse-product;beta" +#PROFCONDITION="community-project" + +STYLEASSEMBLY="/usr/share/xml/docbook/stylesheet/nwalsh5/current/assembly/assemble.xsl" + +STYLEROOT="/usr/share/xml/docbook/stylesheet/suse2022-ns" +FALLBACK_STYLEROOT="/usr/share/xml/docbook/stylesheet/suse-ns" diff --git a/articles/nvidia-jetson.asm.xml b/articles/nvidia-jetson.asm.xml new file mode 100644 index 000000000..b317d38d0 --- /dev/null +++ b/articles/nvidia-jetson.asm.xml @@ -0,0 +1,294 @@ + + + + + %entities; +]> + + + + + + + + + + + + + + Firmware + + + KMP + + + Libraries + + + CUDA + + + + + + + + Legal Notice + + + GNU Free Documentation License + + + + + + &nvidia; &jetson; platform (TBD) + Subtitle if necessary + + + + 2024-05-28 + + + + Added sections: + + Added section on flashing + + + Changed sections: + + Updated section on KMP with more detailed uname -r output + Extended section on libs with warning for tarball extraction + + + + + + 2024-05-31 + + + Changed sections: + + Updated all section with trademark entities + + + + + + 2024-06-04 + + + Changed sections: + + Extended section on flashing with tip on board configs + + + + + + 2024-06-05 + + + Changed sections: + + Updated section on KMP with diverging instructions for SL Micro 6.0 + + + + + + 2024-06-07 + + + Added sections: + + Prepared section on containers + + + Changed sections: + + Updated section on KMP with new simplified package name + Updated section on libs to drop firmware tarball and to simplify for loop deduplicating version numbers + + + + + + 2024-06-19 + + + Changed sections: + + Updated section on flashing with links to &nvidia; docs + Extended section on flashing with DT fix-up for CX-7 PCIe bridge (bsc#1226310) + + + + + + + + + + + + + + + + + &aarch64; + + + + &sles; + &slm; + + &nvidia; &jetson; on &suse; how-to + How to configure and complement &suse; Linux on &nvidia; &jetson; platforms + Installing &suse; Linux on your &nvidia; &jetson; device + + + 3rd Party + Systems Management + + + + Configuration + Deployment + Installation + + Products & Solutions + + + + https://bugzilla.suse.com/enter_bug.cgi + Smart Docs + Documentation + + maintainer@suse.com + + yes + + + + + WHAT? + + + How to combine &suse; and third-party software for &nvidiareg; &jetsonreg; platforms + + + + + WHY? + + + &suse; Linux software can install on &nvidia; &jetson; systems + but does not include drivers for all hardware functionality. + + + + + EFFORT + + + What's the effort one has to put in? + + + + + GOAL + + + Fully exploit &nvidia; &jetson; hardware capabilities + while enjoying &suse; software security and support services + + + + + REQUIREMENTS + + + + + &nvidia; &jetson; based system with &nvidia; &orinreg; chipset + + + + + &nvidia; &jetpackreg; SDK 6.0 software + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/common/generic-entities.ent b/common/generic-entities.ent index d431995f5..e8efc95df 100644 --- a/common/generic-entities.ent +++ b/common/generic-entities.ent @@ -179,6 +179,7 @@ use &deng;! --> &ms;"> + @@ -200,6 +201,17 @@ use &deng;! --> + + + + + + + + + + + diff --git a/tasks/nvidia-jetson-cuda.xml b/tasks/nvidia-jetson-cuda.xml new file mode 100644 index 000000000..5687557df --- /dev/null +++ b/tasks/nvidia-jetson-cuda.xml @@ -0,0 +1,91 @@ + + + + + %entities; +]> + + + + + + + Installing &nvidia; &cuda; containers for &nvidia; &jetson; platforms + + + + + &nvidiareg; libraries consume the &nvidia; &jetsonreg; graphics drivers. + + + +
+ Introduction + + ... + +
+
+ Requirements + + + + &nvidia; &jetson; &orin; System-on-Module or &nvidia; IGX &orin; based system + + + + + &sles; 15 SP6 or &slm; 6.0 + + + + + Linux kernel modules for &nvidia; &orin; GPU + + + + + &nvidia; libraries for &nvidia; &orin; GPU + + + +
+
+ Installing the container + + Install third-party containers provided by &nvidia;. + + + + Perform the following steps on your &nvidia; based system. + + + + ...: + +&prompt.user;... + + +
+
+ Summary + + ... + +
+
+ Troubleshooting + + ... + +
+
diff --git a/tasks/nvidia-jetson-firmware.xml b/tasks/nvidia-jetson-firmware.xml new file mode 100644 index 000000000..b79b30de0 --- /dev/null +++ b/tasks/nvidia-jetson-firmware.xml @@ -0,0 +1,185 @@ + + + + + %entities; +]> + + + + + + + Preparing firmware for &nvidia; &jetson; platforms + + + + + UEFI system firmware allows &suse; Linux media and installations to boot. + + + +
+ Introduction + + &suse; Linux installation media are formatted as UEFI Removable Media + and require &armreg; EBBR compliant boot firmware on the system. + +
+
+ Requirements + + + + &nvidiareg; &jetsonreg; &xavierreg;, &orinreg; or later System-on-Module or &nvidia; IGX &orin; based system + + + + + For &nvidia; &jetson; &orin; Nano developer kit: 0.01 in jumper + + + + + Second system (e.g., notebook) with USB connection to your &nvidia; based system + + + +
+
+ Flashing the firmware + + Follow &nvidia; or OEM provided instructions for flashing your system. + &suse; Linux installation will be easiest if boot firmware and operating system + do not share the same storage device, i.e., SPI flash for firmware. + + + Fix for PCIe on &nvidia; IGX &orin; in 36.3.0 and 36.3.1 + + If you intend to use the full-size PCIe slots on &nvidia; IGX &orin;, + apply the following change to its Device Tree Binary before flashing: + +&prompt.user;cd Linux_for_Tegra +&prompt.user;fdtput -t x kernel/dtb/tegra234-p3740-0002+p3701-0008-nv.dtb /bus@0/pcie@141a0000 ranges 81000000 0 3a100000 0 3a100000 0 100000 82000000 0 40000000 2e 30000000 0 8000000 c3000000 28 0 28 0 6 20000000 + + + + + Power on the &nvidia; system and enter Force Recovery Mode (RCM) + according to its vendor instructions. + + + Force Recovery Mode on &nvidia; Developer Kits + + Refer to &nvidia; instructions for specific developer kits: + + + + + + + + + + + + + + + + + Flash the boot firmware via USB from the secondary system: + +&prompt.sudo;./flash.sh target-board-config external + + + The target board parameter depends on your system and your intended usage. + + + + + + Finding the right config for your system + + Only some board config files have human-recognizable aliases. + + + You can try resolving the aliases to the product codes for module and board and + checking for any additional -qspi config files: + +&prompt.user;ls -l igx-orin* +lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 31. Mai 21:39 igx-orin-devkit.conf -> p3740-0002-p3701-0008.conf +&prompt.user;ls -1 p3740-0002-p3701-0008* +p3740-0002-p3701-0008.conf +p3740-0002-p3701-0008-qspi.conf +&prompt.user;ls -l jetson-orin* +lrwxrwxrwx 1 &exampleuser; &examplegroup; 29 4. Jun 15:37 jetson-orin-nano-devkit.conf -> p3768-0000-p3767-0000-a0.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 34 4. Jun 15:38 jetson-orin-nano-devkit-nvme.conf -> p3768-0000-p3767-0000-a0-nvme.conf +&prompt.user;ls -1 p3768-0000-p3767-0000-a0* +p3768-0000-p3767-0000-a0.conf +p3768-0000-p3767-0000-a0-maxn.conf +p3768-0000-p3767-0000-a0-nvme.conf +p3768-0000-p3767-0000-a0-qspi.conf +&prompt.user;ls -l jetson-agx-orin* +lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-jao-32gb.conf -> p3737-0000-p3701-0000-as-p3701-0004.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano4gb.conf -> p3737-0000-p3701-0000-as-p3767-0004.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:38 jetson-agx-orin-devkit-as-nano8gb.conf -> p3737-0000-p3701-0000-as-p3767-0003.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-16gb.conf -> p3737-0000-p3701-0000-as-p3767-0000.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 40 4. Jun 15:37 jetson-agx-orin-devkit-as-nx-8gb.conf -> p3737-0000-p3701-0000-as-p3767-0001.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:38 jetson-agx-orin-devkit.conf -> p3737-0000-p3701-0000.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 26 4. Jun 15:37 jetson-agx-orin-devkit-industrial.conf -> p3737-0000-p3701-0008.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:38 jetson-agx-orin-devkit-industrial-maxn.conf -> p3737-0000-p3701-0008-maxn.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-industrial-qspi.conf -> p3737-0000-p3701-0008-qspi.conf +lrwxrwxrwx 1 &exampleuser; &examplegroup; 31 4. Jun 15:37 jetson-agx-orin-devkit-maxn.conf -> p3737-0000-p3701-0000-maxn.conf +&prompt.user;ls -1 p3737-0000-p3701-0000* +p3737-0000-p3701-0000-as-p3701-0004.conf +p3737-0000-p3701-0000-as-p3767-0000.conf +p3737-0000-p3701-0000-as-p3767-0001.conf +p3737-0000-p3701-0000-as-p3767-0003.conf +p3737-0000-p3701-0000-as-p3767-0004.conf +p3737-0000-p3701-0000.conf +p3737-0000-p3701-0000.conf.common +p3737-0000-p3701-0000-maxn.conf +p3737-0000-p3701-0000-qspi.conf + + +
+
+ Summary + + You have updated the boot firmware and possibly changed its storage location. + During system boot it should identify on serial console similar to: + + +Jetson UEFI firmware (version 36.3.1-gcid-36302503 built on 2024-05-17T04:47:03+00:00) +
+
+ Troubleshooting + + Refer to &nvidia; documentation. + + + + + + + + + +
+
diff --git a/tasks/nvidia-jetson-kmp.xml b/tasks/nvidia-jetson-kmp.xml new file mode 100644 index 000000000..85486c519 --- /dev/null +++ b/tasks/nvidia-jetson-kmp.xml @@ -0,0 +1,142 @@ + + + + + %entities; +]> + + + + + + + Installing kernel modules for &nvidia; &jetson; platforms + + + + + A Kernel Module Package (KMP) provides additional kernel drivers. + + + +
+ Introduction + + &suse; Linux products contain drivers to boot on &nvidiareg; &orinreg; + and earlier &nvidia; &jetsonreg; platforms. + But as documented in the Release Notes, + certain drivers are not included. + + + &nvidia; &jetpackreg; SDK 6.0 and its &jetson; Linux Driver Pack 36.3 + provide additional kernel driver modules in source form. + +
+
+ Requirements + + + + &nvidia; &jetson; &orin; System-on-Module or &nvidia; IGX &orin; based system + + + + + &sles; 15 SP6 or &slm; 6.0 + + + + + &nvidia; &jetson; &xavierreg; and earlier System-on-Module generations + are no longer supported in &nvidia; &jetpack; SDK 6.0 release. + +
+
+ Installing the drivers + + Install third-party kernel drivers provided via &suse; SolidDriver Program. + + + + Perform the following steps on your &nvidia; based system. + + + + Add the (unofficial, temporary) repository for the Kernel Module Package: + +&prompt.sudo;zypper addrepo \ +https://download.opensuse.org/repositories/home:/sndirsch:/sidecar/SLE_15_SP6/ \ +home:sndirsch:sidecar +&prompt.sudo;zypper addrepo \ +https://download.opensuse.org/repositories/home:/sndirsch:/sidecar/SLE_Micro_6.0/ \ +home:sndirsch:sidecar + + + + + Refresh the repository cache: + +&prompt.sudo;zypper --gpg-auto-import-keys refresh + + + + Check whether kernel flavor default or 64kb is used: + +&prompt.user;uname -r +6.4.0-150600.42-default + + + + Install the KMP for that same kernel flavor: + +&prompt.sudo;zypper install -y nvidia-open-driver-jetson-kmp-default \ +kernel-firmware-nvidia-jetson +&prompt.sudo;transactional-update pkg install -y kernel-firmware-nvidia-jetson \ +nvidia-open-driver-jetson-kmp-default + + + + Reboot the system: + +&prompt.sudo;reboot + + +
+
+ Summary + + You have installed third-party kernel driver modules on your system and + rebooted it for them to get loaded. + + + However, these drivers are not supported by the &suse; provided + Mesa graphics libraries or Xorg modules + and instead require to install proprietary third-party libraries. + +
+
+ Troubleshooting + + If the kernel modules are not probed at all, + verify that you installed the right flavor. + + + If the kernel modules are not probed successfully (in dmesg), + verify that your system is based on &nvidia; &orin; chipset and that + no conflicting &nvidia; drivers for discrete GPUs are installed. + + + Linux kernel driver modules like these cannot provide a kernel console. + You will still need to use the serial console, same as before. + +
+
diff --git a/tasks/nvidia-jetson-libs.xml b/tasks/nvidia-jetson-libs.xml new file mode 100644 index 000000000..0062a5ed9 --- /dev/null +++ b/tasks/nvidia-jetson-libs.xml @@ -0,0 +1,229 @@ + + + + + %entities; +]> + + + + + + + Installing &nvidia; libraries for &nvidia; &jetson; platforms + + + + + &nvidiareg; libraries consume the &nvidia; &jetsonreg; graphics drivers. + + + +
+ Introduction + + To exploit the &nvidia; &orinreg; GPU and DLA, third-party kernel drivers and + libraries are needed. + + + The &slsa; NVIDIA Compute Module + does not offer RPM packages for &nvidia; &jetson;'s integrated GPU today. + As alternative we explain how to adapt the &nvidia; provided downloads + for &suse; systems. + +
+
+ Requirements + + + + &nvidia; &jetson; &orin; System-on-Module or &nvidia; IGX &orin; based system + + + + + &sles; 15 SP6 or &slm; 6.0 + + + + + Linux kernel modules for &nvidia; &orin; GPU + + + + + &nvidia; &jetson; &xavierreg; and earlier System-on-Module generations + are no longer supported in &nvidia; &jetpackreg; SDK 6.0 release. + +
+
+ Installing the libraries + + Install third-party libraries provided by &nvidia;. + + + + Perform the following steps on your &nvidia; based system. + + + + Download the Driver Package (BSP) from + + + + + + Extract the tarball: + +&prompt.user;tar xf jetson_linux_r36.3.0_aarch64.tbz2 + + + + Convert foreign packages to tarballs: + +&prompt.user;pushd Linux_for_Tegra +&prompt.user;sed -i 's/lbzip2/bzip2/g' nv_tools/scripts/nv_repackager.sh +&prompt.user;./nv_tools/scripts/nv_repackager.sh -o ./nv_tegra/l4t_tar_packages --convert-all +&prompt.user;popd + + + + Modify one of the tarballs: + +&prompt.user;pushd Linux_for_Tegra/nv_tegra/l4t_tar_packages +&prompt.user;cat > nvidia-l4t-init.txt << EOF +etc/asound.conf.tegra-ape +etc/asound.conf.tegra-hda-jetson-agx +etc/asound.conf.tegra-hda-jetson-xnx +etc/nvidia-container-runtime/host-files-for-container.d/devices.csv +etc/nvidia-container-runtime/host-files-for-container.d/drivers.csv +etc/nvsciipc.cfg +etc/sysctl.d/60-nvsciipc.conf +etc/systemd/nv_nvsciipc_init.sh +etc/systemd/nvpower.sh +etc/systemd/nv.sh +etc/systemd/system.conf.d/watchdog.conf +etc/systemd/system/multi-user.target.wants/nv_nvsciipc_init.service +etc/systemd/system/multi-user.target.wants/nvpower.service +etc/systemd/system/multi-user.target.wants/nv.service +etc/systemd/system/nv_nvsciipc_init.service +etc/systemd/system/nvpower.service +etc/systemd/system/nv.service +etc/udev/rules.d/99-tegra-devices.rules +usr/share/alsa/cards/tegra-ape.conf +usr/share/alsa/cards/tegra-hda.conf +usr/share/alsa/init/postinit/00-tegra.conf +usr/share/alsa/init/postinit/01-tegra-rt565x.conf +usr/share/alsa/init/postinit/02-tegra-rt5640.conf +EOF +&prompt.user;tar xf nvidia-l4t-init_36.3.0-20240404104251_arm64.tbz2 +&prompt.user;rm nvidia-l4t-init_36.3.0-20240404104251_arm64.tbz2 +&prompt.user;tar cjf nvidia-l4t-init_36.3.0-20240404104251_arm64.tbz2 $(cat nvidia-l4t-init.txt) +&prompt.user;popd + + + + Extract the tarballs into the system's root filesystem: + +&prompt.user;pushd Linux_for_Tegra/nv_tegra/l4t_tar_packages +&prompt.user;for i in \ +nvidia-l4t-core \ +nvidia-l4t-3d-core \ +nvidia-l4t-cuda \ +nvidia-l4t-gbm \ +nvidia-l4t-multimedia-utils \ +nvidia-l4t-multimedia \ +nvidia-l4t-nvfancontrol \ +nvidia-l4t-nvpmodel \ +nvidia-l4t-tools \ +nvidia-l4t-x11 \ +nvidia-l4t-nvsci \ +nvidia-l4t-pva \ +nvidia-l4t-wayland \ +nvidia-l4t-camera \ +nvidia-l4t-vulkan-sc-sdk \ +nvidia-l4t-nvml \ +nvidia-l4t-init; do + sudo tar xjf ${i}_36.3.0-20240404104251_arm64.tbz2 -C / +done +&prompt.user;popd + + + + This will overwrite any existing files. + + + + + + Adjust some file locations: + +&prompt.sudo;mv /usr/lib/xorg/modules/drivers/nvidia_drv.so \ +/usr/lib64/xorg/modules/drivers/ +&prompt.sudo;mv /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so \ +/usr/lib64/xorg/modules/extensions/ +&prompt.sudo;rm -rf /usr/lib/xorg + + + + Run ldconfig: + +&prompt.sudo;echo /usr/lib/aarch64-linux-gnu >> /etc/ld.so.conf.d/nvidia-tegra.conf +&prompt.sudo;ldconfig + + + + Reboot the system: + +&prompt.sudo;reboot + + +
+
+ Verifying driver and library installation + + The &nvidia; System Management Interface (SMI) utility uses the + just installed &nvidia; Management Library (NVML) to query the kernel + drivers for hardware status. + + + + + + + + Run nvidia-smi tool: + +&prompt.user;sudo nvidia-smi + + +
+
+ Summary + + You have installed libraries and tools and checked that they work in principle. + + + Having been installed from downloaded tarballs, these files will not get updated + automatically and will require the equivalent procedure to be repeated + for future updated downloads. + Similarly, the files will be difficult to remove from the system. + +
+
+ Troubleshooting + + RPM packages for discrete GPUs and these files for integrated GPUs + cannot be installed side-by-side. You need to choose which ones to install. + +
+