331.20 WHQL long-term driver discussion

NVIDIA has finally released a driver which fixes the incompatibility with recent Linux kernels along with a whole lot of new features and bug fixes. Thanks a lot!

Please, report your experience, and new bugs not present in previous drivers (325.15 and earlier).

The long-term bug bug crusher.
I now have my desktop back.
Great work NVIDIA & thank you.

Failed to install and got error report like this

ERROR: Neither the '/lib/modules/3.12.0/build/include/linux/version.h' nor the '/lib/modules/3.12.0/build/include/generated/uapi/linux/version.h' kernel header file exists.  The most likely reason for this is that the kernel source files in '/lib/modules/3.12.0/build' have not been configured.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

I found the “build” directory is linked to the source where I build kernel 3.12.
However I did a “make mrproper” to free some disk space,I am wondering is it necessary to keep all the stuff when build a kernel from source even after installation?

marvinH@

# make modules_prepare

will resolve your problem.

Thanks,it did resolve this problem,but the installation ran into something new and here is the error report

ERROR: Unable to load the kernel module 'nvidia.ko'.  This happens most frequently when this kernel module was built against the wrong or improperly configured kernel sources, with a version of gcc that differs from the one used to build the target kernel, or if a driver such as rivafb, nvidiafb, or nouveau is present and prevents the NVIDIA kernel module from obtaining ownership of the NVIDIA graphics device(s), or no NVIDIA GPU installed in this system is supported by this NVIDIA Linux graphics driver release.

Please see the log entries 'Kernel module load error' and 'Kernel messages' at the end of the file '/var/log/nvidia-installer.log' for more information.

Anyway,I am going to rebuild a kernel and see if it works.

Anyway, if you’re not good at compiling your own kernels, maybe you should use the one supplied by your distro ;-)

Thanks,but problem solved.Turns out I forgot to disable useless nvidia modules within the kernel source,and it is strange that old kernel config works fine with 331.17 and older version

Installation failed during building unified memory kernel module

....331.20/kernel/uvm/nvidia_uvm_lite.c: In function ‘uvmlite_open’:
....331.20/kernel/uvm/nvidia_uvm_lite.c:1326:37: error: incompatible types when assigning to type ‘uid_t’ from type ‘kuid_t’

also i got error

ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.

but this error doesnt abort installation. I have kernel 3.12 from repo (opensuse/kernel/stable)

Try this untested patch:

diff -ur a/nvidia_uvm_common.c b/nvidia_uvm_common.c
--- a/nvidia_uvm_common.c       2013-10-31 04:15:05.000000000 +0400
+++ b/nvidia_uvm_common.c       2013-11-07 00:20:35.000000000 +0400
@@ -324,5 +324,5 @@
 
 module_init(uvm_init);
 module_exit(uvm_exit);
-MODULE_LICENSE("MIT");
+MODULE_LICENSE("GPL");
 MODULE_INFO(supported, "external");
diff -ur a/nvidia_uvm_linux.h b/nvidia_uvm_linux.h
---    a/nvidia_uvm_linux.h        2013-10-31 04:15:06.000000000 +0400
+++ b/nvidia_uvm_linux.h        2013-11-07 00:19:42.000000000 +0400
@@ -390,10 +390,9 @@
 //
 //
 #if defined(NV_TASK_STRUCT_HAS_CRED)
-#define NV_CURRENT_EUID() \
-    (((typeof(*current->cred) __force __kernel *)current->cred)->euid)
+#define NV_CURRENT_EUID()  from_kuid(current_user_ns(), current->cred->euid)
 #else
 #define NV_CURRENT_EUID() (current->euid)
#endif

Good day,

I have one question: suooprts this release of driver Nvidia Geforce 210 (GT218) cards? As I see, Geforce 210 is not listed in supported products.

@circulus

Yes, it’s fully supported.

The current unified NVIDIA drivers support every GPU starting from the 8xxx series.

@birdie

Thanks for reply, on web page is not listed, but in README (as I see later) is listed.

@birdie Thanks for the patch. It compiled and loaded the NVIDIA kernel and unified kernel modules properly on openSUSE 13.1 with kernel 3.12.0-5.g79e7a03-desktop from opensuse HEAD repository.

build for me without patch in 3.12.0 :S

Strangely I didn’t need this patch either:

ld -r -m elf_i386 -T /usr/src/kernels/linux-3.12/scripts/module-common.lds --build-id  -o /tmp/selfgz2125/NVIDIA-Linux-x86-331.20/kernel/uvm/nvidia-uvm.
ko /tmp/selfgz2125/NVIDIA-Linux-x86-331.20/kernel/uvm/nvidia-uvm.o /tmp/selfgz2125/NVIDIA-Linux-x86-331.20/kernel/uvm/nvidia-uvm.mod.o
   make[1]: Leaving directory `/usr/src/kernels/linux-3.12'

I’m wondering why people are bothering to compile nvidia-uvm.ko, is it required for normal graphics use?
I didn’t include it in the F20 rpmfusion package for now and it works great.

331.20 propr. driver from NVIDIA auto compiles and installs nvidia-uvm.ko. Didn’t check to see if it can be skipped with an option or something.

@birdie, maybe problem is only on x86-64 ?

i use 64bits, build without patch. make lots of warnings, but build fine

What distro do you use ?

I installed the driver with one kernel module with out a problem in that the process worked. Then I tried to install the driver with 2 kernel modules and it bombed. I should point out that I have:-
a). 2 x GTX570
b). Fedora 19 kernel 3.11.7-200.fc19.x86_64

At the end of the nvidia-installer.log file I read the following:-

→ done.
→ Kernel module compilation complete.
→ Unable to determine if Secure Boot is enabled: No such file or directory
ERROR: Unable to load the kernel module ‘nvidia-uvm.ko’. This happens most frequently when this kernel module was built against the wrong or improperly configured kernel sources, with a version of gcc that differs from the one used to build the target kernel, or if a driver such as rivafb, nvidiafb, or nouveau is present and prevents the NVIDIA kernel module from obtaining ownership of the NVIDIA graphics device(s), or no NVIDIA GPU installed in this system is supported by this NVIDIA Linux graphics driver release.

→ Kernel module load error: No such file or directory
→ Kernel messages:
[ 18.770372] systemd-logind[380]: Watching system buttons on /dev/input/event0 (Power Button)
[ 21.075101] forcedeth 0000:00:08.0: irq 46 for MSI/MSI-X
[ 21.075170] forcedeth 0000:00:08.0 eth0: MSI enabled
[ 21.083223] forcedeth 0000:00:09.0: irq 47 for MSI/MSI-X
[ 21.083287] forcedeth 0000:00:09.0 eth1: MSI enabled
[ 21.083511] forcedeth 0000:00:09.0 eth1: no link during initialization
[ 21.084041] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[ 21.860374] Bluetooth: Core ver 2.16
[ 21.860428] NET: Registered protocol family 31
[ 21.860433] Bluetooth: HCI device and connection manager initialized
[ 21.860451] Bluetooth: HCI socket layer initialized
[ 21.860459] Bluetooth: L2CAP socket layer initialized
[ 21.860472] Bluetooth: SCO socket layer initialized
[ 22.035598] Bluetooth: BNEP (Ethernet Emulation) ver 1.3
[ 22.035609] Bluetooth: BNEP filters: protocol multicast
[ 22.035628] Bluetooth: BNEP socket layer initialized
[ 32.067299] Adjusting hpet more than 11% (2986109102 vs 2979633561)
[ 133.321855] [drm] Module unloaded
[ 220.900539] vgaarb: device changed decodes: PCI:0000:02:00.0,olddecodes=none,decodes=none:owns=none
[ 220.900927] vgaarb: device changed decodes: PCI:0000:07:00.0,olddecodes=none,decodes=none:owns=none
[ 220.902081] [drm] Initialized nvidia-drm 0.0.0 20130102 for 0000:02:00.0 on minor 0
[ 220.902299] [drm] Initialized nvidia-drm 0.0.0 20130102 for 0000:07:00.0 on minor 1
[ 220.902324] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 331.20 Wed Oct 30 17:43:35 PDT 2013
[ 220.906448] nvidia_uvm: Unknown symbol nvUvmInterfaceDeRegisterUvmOps (err 0)
[ 220.906487] nvidia_uvm: Unknown symbol nvUvmInterfaceRegisterUvmOps (err 0)
ERROR: Installation has failed.

Can anyone shed any light on the matter?