199 lines
7.3 KiB
HTML
199 lines
7.3 KiB
HTML
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<meta name="generator" content=
|
|
"HTML Tidy for Linux/x86 (vers 1 September 2005), see www.w3.org">
|
|
<meta http-equiv="Content-Type" content=
|
|
"text/html; charset=us-ascii">
|
|
<title>Chapter 44. Open Linux Kernel Modules</title>
|
|
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
|
|
<link rel="start" href="index.html" title=
|
|
"NVIDIA Accelerated Linux Graphics Driver README and Installation Guide">
|
|
<link rel="up" href="installationandconfiguration.html" title=
|
|
"Part I. Installation and Configuration Instructions">
|
|
<link rel="prev" href="gsp.html" title=
|
|
"Chapter 43. GSP Firmware">
|
|
<link rel="next" href="addtlresources.html" title=
|
|
"Chapter 45. NVIDIA Contact Info and Additional Resources">
|
|
</head>
|
|
<body>
|
|
<div class="navheader">
|
|
<table width="100%" summary="Navigation header">
|
|
<tr>
|
|
<th colspan="3" align="center">Chapter 44. Open Linux
|
|
Kernel Modules</th>
|
|
</tr>
|
|
<tr>
|
|
<td width="20%" align="left"><a accesskey="p" href=
|
|
"gsp.html">Prev</a> </td>
|
|
<th width="60%" align="center">Part I. Installation and
|
|
Configuration Instructions</th>
|
|
<td width="20%" align="right"> <a accesskey="n" href=
|
|
"addtlresources.html">Next</a></td>
|
|
</tr>
|
|
</table>
|
|
<hr></div>
|
|
<div class="chapter" lang="en">
|
|
<div class="titlepage">
|
|
<div>
|
|
<div>
|
|
<h2 class="title"><a name="kernel_open" id=
|
|
"kernel_open"></a>Chapter 44. Open Linux Kernel
|
|
Modules</h2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<h3>Introduction</h3>
|
|
<p>The NVIDIA Linux GPU Driver contains several kernel modules:
|
|
nvidia.ko, nvidia-modeset.ko, nvidia-uvm.ko, nvidia-drm.ko, and
|
|
nvidia-peermem.ko.</p>
|
|
<p>Two "flavors" of these kernel modules are provided:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Proprietary. This is the flavor that NVIDIA has historically
|
|
shipped.</p>
|
|
</li>
|
|
<li>
|
|
<p>Open, i.e. source-published, kernel modules that are dual
|
|
licensed MIT/GPLv2. With every driver release, the source code to
|
|
the open kernel modules is published on <a href=
|
|
"https://github.com/NVIDIA/open-gpu-kernel-modules" target=
|
|
"_top">https://github.com/NVIDIA/open-gpu-kernel-modules</a> and a
|
|
tarball is provided on <a href=
|
|
"https://download.nvidia.com/XFree86/" target=
|
|
"_top">https://download.nvidia.com/XFree86/</a>.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<h3>Supported Features</h3>
|
|
<p>The proprietary flavor supports the GPU architectures Maxwell,
|
|
Pascal, Volta, Turing, and later GPUs.</p>
|
|
<p>The open flavor of kernel modules supports Turing and later
|
|
GPUs. The open kernel modules cannot support GPUs before Turing,
|
|
because the open kernel modules depend on the GPU System Processor
|
|
(GSP) first introduced in Turing.</p>
|
|
<p>Most features of the Linux GPU driver are supported with the
|
|
open flavor of kernel modules, including CUDA, Vulkan, OpenGL,
|
|
OptiX, and X11. G-Sync with desktop GPUs is supported. Suspend,
|
|
Hibernate, and Resume power management is supported, as is Run Time
|
|
D3 (RTD3) on Ampere and later GPUs.</p>
|
|
<p>However, in the current release, some display and graphics
|
|
features (notably: SLI, G-Sync on notebooks, preserving video
|
|
memory across power management events with
|
|
NVreg_PreserveVideoMemoryAllocations set) and NVIDIA virtual GPU
|
|
(vGPU), are not yet supported. These features will be added in
|
|
upcoming driver releases.</p>
|
|
<p>Use of the open kernel modules on GeForce and Workstation GPUs
|
|
should be considered alpha-quality in this release due to the
|
|
missing features listed above. To enable use of the open kernel
|
|
modules on GeForce and Workstation GPUs, set the
|
|
"NVreg_OpenRmEnableUnsupportedGpus" nvidia.ko kernel module
|
|
parameter to <code class="computeroutput">1</code>. E.g.,</p>
|
|
<pre class="screen">
|
|
modprobe nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
|
</pre>
|
|
<p>or, in an /etc/modprobe.d/ configuration file:</p>
|
|
<pre class="screen">
|
|
options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
|
|
</pre>
|
|
<p></p>
|
|
<p>The need for this kernel module parameter will be removed in a
|
|
future release once performance and functionality in the open
|
|
kernel modules matures and meets or exceeds that of the proprietary
|
|
kernel modules.</p>
|
|
<p>Though the kernel modules in the two flavors are different, they
|
|
are based on the same underlying source code. The two flavors are
|
|
mutually exclusive: they cannot be used within the kernel at the
|
|
same time, and they should not be installed on the filesystem at
|
|
the same time.</p>
|
|
<p>The user-space components of the NVIDIA Linux GPU driver are
|
|
identical and behave in the same way, regardless of which flavor of
|
|
kernel module is used.</p>
|
|
<h3>Installation</h3>
|
|
<p>Because the two flavors of kernel modules are mutually
|
|
exclusive, you need to choose which to use at install time. This
|
|
can be selected with the "--kernel-module-build-directory" .run
|
|
file option, or its short form "-m". Use "-m=kernel" to install the
|
|
proprietary flavor of kernel modules (the default). Use
|
|
"-m=kernel-open" to install the open flavor of kernel modules.</p>
|
|
<p>E.g.,</p>
|
|
<pre class="screen">
|
|
sh ./NVIDIA-Linux-[...].run -m=kernel-open
|
|
</pre>
|
|
<p></p>
|
|
<p>As a convenience, the open kernel modules distributed in the
|
|
.run file are pre-compiled.</p>
|
|
<p>Advanced users, who want to instead build the open kernel
|
|
modules from source, should do the following:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Uninstall any existing driver with `nvidia-uninstall`.</p>
|
|
</li>
|
|
<li>
|
|
<p>Install from the .run file with "--no-kernel-modules" option, to
|
|
install everything except the kernel modules.</p>
|
|
</li>
|
|
<li>
|
|
<p>Fetch, build, and install the open kernel module source from
|
|
<a href="https://github.com/NVIDIA/open-gpu-kernel-modules" target=
|
|
"_top">https://github.com/NVIDIA/open-gpu-kernel-modules</a>. See
|
|
<a href=
|
|
"https://github.com/NVIDIA/open-gpu-kernel-modules/blob/main/README.md"
|
|
target=
|
|
"_top">https://github.com/NVIDIA/open-gpu-kernel-modules/blob/main/README.md</a>
|
|
for details on building.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p>Note that you must use the same version of the .run file and the
|
|
open kernel module source from <a href=
|
|
"https://github.com/NVIDIA/open-gpu-kernel-modules" target=
|
|
"_top">https://github.com/NVIDIA/open-gpu-kernel-modules</a></p>
|
|
<p>You can determine which flavor of kernel modules is installed
|
|
using either `modinfo` or looking at
|
|
/proc/driver/nvidia/version.</p>
|
|
<p>E.g., the proprietary flavor will report:</p>
|
|
<pre class="screen">
|
|
# modinfo nvidia | grep license
|
|
license: NVIDIA
|
|
|
|
# cat /proc/driver/nvidia/version
|
|
NVRM version: NVIDIA UNIX x86_64 Kernel Module [...]
|
|
</pre>
|
|
<p>The open flavor will report:</p>
|
|
<pre class="screen">
|
|
# modinfo nvidia | grep license
|
|
license: Dual MIT/GPL
|
|
|
|
# cat /proc/driver/nvidia/version
|
|
NVRM version: NVIDIA UNIX Open Kernel Module for x86_64 [...]
|
|
</pre>
|
|
<p></p>
|
|
</div>
|
|
<div class="navfooter">
|
|
<hr>
|
|
<table width="100%" summary="Navigation footer">
|
|
<tr>
|
|
<td width="40%" align="left"><a accesskey="p" href=
|
|
"gsp.html">Prev</a> </td>
|
|
<td width="20%" align="center"><a accesskey="u" href=
|
|
"installationandconfiguration.html">Up</a></td>
|
|
<td width="40%" align="right"> <a accesskey="n" href=
|
|
"addtlresources.html">Next</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td width="40%" align="left" valign="top">Chapter 43. GSP
|
|
Firmware </td>
|
|
<td width="20%" align="center"><a accesskey="h" href=
|
|
"index.html">Home</a></td>
|
|
<td width="40%" align="right" valign="top">
|
|
Chapter 45. NVIDIA Contact Info and Additional
|
|
Resources</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</body>
|
|
</html>
|