I’ve updated the Nvidia driver repository to the latest 331.20 release. Since this release has been promoted by Nvidia to a long lived branch release; also the CentOS/RHEL 6 repository has been updated to this version. This means all currently supported Fedora releases have the same driver version as in CentOS/RHEL.
This driver release brings the usual assortment of fixes and features; but the most important things are the additions of the Unified Video Memory kernel module, the “private” Nvidia OpenGL Framebuffer Compression libraries and the packaging introduction of the multiple kernel modules as an alternative to the single module; as specified by the driver documentation.
Starting from the less important things, the Nvidia OpenGL Framebuffer Compression libraries have been packaged into a separate package as their usage is very specific and according to the documentation their usage is documented only with specific approved Nvidia partners. I’m pretty sure we will not miss these libraries on our systems.
Kernel module packages now contain/generate also the
nvidia-uvm.ko kernel module and the multiple
nvidia.ko modules that can be used to assign separate kernel module instances to separate GPU devices.
The resulting install of the kernel module packages ends up like this:
$ ls -laghs total 127M 4.0K drwxr-xr-x. 2 root 4.0K Nov 7 20:20 . 4.0K drwxr-xr-x. 6 root 4.0K Nov 7 20:20 .. 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia0.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia1.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia2.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia3.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia4.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia5.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia6.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia7.ko 12K -rw-r--r--. 1 root 11K Nov 7 20:20 nvidia-frontend.ko 15M -rw-r--r--. 1 root 15M Nov 7 20:20 nvidia.ko 48K -rw-r--r--. 1 root 48K Nov 7 20:20 nvidia-uvm.ko $ du -hs . 127M .
As you can see, the space used by these modules is huge; and they are only used in specific setups. I’m planning to make the multiple kernel modules in an optional package that can be installed separately from the main
Currently DKMS and AKMODs packages have these modules enabled; but the binary kMOD package for CentOS/RHEL 6 does not contain them. If I try to integrate them into the package, the kABI list of symbols is not exported correctly and I don’t know why. All the numbered modules are very similar (each one contains the 12 mb binary object that is included in the normal module) and for some reason this screws up the package assembly. In detail, this is the binary kMOD package that does not contain the numbered modules:
$ rpm -qp --requires kmod-nvidia-331.20-1.el6.x86_64.rpm rpmlib(VersionedDependencies) <= 3.0.3-1 nvidia-driver = 2:331.20 /sbin/depmod /sbin/depmod /bin/sh /bin/sh /bin/sh rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 kernel(__free_pages) = 0xffd35acd kernel(__init_rwsem) = 0xa2b8a2ba kernel(__list_add) = 0x0343a1a8 kernel(__lock_page) = 0xda778235 kernel(__stack_chk_fail) = 0xf0fdf6cb kernel(_cond_resched) = 0xa1c76e0a kernel(alloc_chrdev_region) = 0x29537c9e kernel(alloc_pages_current) = 0x4f3bf785 kernel(cdev_add) = 0xa6d1bdca kernel(cdev_del) = 0x42e80c19 kernel(cdev_init) = 0xc45a9f63 kernel(copy_from_user) = 0x3302b500 kernel(copy_to_user) = 0x85f8a266 kernel(down_read) = 0xb4b0ee4e kernel(down_write) = 0x45d55543 kernel(find_vma) = 0x38e4e189 kernel(get_page) = 0xe46d84e9 kernel(kmem_cache_alloc) = 0xee065ced kernel(kmem_cache_create) = 0xe4a639f8 kernel(kmem_cache_destroy) = 0x806e575f kernel(kmem_cache_free) = 0x7329e40d kernel(list_del) = 0x0521445b kernel(mcount) = 0xb4390f9a kernel(memset) = 0xde0bdcff kernel(module_layout) = 0x14522340 kernel(per_cpu__current_task) = 0x4f1939c7 kernel(printk) = 0xea147363 kernel(unmap_mapping_range) = 0x310b6f21 kernel(unregister_chrdev_region) = 0x7485e15e kernel(up_read) = 0xe23d7acb kernel(up_write) = 0xd851af78 kernel(vfree) = 0x999e8297 kernel(vm_insert_page) = 0x44986362 kernel(vmalloc) = 0xd6ee688f kernel(warn_slowpath_null) = 0x16305289 ksym(nvUvmInterfaceDeRegisterUvmOps) = 0x2103c3ad ksym(nvUvmInterfaceRegisterUvmOps) = 0x9b2a1db7 rpmlib(PayloadIsXz) <= 5.2-1
And this is the binary kMOD package that does contain them. As you can see the symbols are missing. This happens independently of the fact that the base module and / or the UVM module are included in the same package.
$ rpm -qp --requires kmod-nvidia-331.20-1.el6.x86_64.rpm rpmlib(VersionedDependencies) <= 3.0.3-1 nvidia-driver = 2:331.20 /sbin/depmod /sbin/depmod /bin/sh /bin/sh /bin/sh rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 kernel(__per_cpu_offset) = 0x32047ad5 kernel(__register_chrdev) = 0xfa0d49c7 kernel(__tracepoint_module_get) = 0xacdeb154 kernel(__unregister_chrdev) = 0x6bc3fbc0 kernel(create_proc_entry) = 0x6d6b15ff kernel(down) = 0x748caf40 kernel(mcount) = 0xb4390f9a kernel(module_layout) = 0x14522340 kernel(module_put) = 0xcbd81171 kernel(per_cpu__cpu_number) = 0x9629486a kernel(printk) = 0xea147363 kernel(remove_proc_entry) = 0x1a6d6e4f kernel(up) = 0x3f1899f1 rpmlib(PayloadIsXz) <= 5.2-1
RPM spec files are in the same place, so if you have any hint on how to fix it, please drop me a note.
5 thoughts to “Nvidia driver repository updated”
I’m trying to install dkms-nvidia and it doesn’t work. Looks like it can’t build nvidia-uvm.ko module. I saw you are using dkms-nvidia. Do you still use it? It works for you?
PS. akmod-nvidia works fine.
Oops, I didn’t tell. I use Fedora 19 x64.
I made a stupid mistake in the
dkms.conffile that is shipped inside the
dkms-nvidia package. An update is coming in a few moments.
Thanks for reporting!
Thank you! Could you explain, what’s a difference between akmod and dkms? What’s better to use and why do you use dkms-nvidia instead of akmod?
Differences are pretty big and comments here are not the best place to explain it in length. If you look on Google there are a lot of pages explaining differences; the most notable ones are that DKMS is widely used in the Enterprise and aKMODs are Fedora only.