1291 lines
53 KiB
HTML
1291 lines
53 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 8. Common Problems</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="faq.html" title=
|
|
"Chapter 7. Frequently Asked Questions">
|
|
<link rel="next" href="knownissues.html" title=
|
|
"Chapter 9. Known Issues">
|
|
</head>
|
|
<body>
|
|
<div class="navheader">
|
|
<table width="100%" summary="Navigation header">
|
|
<tr>
|
|
<th colspan="3" align="center">Chapter 8. Common
|
|
Problems</th>
|
|
</tr>
|
|
<tr>
|
|
<td width="20%" align="left"><a accesskey="p" href=
|
|
"faq.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=
|
|
"knownissues.html">Next</a></td>
|
|
</tr>
|
|
</table>
|
|
<hr></div>
|
|
<div class="chapter" lang="en">
|
|
<div class="titlepage">
|
|
<div>
|
|
<div>
|
|
<h2 class="title"><a name="commonproblems" id=
|
|
"commonproblems"></a>Chapter 8. Common Problems</h2>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<p>This section provides solutions to common problems associated
|
|
with the NVIDIA Linux x86_64 Driver.</p>
|
|
<div class="qandaset">
|
|
<table border="0" summary="Q and A Set">
|
|
<col align="left" width="1%">
|
|
<tbody>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="MyXServerFailsT53883" id=
|
|
"MyXServerFailsT53883"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>My X server fails to start, and my X log file contains the
|
|
error:</b></p>
|
|
<pre class="screen">
|
|
(EE) NVIDIA(0): The NVIDIA kernel module does not appear to
|
|
(EE) NVIDIA(0): be receiving interrupts generated by the NVIDIA graphics
|
|
(EE) NVIDIA(0): device PCI:x:x:x. Please see the COMMON PROBLEMS
|
|
(EE) NVIDIA(0): section in the README for additional information.
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>This can be caused by a variety of problems, such as PCI IRQ
|
|
routing errors, I/O APIC problems, conflicts with other devices
|
|
sharing the IRQ (or their drivers), or MSI compatibility
|
|
problems.</p>
|
|
<p>If possible, configure your system such that your graphics card
|
|
does not share its IRQ with other devices (try moving the graphics
|
|
card to another slot if applicable, unload/disable the driver(s)
|
|
for the device(s) sharing the card's IRQ, or remove/disable the
|
|
device(s)).</p>
|
|
<p>Depending on the nature of the problem, one of (or a combination
|
|
of) these kernel parameters might also help:</p>
|
|
<div class="informaltable">
|
|
<table summary="(no summary available)" border="0">
|
|
<colgroup>
|
|
<col>
|
|
<col></colgroup>
|
|
<thead>
|
|
<tr>
|
|
<th>Parameter</th>
|
|
<th>Behavior</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>pci=noacpi</td>
|
|
<td>don't use ACPI for PCI IRQ routing</td>
|
|
</tr>
|
|
<tr>
|
|
<td>pci=biosirq</td>
|
|
<td>use PCI BIOS calls to retrieve the IRQ routing table</td>
|
|
</tr>
|
|
<tr>
|
|
<td>noapic</td>
|
|
<td>don't use I/O APICs present in the system</td>
|
|
</tr>
|
|
<tr>
|
|
<td>acpi=off</td>
|
|
<td>disable ACPI</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<p></p>
|
|
<p>The problem may also be caused by MSI compatibility problems.
|
|
See <a href="knownissues.html#msi_interrupts">MSI Interrupts</a>
|
|
for details.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="XStartsForMeButac314" id=
|
|
"XStartsForMeButac314"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>X starts for me, but OpenGL applications terminate
|
|
immediately.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>If X starts but you have trouble with OpenGL, you most likely
|
|
have a problem with other libraries in the way, or there are stale
|
|
symlinks. See <a href="installedcomponents.html" title=
|
|
"Chapter 5. Listing of Installed Components">Chapter 5,
|
|
<i>Listing of Installed Components</i></a> for details. Sometimes,
|
|
all it takes is to rerun <code class=
|
|
"filename">ldconfig</code>.</p>
|
|
<p>You should also check that the correct extensions are
|
|
present;</p>
|
|
<pre class="screen">
|
|
% xdpyinfo
|
|
</pre>
|
|
<p>should show the “<span class="quote">GLX</span>” and
|
|
“<span class="quote">NV-GLX</span>” extensions present.
|
|
If these two extensions are not present, then there is most likely
|
|
a problem loading the glx module, or it is unable to implicitly
|
|
load GLcore. Check your X config file and make sure that you are
|
|
loading glx (see <a href="editxconfig.html" title=
|
|
"Chapter 6. Configuring X for the NVIDIA Driver">Chapter 6,
|
|
<i>Configuring X for the NVIDIA Driver</i></a>). If your X config
|
|
file is correct, then check the X log file for warnings/errors
|
|
pertaining to GLX. Also check that all of the necessary symlinks
|
|
are in place (refer to <a href="installedcomponents.html" title=
|
|
"Chapter 5. Listing of Installed Components">Chapter 5,
|
|
<i>Listing of Installed Components</i></a>).</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="WhenXineramaIsE5358f" id=
|
|
"WhenXineramaIsE5358f"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>When Xinerama is enabled, my stereo glasses are shuttering
|
|
only when the stereo application is displayed on one specific X
|
|
screen. When the application is displayed on the other X screens,
|
|
the stereo glasses stop shuttering.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>This problem occurs with DDC and "blue line" stereo glasses,
|
|
that get the stereo signal from one video port of the graphics
|
|
card. When a X screen does not display any stereo drawable the
|
|
stereo signal is disabled on the associated video port.</p>
|
|
<p>Forcing stereo flipping allows the stereo glasses to shutter
|
|
continuously. This can be done by enabling the OpenGL control
|
|
"Force Stereo Flipping" in nvidia-settings, or by setting the X
|
|
configuration option "ForceStereoFlipping" to "1".</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="StereoIsNotInSy57ad4" id=
|
|
"StereoIsNotInSy57ad4"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Stereo is not in sync across multiple displays.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>There are two cases where this may occur. If the displays are
|
|
attached to the same GPU, and one of them is out of sync with the
|
|
stereo glasses, you will need to reconfigure your monitors to drive
|
|
identical mode timings; see <a href="programmingmodes.html" title=
|
|
"Chapter 18. Programming Modes">Chapter 18,
|
|
<i>Programming Modes</i></a> for details.</p>
|
|
<p>If the displays are attached to different GPUs, the only way to
|
|
synchronize stereo across the displays is with a Quadro Sync
|
|
device, which is only supported by certain NVIDIA RTX/Quadro cards.
|
|
See <a href="framelock.html" title=
|
|
"Chapter 32. Configuring Frame Lock and Genlock">Chapter 32,
|
|
<i>Configuring Frame Lock and Genlock</i></a> for details.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="IJustUpgradedMy144d6" id=
|
|
"IJustUpgradedMy144d6"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>I just upgraded my kernel, and now the NVIDIA kernel module
|
|
will not load.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The kernel interface layer of the NVIDIA kernel module must be
|
|
compiled specifically for the configuration and version of your
|
|
kernel. If you upgrade your kernel, then the simplest solution is
|
|
to reinstall the driver.</p>
|
|
<p>ADVANCED: You can install the NVIDIA kernel module for a non
|
|
running kernel (for example: in the situation where you just built
|
|
and installed a new kernel, but have not rebooted yet) with a
|
|
command line such as this:</p>
|
|
<pre class="screen">
|
|
# sh NVIDIA-Linux-x86_64-535.161.07.run --kernel-name='KERNEL_NAME'
|
|
</pre>
|
|
<p>Where 'KERNEL_NAME' is what <span><strong class="command">uname
|
|
-r</strong></span> would report if the target kernel were
|
|
running.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="kernelmoduleloadfailed" id=
|
|
"kernelmoduleloadfailed"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Installing the driver fails with:</b></p>
|
|
<pre class="screen">
|
|
Unable to load the kernel module 'nvidia.ko'.
|
|
</pre>
|
|
<p><b>My X server fails to start, and my X log file contains the
|
|
error:</b></p>
|
|
<pre class="screen">
|
|
(EE) NVIDIA(0): Failed to load the NVIDIA kernel module!
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p><strong class="userinput"><code>nvidia-installer</code></strong>
|
|
attempts to load the NVIDIA kernel module before installing the
|
|
driver, and will abort if this test load fails. Similarly, if the
|
|
kernel module fails to load when starting the an X server with the
|
|
NVIDIA X driver, the X server will fail to start.</p>
|
|
<p>If the NVIDIA kernel module fails to load, you should check the
|
|
output of <strong class="userinput"><code>dmesg</code></strong> for
|
|
kernel error messages and/or attempt to load the kernel module
|
|
explicitly with <strong class="userinput"><code>modprobe
|
|
nvidia</code></strong>. There are a number of common failure
|
|
cases:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Some symbols that the kernel module depends on failed to be
|
|
resolved. If this happens, then the kernel module was most likely
|
|
built against a Linux kernel source tree (or kernel headers) for a
|
|
kernel revision or configuration that doesn't match the running
|
|
kernel.</p>
|
|
<p>In some cases, the NVIDIA kernel module may fail to resolve
|
|
symbols due to those symbols being provided by modules that were
|
|
built as part of the configuration of the currently running kernel,
|
|
but which are not installed. For example, some distributions, such
|
|
as Ubuntu 14.04, provide the DRM kernel module in an optionally
|
|
installed package (in the case of Ubuntu 14.04, linux-image-extra),
|
|
but the kernel headers will reflect the availability of DRM
|
|
regardless of whether the module that provides it is actually
|
|
installed. The NVIDIA kernel module build will detect the
|
|
availability of DRM when building, but will fail at load time with
|
|
messages such as:</p>
|
|
<pre class="screen">
|
|
nvidia: Unknown symbol drm_open (err 0)
|
|
</pre>
|
|
<p></p>
|
|
<p>If any of the NVIDIA kernel modules fail to load due to
|
|
unresolved symbols, and you are certain that the modules were built
|
|
against the correct kernel source tree (or headers), check to see
|
|
if there are any optionally installable modules that might provide
|
|
these symbols which are not currently installed. If you believe
|
|
that you might not be using the correct kernel sources/headers, you
|
|
can specify their location when you install the NVIDIA driver using
|
|
the <code class="option">--kernel-source-path</code> command line
|
|
option (see <strong class="userinput"><code>sh
|
|
NVIDIA-Linux-x86_64-535.161.07.run
|
|
--advanced-options</code></strong> for details).</p>
|
|
</li>
|
|
<li>
|
|
<p>Nouveau, or another driver, is already using the GPU. See
|
|
<a href="commonproblems.html#nouveau" title=
|
|
"Interaction with the Nouveau Driver">Q & A 8.1,
|
|
“Interaction with the Nouveau Driver”</a> for more
|
|
information on Nouveau and how to disable it.</p>
|
|
</li>
|
|
<li>
|
|
<p>The kernel requires that kernel modules carry a valid signature
|
|
from a trusted key, and the NVIDIA kernel module is unsigned, or
|
|
has an invalid or untrusted signature. This may happen, for
|
|
example, on some systems with UEFI Secure Boot enabled. See
|
|
<a href="installdriver.html#modulesigning" title=
|
|
"Signing the NVIDIA Kernel Module">the section called
|
|
“Signing the NVIDIA Kernel Module”</a> for more
|
|
information about signing the kernel module.</p>
|
|
</li>
|
|
<li>
|
|
<p>No supported GPU is detected, either because no NVIDIA GPUs are
|
|
detected in the system, or because none of the NVIDIA GPUs which
|
|
are present are supported by this version of the NVIDIA kernel
|
|
module. See <a href="supportedchips.html" title=
|
|
"Appendix A. Supported NVIDIA GPU Products">Appendix A,
|
|
<i>Supported NVIDIA GPU Products</i></a> for information on which
|
|
GPUs are supported by which driver versions.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="InstallingTheNv99f2c" id=
|
|
"InstallingTheNv99f2c"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Installing the NVIDIA kernel module gives an error message
|
|
like:</b></p>
|
|
<pre class="screen">
|
|
#error Modules should never use kernel-headers system headers
|
|
#error but headers from an appropriate kernel-source
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>You need to install the source for the Linux kernel. In most
|
|
situations you can fix this problem by installing the kernel-source
|
|
or kernel-devel package for your distribution</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="OpenglApplicatib08b0" id=
|
|
"OpenglApplicatib08b0"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>OpenGL applications crash and print out the following
|
|
warning:</b></p>
|
|
<pre class="screen">
|
|
WARNING: Your system is running with a buggy dynamic loader.
|
|
This may cause crashes in certain applications. If you
|
|
experience crashes you can try setting the environment
|
|
variable __GL_SINGLE_THREADED to 1. For more information,
|
|
consult the FREQUENTLY ASKED QUESTIONS section in
|
|
the file /usr/share/doc/NVIDIA_GLX-1.0/README.txt.
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The dynamic loader on your system has a bug which will cause
|
|
applications linked with pthreads, and that <code class=
|
|
"function">dlopen()</code> libGL multiple times, to crash. This bug
|
|
is present in older versions of the dynamic loader. Distributions
|
|
that shipped with this loader include but are not limited to Red
|
|
Hat Linux 6.2 and Mandrake Linux 7.1. Version 2.2 and later of the
|
|
dynamic loader are known to work properly. If the crashing
|
|
application is single threaded then setting the environment
|
|
variable <code class="envar">__GL_SINGLE_THREADED</code> to
|
|
<code class="literal">1</code> will prevent the crash. In the bash
|
|
shell you would enter:</p>
|
|
<pre class="screen">
|
|
% export __GL_SINGLE_THREADED=1
|
|
</pre>
|
|
<p>and in csh and derivatives use:</p>
|
|
<pre class="screen">
|
|
% setenv __GL_SINGLE_THREADED 1
|
|
</pre>
|
|
<p>Previous releases of the NVIDIA Accelerated Linux Graphics
|
|
Driver attempted to work around this problem. Unfortunately, the
|
|
workaround caused problems with other applications and was removed
|
|
after version 1.0-1541.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="Quake3CrashesWh70f99" id=
|
|
"Quake3CrashesWh70f99"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Quake3 crashes when changing video modes.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>You are probably experiencing a problem described above. Please
|
|
check the text output for the “<span class=
|
|
"quote">WARNING</span>” message described in the previous
|
|
hint. Setting <code class="envar">__GL_SINGLE_THREADED</code> to
|
|
<code class="literal">1</code> as will fix the problem.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="ICannotBuildThed7d59" id=
|
|
"ICannotBuildThed7d59"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>I cannot build the NVIDIA kernel module, or, I can build the
|
|
NVIDIA kernel module, but modprobe/insmod fails to load the module
|
|
into my kernel.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>These problems are generally caused by the build using the wrong
|
|
kernel header files (i.e. header files for a different kernel
|
|
version than the one you are running). The convention used to be
|
|
that kernel header files should be stored in <code class=
|
|
"filename">/usr/include/linux/</code>, but that is deprecated in
|
|
favor of <code class=
|
|
"filename">/lib/modules/RELEASE/build/include</code> (where RELEASE
|
|
is the result of <span><strong class="command">uname
|
|
-r</strong></span>. The <code class=
|
|
"filename">nvidia-installer</code> should be able to determine the
|
|
location on your system; however, if you encounter a problem you
|
|
can force the build to use certain header files by using the
|
|
<code class="option">--kernel-include-dir</code> option. For this
|
|
to work you will of course need the appropriate kernel header files
|
|
installed on your system. Consult the documentation that came with
|
|
your distribution; some distributions do not install the kernel
|
|
header files by default, or they install headers that do not
|
|
coincide properly with the kernel you are running.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="CompilingTheNvi5332d" id=
|
|
"CompilingTheNvi5332d"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Compiling the NVIDIA kernel module gives this error:</b></p>
|
|
<pre class="screen">
|
|
You appear to be compiling the NVIDIA kernel module with
|
|
a compiler different from the one that was used to compile
|
|
the running kernel. This may be perfectly fine, but there
|
|
are cases where this can lead to unexpected behavior and
|
|
system crashes.
|
|
|
|
If you know what you are doing and want to override this
|
|
check, you can do so by setting IGNORE_CC_MISMATCH.
|
|
|
|
In any other case, set the CC environment variable to the
|
|
name of the compiler that was used to compile the kernel.
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>You should compile the NVIDIA kernel module with the same
|
|
compiler version that was used to compile your kernel. Some Linux
|
|
kernel data structures are dependent on the version of gcc used to
|
|
compile it; for example, in <code class=
|
|
"filename">include/linux/spinlock.h</code>:</p>
|
|
<pre class="programlisting">
|
|
...
|
|
* Most gcc versions have a nasty bug with empty initializers.
|
|
*/
|
|
#if (__GNUC__ > 2)
|
|
typedef struct { } rwlock_t;
|
|
#define RW_LOCK_UNLOCKED (rwlock_t) { }
|
|
#else
|
|
typedef struct { int gcc_is_buggy; } rwlock_t;
|
|
#define RW_LOCK_UNLOCKED (rwlock_t) { 0 }
|
|
#endif
|
|
</pre>
|
|
<p>If the kernel is compiled with gcc 2.x, but gcc 3.x is used when
|
|
the kernel interface is compiled (or vice versa), the size of
|
|
<span class="structname">rwlock_t</span> will vary, and things like
|
|
ioremap will fail. To check what version of gcc was used to compile
|
|
your kernel, you can examine the output of:</p>
|
|
<pre class="screen">
|
|
% cat /proc/version
|
|
</pre>
|
|
<p>To check what version of gcc is currently in your <code class=
|
|
"envar">$PATH</code>, you can examine the output of:</p>
|
|
<pre class="screen">
|
|
% gcc -v
|
|
</pre>
|
|
<p></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="IRecentlyUpdatedf77c" id=
|
|
"IRecentlyUpdatedf77c"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>I recently updated various libraries on my system using my
|
|
Linux distributor's update utility, and the NVIDIA graphics driver
|
|
no longer works.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Conflicting libraries may have been installed by your
|
|
distribution's update utility; see <a href=
|
|
"installedcomponents.html" title=
|
|
"Chapter 5. Listing of Installed Components">Chapter 5,
|
|
<i>Listing of Installed Components</i></a> for details on how to
|
|
diagnose this.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="IHaveRebuiltThed1d8b" id=
|
|
"IHaveRebuiltThed1d8b"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>I have rebuilt the NVIDIA kernel module, but when I try to
|
|
insert it, I get a message telling me I have unresolved
|
|
symbols.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Unresolved symbols are most often caused by a mismatch between
|
|
your kernel sources and your running kernel. They must match for
|
|
the NVIDIA kernel module to build correctly. Make sure your kernel
|
|
sources are installed and configured to match your running
|
|
kernel.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="OpenglApplicati00a55" id=
|
|
"OpenglApplicati00a55"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>OpenGL applications leak significant amounts of memory on my
|
|
system!</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>If your kernel is making use of the -rmap VM, the system may be
|
|
leaking memory due to a memory management optimization introduced
|
|
in -rmap14a. The -rmap VM has been adopted by several popular
|
|
distributions, the memory leak is known to be present in some of
|
|
the distribution kernels; it has been fixed in -rmap15e.</p>
|
|
<p>If you suspect that your system is affected, try upgrading your
|
|
kernel or contact your distribution's vendor for assistance.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="WhenITryToInsta37aa1" id=
|
|
"WhenITryToInsta37aa1"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>When I try to install the driver, the installer claims that X
|
|
is running, even though I have exited X.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The installer detects the presence of an X server by checking
|
|
for the X server's lock files: <code class=
|
|
"filename">/tmp/.Xn-lock</code>, where 'n' is the number of the X
|
|
Display (the installer checks for X Displays 0-7). If you have
|
|
exited X, but one of these files has been left behind, then you
|
|
will need to manually delete the lock file. <span class=
|
|
"emphasis"><em>Do not</em></span> remove this file if X is still
|
|
running!</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="optimusacpivbios" id=
|
|
"optimusacpivbios"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Why does the VBIOS fail to load on my Optimus system?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>On some notebooks with Optimus graphics, the NVIDIA driver may
|
|
not be able to retrieve the Video BIOS due to interactions between
|
|
the System BIOS and the Linux kernel's ACPI subsystem. On affected
|
|
notebooks, applications that require the GPU will fail, and
|
|
messages like the following may appear in the system log:</p>
|
|
<pre class="screen">
|
|
NVRM: failed to copy vbios to system memory.
|
|
NVRM: RmInitAdapter failed! (0x30:0xffffffff:858)
|
|
NVRM: rm_init_adapter(0) failed
|
|
</pre>
|
|
<p>Such problems are typically beyond the control of the NVIDIA
|
|
driver, which relies on proper cooperation of ACPI and the System
|
|
BIOS to retrieve important information about the GPU, including the
|
|
Video BIOS.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="libglvnd" id=
|
|
"libglvnd"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>OpenGL applications do not work with driver version 364.xx
|
|
and later, which worked with previous driver versions</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Release 361 of the NVIDIA Linux driver introduced OpenGL
|
|
libraries built upon the libglvnd (GL Vendor Neutral Dispatch)
|
|
architecture, to allow for the coexistence of multiple OpenGL
|
|
implementations on the same system. Beginning with release 364, the
|
|
GLVND libraries are installed by default.</p>
|
|
<p>By design, GLVND conforms with the Linux OpenGL ABI version 1.0
|
|
as defined at <a href="https://www.opengl.org/registry/ABI/"
|
|
target="_top">https://www.opengl.org/registry/ABI/</a> and exposes
|
|
all required entry points; however, applications which depend upon
|
|
specifics of the NVIDIA OpenGL implementation which fall outside of
|
|
the OpenGL ABI may be incompatible with a GLVND-based OpenGL
|
|
implementation.</p>
|
|
<p>If you encounter an application which is incompatible with
|
|
GLVND, please contact the application vendor to inform them that
|
|
their application will need to be updated to ensure compatibility
|
|
with GLVND.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="VulkanApplicatiad1f6" id=
|
|
"VulkanApplicatiad1f6"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Vulkan applications crash when entering or leaving
|
|
fullscreen, or when resized</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Resizing a Vulkan application generates events that trigger an
|
|
out-of-date swapchain.</p>
|
|
<p>Fullscreen Vulkan applications are optimized for performance by
|
|
the driver. This optimization also generates events that trigger an
|
|
out-of-date swapchain upon entering or leaving fullscreen mode.
|
|
This is commonly encountered when using the alt-tab key
|
|
combination, for example.</p>
|
|
<p>Applications that do not properly respond to the
|
|
VK_ERROR_OUT_OF_DATE_KHR return code may not function properly when
|
|
these events occur. The expected behavior is documented in section
|
|
30.8 of the Vulkan specification.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="TheVulkanIcdHas2343d" id=
|
|
"TheVulkanIcdHas2343d"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>The Vulkan ICD has dependencies on X libraries</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>By default, nvidia-installer creates a
|
|
/etc/vulkan/icd.d/nvidia_icd.json that points to
|
|
libGLX_nvidia.so.0. This DSO has dependencies on X libraries.</p>
|
|
<p>It is possible to avoid those dependencies by hand editing that
|
|
file to point to libEGL_nvidia.so.0 instead. However in that case,
|
|
an application will only be able to create non-X swapchains if it
|
|
wants to present frames.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="VulkanApplicati0d7d7" id=
|
|
"VulkanApplicati0d7d7"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Vulkan applications show up as a blank window</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The Vulkan application may be choosing your iGPU instead of your
|
|
NVIDIA dGPU. Starting with the 435 driver series, you can set the
|
|
following environment variable to force the Vulkan loader to list
|
|
NVIDIA GPUs before other devices:</p>
|
|
<pre class="screen">
|
|
__NV_PRIME_RENDER_OFFLOAD=1
|
|
</pre>
|
|
<p>This can be used even if the system is not otherwise configured
|
|
to use <a href="primerenderoffload.html" title=
|
|
"Chapter 35. PRIME Render Offload">Chapter 35,
|
|
<i>PRIME Render Offload</i></a>.</p>
|
|
<p>In order to prefer discrete GPUs over integrated GPUs,
|
|
application developers can check the
|
|
VkPhysicalDeviceProperties::deviceType field when querying
|
|
available physical devices.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="OpenglApplicati0fbea" id=
|
|
"OpenglApplicati0fbea"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>OpenGL applications are running slowly</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The application is probably using a different library that still
|
|
remains on your system, rather than the NVIDIA supplied OpenGL
|
|
library. See <a href="installedcomponents.html" title=
|
|
"Chapter 5. Listing of Installed Components">Chapter 5,
|
|
<i>Listing of Installed Components</i></a> for details.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="FontsAreIncorre3aeb6" id=
|
|
"FontsAreIncorre3aeb6"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>Fonts are incorrectly sized after installing the NVIDIA
|
|
driver.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Incorrectly sized fonts are generally caused by incorrect DPI
|
|
(Dots Per Inch) information. You can check what X thinks the
|
|
physical size of your monitor is, by running:</p>
|
|
<pre class="screen">
|
|
% xdpyinfo | grep dimensions
|
|
</pre>
|
|
<p>This will report the size in pixels, and in millimeters.</p>
|
|
<p>If these numbers are wrong, you can correct them by modifying
|
|
the X server's DPI setting. See <a href="dpi.html" title=
|
|
"Appendix E. Dots Per Inch">Appendix E, <i>Dots Per
|
|
Inch</i></a> for details.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="OpenglApplicati611c0" id=
|
|
"OpenglApplicati611c0"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>OpenGL applications don't work, and my X log file contains
|
|
the error:</b></p>
|
|
<pre class="screen">
|
|
(EE) NVIDIA(0): Unable to map device node /dev/zero with read and write
|
|
(EE) NVIDIA(0): privileges. The GLX extension will be disabled on this
|
|
(EE) NVIDIA(0): X screen. Please see the COMMON PROBLEMS section in the
|
|
(EE) NVIDIA(0): README for more information.
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>The NVIDIA OpenGL driver must be able to map anonymous memory
|
|
with read and write execute privileges in order to function
|
|
correctly. The driver needs this ability to allocate aligned
|
|
memory, which is used for certain optimizations. Currently, GLX
|
|
cannot run without these optimizations.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="MyLogFileContai3b468" id=
|
|
"MyLogFileContai3b468"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>My log file contains a message like the following:</b></p>
|
|
<pre class="screen">
|
|
(WW) NVIDIA(GPU-0): Unable to enter interactive mode, because non-interactive
|
|
(WW) NVIDIA(GPU-0): mode has been previously requested. The most common
|
|
(WW) NVIDIA(GPU-0): cause is that a GPU compute application is currently
|
|
(WW) NVIDIA(GPU-0): running. Please see the README for details.
|
|
</pre></td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>This indicates that the X driver was not able to put the GPU in
|
|
interactive mode, because another program has requested
|
|
non-interactive mode. The GPU watchdog will not run, and
|
|
long-running GPU compute programs may cause the X server and OpenGL
|
|
programs to hang. If you intend to run long-running GPU compute
|
|
programs, set the <a href=
|
|
"xconfigoptions.html#Interactive">Interactive</a> option to "off"
|
|
to disable interactive mode.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="blankloginordesktopscreen"
|
|
id="blankloginordesktopscreen"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>I see a blank screen or an error message instead of a login
|
|
screen or desktop session</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Installation or configuration problems may prevent the X server,
|
|
a login/session manager, or a desktop environment from starting
|
|
correctly. If your system is failing to display a login screen, or
|
|
failing to start a desktop session, try the following
|
|
troubleshooting steps:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Make sure that you are using the correct X driver for your
|
|
configuration. Recent X servers will be able to automatically
|
|
select the correct X driver in many cases, but if your X server
|
|
does not automatically select the correct driver, you may need to
|
|
manually configure it. For example, systems with multiple GPUs will
|
|
likely require a PCI BusID in the "Device" section of the X
|
|
configuration file, in order to specify which GPU is to be
|
|
used.</p>
|
|
<p>If you are planning to use NVIDIA GPUs for graphics, you can run
|
|
the <code class="filename">nvidia-xconfig</code> utility to
|
|
automatically generate a simple X configuration file that uses the
|
|
NVIDIA X driver. If you are not using NVIDIA GPUs for graphics
|
|
(e.g. on a server system where displays are driven by an onboard
|
|
graphics controller, and NVIDIA GPUs are used for non-graphical
|
|
computational purposes only), <span class="emphasis"><em>do
|
|
not</em></span> run <code class=
|
|
"filename">nvidia-xconfig</code>.</p>
|
|
</li>
|
|
<li>
|
|
<p>Some recent desktop environments (e.g. GNOME 3, Unity), window
|
|
managers (e.g. mutter, compiz), and session managers (e.g. gdm3)
|
|
require a working OpenGL driver in order to function correctly. In
|
|
addition to making sure that the X server is configured to use the
|
|
correct X driver for your configuration, please ensure that you are
|
|
using the correct OpenGL driver to match your X driver.</p>
|
|
<p>If you are not using NVIDIA GPUs for graphical purposes, try
|
|
installing the driver with the <code class=
|
|
"option">--no-opengl-files</code> option on the installer's command
|
|
line to prevent the installer from overwriting any existing OpenGL
|
|
installation, which may be needed for proper OpenGL functionality
|
|
on whichever graphics controller is to be used on the system.</p>
|
|
</li>
|
|
<li>
|
|
<p>Some desktop environments (e.g. GNOME 3, Unity) and window
|
|
managers (e.g. mutter) do not properly support multiple X screens,
|
|
leaving you with a blank screen displaying only a cursor on the
|
|
non-primary X screen. If you encounter such a problem, try
|
|
configuring X with a single X screen, or switching to a different
|
|
desktop environment or window manager.</p>
|
|
</li>
|
|
<li>
|
|
<p>Desktop environments, window managers, and session managers that
|
|
require OpenGL typically also require the X Composite extension. If
|
|
you have disabled the Composite extension, either explicitly, or by
|
|
enabling a feature that is not compatible with it, try re-enabling
|
|
the extension (possibly by disabling any incompatible features). If
|
|
you are unable to satisfy your desired use case with the Composite
|
|
extension enabled, try switching to a different desktop
|
|
environment, window manager, and/or session manager that does not
|
|
require Composite.</p>
|
|
</li>
|
|
<li>
|
|
<p>Check the X log (e.g. <code class=
|
|
"filename">/var/log/Xorg.0.log</code>) for additional errors not
|
|
covered above. Warning or error messages in the log may highlight a
|
|
specific problem that can be fixed with a configuration
|
|
adjustment.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="settingsoverridden" id=
|
|
"settingsoverridden"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>The display settings I configured in</b> <span><strong class=
|
|
"command">nvidia-settings</strong></span> <b>do not
|
|
persist.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Depending on the type of configuration being performed,
|
|
<span><strong class="command">nvidia-settings</strong></span> will
|
|
save configuration changes to one of several places:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Static X server configuration changes are saved to the X
|
|
configuration file (e.g. <code class=
|
|
"filename">/etc/X11/xorg.conf</code>). These settings are loaded by
|
|
the X server when it starts, and cannot be changed without
|
|
restarting X.</p>
|
|
</li>
|
|
<li>
|
|
<p>Dynamic, user-specific configuration changes are saved to
|
|
<code class="filename">~/.nvidia-settings-rc</code>.
|
|
<span><strong class="command">nvidia-settings</strong></span> loads
|
|
this file and applies any settings contained within. These settings
|
|
can be changed without restarting the X server, and can typically
|
|
be configured through the <span><strong class=
|
|
"command">nvidia-settings</strong></span> command line interface as
|
|
well, or via the RandR and/or NV-CONTROL APIs.</p>
|
|
</li>
|
|
<li>
|
|
<p>User-specific application profiles edited in
|
|
<span><strong class="command">nvidia-settings</strong></span> are
|
|
saved to <code class=
|
|
"filename">~/.nv/nvidia-application-profiles-rc</code>. This file
|
|
is loaded along with the other files in the application profile
|
|
search path by the NVIDIA OpenGL driver when it is loaded by an
|
|
OpenGL application. The driver evaluates the application profiles
|
|
to determine which settings apply to the application. Changes made
|
|
to this configuration file while an application is already running
|
|
will be applied when the application is next restarted. See
|
|
<a href="profiles.html" title=
|
|
"Appendix J. Application Profiles">Appendix J,
|
|
<i>Application Profiles</i></a> for more information about
|
|
application profiles.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
<p>Settings in <code class="filename">~/.nvidia-settings-rc</code>
|
|
only take effect when processed by <span><strong class=
|
|
"command">nvidia-settings</strong></span>, and therefore will not
|
|
be loaded by default when starting a new X session. To load
|
|
settings from <code class="filename">~/.nvidia-settings-rc</code>
|
|
without actually opening the <span><strong class=
|
|
"command">nvidia-settings</strong></span> control panel, use the
|
|
<code class="option">--load-config-only</code> option on the
|
|
<span><strong class="command">nvidia-settings</strong></span>
|
|
command line. <span><strong class="command">nvidia-settings
|
|
--load-config-only</strong></span> can be added to your login
|
|
scripts to ensure that your settings are restored when starting a
|
|
new desktop session.</p>
|
|
<p>Even after <span><strong class=
|
|
"command">nvidia-settings</strong></span> has been run to restore
|
|
any settings set in <code class=
|
|
"filename">~/.nvidia-settings-rc</code>, some desktop environments
|
|
(e.g. GNOME, KDE, Unity, Xfce) include advanced display
|
|
configuration tools that may override settings that were configured
|
|
via <span><strong class="command">nvidia-settings</strong></span>.
|
|
These tools may attempt to restore their own display configuration
|
|
when starting a new desktop session, or when events such as display
|
|
hotplugs, resolution changes, or VT switches occur.</p>
|
|
<p>These tools may also override some types of settings that are
|
|
stored in and loaded from the X configuration file, such as any
|
|
MetaMode strings that may specify the initial display layouts of
|
|
NVIDIA X screens. Although the configuration of the initial
|
|
MetaMode is static, it is possible to dynamically switch to a
|
|
different MetaMode after X has started. This can have the effect of
|
|
making the set of active displays, their resolutions, and layout
|
|
positions as configured in the <span><strong class=
|
|
"command">nvidia-settings</strong></span> control panel appear to
|
|
be ineffective, when in reality, this configuration was active when
|
|
starting X and then overridden later by the desktop
|
|
environment.</p>
|
|
<p>If you believe that your desktop environment is overriding
|
|
settings that you configured in <span><strong class=
|
|
"command">nvidia-settings</strong></span>, some possible solutions
|
|
are:</p>
|
|
<div class="itemizedlist">
|
|
<ul type="disc">
|
|
<li>
|
|
<p>Use the display configuration tools provided as part of the
|
|
desktop environment (e.g. <span><strong class=
|
|
"command">gnome-control-center display</strong></span>,
|
|
<span><strong class=
|
|
"command">gnome-display-properties</strong></span>,
|
|
<span><strong class="command">kcmshell4 display</strong></span>,
|
|
<span><strong class="command">unity-control-center
|
|
display</strong></span>, <span><strong class=
|
|
"command">xfce4-display-settings</strong></span>) to configure your
|
|
displays, instead of the <span><strong class=
|
|
"command">nvidia-settings</strong></span> control panel or the
|
|
<span><strong class="command">xrandr</strong></span> command line
|
|
tool. Setting your desired configuration using the desktop
|
|
environment's tools should cause that configuration to be the one
|
|
which is restored when the desktop environment overrides the
|
|
existing configuration from <span><strong class=
|
|
"command">nvidia-settings</strong></span>. If you are not sure
|
|
which tools your desktop environment uses for display
|
|
configuration, you may be able to discover them by navigating any
|
|
available system menus for "Display" or "Monitor" control
|
|
panels.</p>
|
|
</li>
|
|
<li>
|
|
<p>For settings loaded from <code class=
|
|
"filename">~/.nvidia-settings-rc</code> which have been overridden,
|
|
run <span><strong class="command">nvidia-settings
|
|
--load-config-only</strong></span> as needed to reload the settings
|
|
from <code class="filename">~/.nvidia-settings-rc</code>.</p>
|
|
</li>
|
|
<li>
|
|
<p>Disable any features your desktop environment may have for
|
|
managing displays. (Note: this may disable other features, such as
|
|
display configuration tools that are integrated into the
|
|
desktop.)</p>
|
|
</li>
|
|
<li>
|
|
<p>Use a different desktop environment which does not actively
|
|
manage display configuration, or do not use any desktop environment
|
|
at all.</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<p></p>
|
|
<p>Some systems may have multiple different display configuration
|
|
utilities, each with its own way of managing settings. In addition
|
|
to conflicting with <span><strong class=
|
|
"command">nvidia-settings</strong></span>, such tools may conflict
|
|
with each other. If your system uses more than one tool for
|
|
configuring displays, make sure to check the configuration of each
|
|
tool when attempting to determine the source of any unexpected
|
|
display settings.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="MyDisplaysAreRe45784" id=
|
|
"MyDisplaysAreRe45784"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>My displays are reconfigured in unexpected ways when I plug
|
|
in or unplug a display, or power a display off and then power it on
|
|
again.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>This is a special case of the issues described in <a href=
|
|
"commonproblems.html#settingsoverridden">“The display
|
|
settings I configured in nvidia-settings do not
|
|
persist.”</a>. Some desktop environments which include
|
|
advanced display configuration tools will automatically configure
|
|
the display layout in response to detected configuration changes.
|
|
For example, when a new display is plugged in, such a desktop
|
|
environment may attempt to restore the previous layout that was
|
|
used with the set of currently connected displays, or may configure
|
|
a default layout based upon its own policy.</p>
|
|
<p>On X servers with support for RandR 1.2 or later, the NVIDIA X
|
|
driver reports display hotplug events to the X server via RandR
|
|
when displays are connected and disconnected. These hotplug events
|
|
may trigger a desktop environment with advanced display management
|
|
capabilities to change the display configuration. These changes may
|
|
affect settings such as the set of active displays, their
|
|
resolutions and positioning relative to each other, per-display
|
|
color correction settings, and more.</p>
|
|
<p>In addition to hotplug events generated by connecting or
|
|
disconnecting displays, DisplayPort displays will generate a hot
|
|
unplug event when they power off, and a hotplug event when they
|
|
power on, even if no physical plugging in or unplugging takes
|
|
place. This can lead to hotplug-induced display configuration
|
|
changes without any actual hotplug action taking place.</p>
|
|
<p>Upon suspend, the NVIDIA X driver will incur an implicit VT
|
|
switch. If a DisplayPort monitor is powered off when a VT switch or
|
|
modeset occurs, RandR will forget the configuration of that
|
|
monitor. As a result, the display will be left without a mode once
|
|
powered back on. In the absence of an RandR-aware window manager,
|
|
bringing back the display will require manually configuring it with
|
|
RandR.</p>
|
|
<p>If display hotplug events are resulting in undesired
|
|
configuration changes, try the solutions and workarounds listed in
|
|
<a href="commonproblems.html#settingsoverridden">“The display
|
|
settings I configured in nvidia-settings do not
|
|
persist.”</a>. Another workaround would be to disable the
|
|
NVIDIA X driver's reporting of hotplug events with the <a href=
|
|
"xconfigoptions.html#UseHotplugEvents">UseHotplugEvents</a> X
|
|
configuration option. Note that this option will have no effect on
|
|
DisplayPort devices, which must report all hotplug events to ensure
|
|
proper functionality.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="headlessremotedesktop" id=
|
|
"headlessremotedesktop"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>My remote desktop software doesn't work when no displays are
|
|
attached.</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Some desktop environments or window managers might not function
|
|
correctly if no displays are exposed via the RandR API. When the
|
|
NVIDIA X driver is configured for headless operation, either with
|
|
'Option "AllowEmptyInitialConfiguration"' and no connected
|
|
displays, with 'Option "MetaModes" "NULL"', or with 'Option
|
|
"UseDisplayDevice" "none"', it will not expose any displays via
|
|
RandR.</p>
|
|
<p>To work around software that requires RandR displays on a
|
|
machine that is only intended to be used remotely, you can connect
|
|
a physical display, or configure the X driver to behave as if a
|
|
physical display were connected using the "ConnectedMonitor"
|
|
option. See <a href="xconfigoptions.html" title=
|
|
"Appendix B. X Config Options">Appendix B, <i>X
|
|
Config Options</i></a> for additional information about the
|
|
"ConnectedMonitor" option.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
<div class="qandaset">
|
|
<table border="0" summary="Q and A Set">
|
|
<col align="left" width="1%">
|
|
<tbody>
|
|
<tr class="qandadiv">
|
|
<td align="left" valign="top" colspan="2"><a name="nouveau" id=
|
|
"nouveau"></a>
|
|
<h3 class="title">8.1. Interaction with the Nouveau Driver</h3>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="WhatIsNouveauAnb4938" id=
|
|
"WhatIsNouveauAnb4938"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>What is Nouveau, and why do I need to disable it?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Nouveau is a display driver for NVIDIA GPUs, developed as an
|
|
open-source project through reverse-engineering of the NVIDIA
|
|
driver. It ships with many current Linux distributions as the
|
|
default display driver for NVIDIA hardware. It is not developed or
|
|
supported by NVIDIA, and is not related to the NVIDIA driver, other
|
|
than the fact that both Nouveau and the NVIDIA driver are capable
|
|
of driving NVIDIA GPUs. Only one driver can control a GPU at a
|
|
time, so if a GPU is being driven by the Nouveau driver, Nouveau
|
|
must be disabled before installing the NVIDIA driver.</p>
|
|
<p>Nouveau performs modesets in the kernel. This can make disabling
|
|
Nouveau difficult, as the kernel modeset is used to display a
|
|
framebuffer console, which means that Nouveau will be in use even
|
|
if X is not running. As long as Nouveau is in use, its kernel
|
|
module cannot be unloaded, which will prevent the NVIDIA kernel
|
|
module from loading. It is therefore important to make sure that
|
|
Nouveau's kernel modesetting is disabled before installing the
|
|
NVIDIA driver.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="HowDoIPreventNof36ca" id=
|
|
"HowDoIPreventNof36ca"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>How do I prevent Nouveau from loading and performing a kernel
|
|
modeset?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>A simple way to prevent Nouveau from loading and performing a
|
|
kernel modeset is to add configuration directives for the module
|
|
loader to a file in one of the system's module loader configuration
|
|
directories: for example, <code class=
|
|
"filename">/etc/modprobe.d/</code> or <code class=
|
|
"filename">/usr/local/modprobe.d</code>. These configuration
|
|
directives can technically be added to any file in these
|
|
directories, but many of the existing files in these directories
|
|
are provided and maintained by your distributor, which may from
|
|
time to time provide updated configuration files which could
|
|
conflict with your changes. Therefore, it is recommended to create
|
|
a new file, for example, <code class=
|
|
"filename">/etc/modprobe.d/disable-nouveau.conf</code>, rather than
|
|
editing one of the existing files, such as the popular <code class=
|
|
"filename">/etc/modprobe.d/blacklist.conf</code>. Note that some
|
|
module loaders will only look for configuration directives in files
|
|
whose names end with <code class="filename">.conf</code>, so if you
|
|
are creating a new file, make sure its name ends with <code class=
|
|
"filename">.conf</code>.</p>
|
|
<p>Whether you choose to create a new file or edit an existing one,
|
|
the following two lines will need to be added:</p>
|
|
<pre class="screen">
|
|
blacklist nouveau
|
|
options nouveau modeset=0
|
|
</pre>
|
|
<p>The first line will prevent Nouveau's kernel module from loading
|
|
automatically at boot. It will not prevent manual loading of the
|
|
module, and it will not prevent the X server from loading the
|
|
kernel module; see "How do I prevent the X server from loading
|
|
Nouveau?" below. The second line will prevent Nouveau from doing a
|
|
kernel modeset. Without the kernel modeset, it is possible to
|
|
unload Nouveau's kernel module, in the event that it is
|
|
accidentally or intentionally loaded.</p>
|
|
<p>You will need to reboot your system after adding these
|
|
configuration directives in order for them to take effect.</p>
|
|
<p>If nvidia-installer detects Nouveau is in use by the system, it
|
|
will offer to create such a modprobe configuration file to disable
|
|
Nouveau.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="WhatIfMyInitialea2f5" id=
|
|
"WhatIfMyInitialea2f5"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>What if my initial ramdisk image contains Nouveau?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Some distributions include Nouveau in an initial ramdisk image
|
|
(henceforth referred to as "initrd" in this document, and sometimes
|
|
also known as "initramfs"), so that Nouveau's kernel modeset can
|
|
take place as early as possible in the boot process. This poses an
|
|
additional challenge to those who wish to prevent the modeset from
|
|
occurring, as the modeset will occur while the system is executing
|
|
within the initrd, before any directives in the module loader
|
|
configuration files are processed.</p>
|
|
<p>If you have an initrd which loads the Nouveau driver, you will
|
|
additionally need to ensure that Nouveau is disabled in the initrd.
|
|
In most cases, rebuilding the initrd will pick up the module loader
|
|
configuration files, including any which may disable Nouveau.
|
|
Please consult your distribution's documentation on how to rebuild
|
|
the initrd, as different distributions have different tools for
|
|
building and modifying the initrd. Some popular distro initrd tools
|
|
include: <code class="filename">dracut</code>, <code class=
|
|
"filename">mkinitrd</code>, and <code class=
|
|
"filename">update-initramfs</code>.</p>
|
|
<p>Some initrds understand the <code class=
|
|
"option">rdblacklist</code> parameter. On these initrds, as an
|
|
alternative to rebuilding the initrd, you can add the option
|
|
<code class="option">rdblacklist=nouveau</code> to your kernel's
|
|
boot parameters. On initrds that do not support <code class=
|
|
"option">rdblacklist</code>, it is possible to prevent Nouveau from
|
|
performing a kernel modeset by adding the option <code class=
|
|
"option">nouveau.modeset=0</code> to your kernel's boot parameters.
|
|
Note that <code class="option">nouveau.modeset=0</code> will
|
|
prevent a kernel modeset, but it may not prevent Nouveau from being
|
|
loaded, so rebuilding the initrd or using <code class=
|
|
"option">rdblacklist</code> may be more effective than using
|
|
<code class="option">nouveau.modeset=0</code>.</p>
|
|
<p>Any changes to the default kernel boot parameters should be made
|
|
in your bootloader's configuration file(s), so that the options get
|
|
passed to your kernel every time the system is booted. Please
|
|
consult your distribution's documentation on how to configure your
|
|
bootloader, as different distributions use different bootloaders
|
|
and configuration files.</p>
|
|
</td>
|
|
</tr>
|
|
<tr class="question">
|
|
<td align="left" valign="top"><a name="HowDoIPreventTh1f6a6" id=
|
|
"HowDoIPreventTh1f6a6"></a></td>
|
|
<td align="left" valign="top">
|
|
<p><b>How do I prevent the X server from loading Nouveau?</b></p>
|
|
</td>
|
|
</tr>
|
|
<tr class="answer">
|
|
<td align="left" valign="top"></td>
|
|
<td align="left" valign="top">
|
|
<p>Blacklisting Nouveau will only prevent it from being loaded
|
|
automatically at boot. If an X server is started as part of the
|
|
normal boot process, and that X server uses the Nouveau X driver,
|
|
then the Nouveau kernel module will still be loaded. Should this
|
|
happen, you will be able to unload Nouveau with `modprobe -r
|
|
nouveau` after stopping the X server, as long as you have taken
|
|
care to prevent it from doing a kernel modeset; however, it is
|
|
probably better to just make sure that X does not load Nouveau in
|
|
the first place.</p>
|
|
<p>If your system is not configured to start an X server at boot,
|
|
then you can simply run the NVIDIA driver installer after
|
|
rebooting. Otherwise, the easiest thing to do is to edit your X
|
|
server's configuration file so that your X server uses a
|
|
non-modesetting driver that is compatible with your card, such as
|
|
the <code class="systemitem">vesa</code> driver. You can then stop
|
|
X and install the driver as usual. Please consult your X server's
|
|
documentation to determine where your X server configuration file
|
|
is located.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
<div class="navfooter">
|
|
<hr>
|
|
<table width="100%" summary="Navigation footer">
|
|
<tr>
|
|
<td width="40%" align="left"><a accesskey="p" href=
|
|
"faq.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=
|
|
"knownissues.html">Next</a></td>
|
|
</tr>
|
|
<tr>
|
|
<td width="40%" align="left" valign="top">
|
|
Chapter 7. Frequently Asked Questions </td>
|
|
<td width="20%" align="center"><a accesskey="h" href=
|
|
"index.html">Home</a></td>
|
|
<td width="40%" align="right" valign="top">
|
|
Chapter 9. Known Issues</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</body>
|
|
</html>
|