Nvidia driver repository updated

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 nvidia.ko and nvidia-uvm.ko modules.

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.

Re-enabling Steam Runtime in the Steam package

Due to some issues with libraries in an upcoming Steam client update, I’m forced to re-enable the Steam runtime (Ubuntu libraries) in Fedora’s Steam package. This means that all dependencies are no longer needed but the size of the Steam client can get ridiculously high on the system on where it is installed. For comparison, see the difference in size for an installation that uses the Steam runtime and one that doesn’t (the SteamApps folder is the folder where applications/games are installed):

$ du -hs --exclude=SteamApps
1.3G
$ du -hs --exclude=SteamApps --exclude=steam-runtime
992M

If we could run it without the Steam runtime enabled and also avoid downloading the runtime archives; then the client would weight nearly 500 mb less:

$ du -hs --exclude=SteamApps --exclude=steam-runtime*
805M

Let’s hope that in the future Valve will not mandate the use of Ubuntu libraries for long and will standardize on a specific set of common libraries.

I’ve updated the repository page with updated instruction and pushed updated packages both to the repository and in RPMFusion. Starting from package steam-1.0.0.43-9 the Steam runtime is left at the default value (enabled).

Steam is now in RPMFusion!

steamThe Steam package is now available in the RPMFusion repositories. It is currently in the updates-testing repository, but it can be installed anyway directly if you have the RPMFusion repositories enabled.

http://download1.rpmfusion.org/nonfree/fedora/updates/testing/19/i386/

The package is currently 32 bit only, but it can be installed easily also on a 64 bit system. In fact, I’m currently running nearly 70 games on my 64 bit system. For details on the package, look at my now-obsolete Steam repository page.

To perform the installation today, make sure to have both RPMFusion free and non free repositories enabled and perform the following command as root:

yum -y --enablerepo=rpmfusion-nonfree-updates-testing install steam

The Steam package has some profiles enabled to avoid using the Ubuntu Steam Runtime, which produces graphical artifacts and sound issues when run in Fedora. To avoid any problems, please log out and login again or reboot the system prior to using Steam for the first time!

Steam games require the S3 Texture compression library for running on Open Source drivers, and the package already takes care of installing it for you.

Steam and Oculus Rift

oculus

I’ve just updated the Steam package to the latest release (1.0.0.43) and in addition to the Steam controller support there are now udev rules for the Oculus Rift! This is the changelog content:

$ cat /usr/share/doc/steam-1.0.0.43/changelog | head -5
steam (1.0.0.43) precise; urgency=low

  * Update udev rules to support front panel and Oculus Rift
  * Demote jockey-common dependency to Recommends

And this is the content of the UDEV rules’ file:

$ cat /usr/lib/udev/rules.d/99-steam-controller-perms.rules
#USB devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="c251", ATTRS{idProduct}=="2202", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="2202", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1101", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1051", MODE="0666"
# Oculus HID Sensor naming and permissioning
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="2833", MODE="0666"

Would you consider buying an Oculus if Steam games start to support it?

Some updates to repositories

I’ve pushed some updates for the repositories.

Cdrtools now ship with shared libraries enabled and a fix for Kernel Capabilities on RHEL/CentOS 6 and Fedora distributions. There was a regression introduced in the packaging of version 3.01a17 which was disabling capabilities on the binaries. Along with this the SPEC file was simplified and compile options were aligned with current policies.

Skype has been updated with some rpmlint fix and now introduce the PULSE_LATENCY_MSEC=30 environment setting for Fedora 20 systems and Purple Skype plugin is now available for both i686 and x86_64.

FreeBSD 10.0-CURRENT X.org repository (amd64)

I’ve just pushed a repository to the site that contains the very latest X.org packages for FreeBSD 10.0. All packages have been built with poudriere. The repository contains the following ports:

x11/xorg
x11/xorg-minimal
x11/nvidia-driver
x11/nvidia-settings
x11/nvidia-xconfig
multimedia/vdpauinfo
multimedia/libva
ports-mgmt/poudriere-devel

It should be everything required for running an (experimental) updated X.org stack on FreeBSD 10. Packages are built with the following /etc/make.conf settings:

SVN=/usr/bin/svnlite
SVN_UPDATE=yes
WITH_NEW_XORG=yes
WITH_KMS=yes
WITH_GALLIUM=yes
MALLOC_PRODUCTION=yes

The ports tree used to build all packages is generated from this:

  • Updated ports tree at 24th September 2013.
  • Niclas Zeising’s patch revision of 24th September 2013 that updates all the Mesa stack and enables experimental devd configuration of devices for FreeBSD 10.
  • Updated Nvidia driver and utilities at version 325.15.

Please note that the repository is for amd64 platforms only.

To enable the repository just add/replace this line to your current PKGNG repository configuration:

packagesite: https://negativo17.org/freebsd/xorg/

Currently, the proprietary Nvidia driver make my system crash on me with the following messages in the log; any hint for solving it would be greatly appreciated:

kernel: nvidia0:  on vgapci0
kernel: vgapci0: child nvidia0 requested pci_enable_io
kernel: vgapci0: child nvidia0 requested pci_enable_io
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
syslogd: kernel boot file is /boot/kernel/kernel
kernel: NVRM: RmInitAdapter failed! (0x26:0xb:1179)
kernel: nvidia0: NVRM: rm_init_adapter() failed!
kernel: 
kernel: 
kernel: Fatal trap 12: page fault while in kernel mode
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
kernel: ACPI Warning: \_SB_.PCI0.AGP_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20130823/nsarguments-97)
syslogd: kernel boot file is /boot/kernel/kernel
kernel: NVRM: RmInitAdapter failed! (0x26:0xb:1179)
kernel: nvidia0: NVRM: rm_init_adapter() failed!
kernel: 
kernel: 
kernel: Fatal trap 12: page fault while in kernel mode
kernel: cpuid = 1; apic id = 01
kernel: fault virtual address   = 0x8
kernel: fault code              = supervisor read data, page not present
kernel: instruction pointer     = 0x20:0xffffffff81d151f4
kernel: stack pointer           = 0x28:0xfffffe01198f1590
kernel: frame pointer           = 0x28:0xfffffe01198f1670
kernel: code segment            = base 0x0, limit 0xfffff, type 0x1b
kernel: = DPL 0, pres 1, long 1, def32 0, gran 1
kernel: processor eflags        = interrupt enabled, resume, IOPL = 3
kernel: current process         = 1425 (Xorg)
kernel: trap number             = 12
kernel: panic: page fault
kernel: cpuid = 1
kernel: KDB: stack backtrace:
kernel: #0 0xffffffff808ea690 at kdb_backtrace+0x60
kernel: #1 0xffffffff808b2245 at panic+0x155
kernel: #2 0xffffffff80c8877a at trap_fatal+0x37a
kernel: #3 0xffffffff80c88a47 at trap_pfault+0x2b7
kernel: #4 0xffffffff80c88206 at trap+0x5e6
kernel: #5 0xffffffff80c714f2 at calltrap+0x8
kernel: #6 0xffffffff81d322a3 at nvidia_dev_dtor+0x23
kernel: #7 0xffffffff807acc29 at devfs_fpdrop+0xa9
kernel: #8 0xffffffff807ad5c2 at devfs_open+0x142
kernel: #9 0xffffffff80d40a52 at VOP_OPEN_APV+0x92
kernel: #10 0xffffffff8095a576 at vn_open_vnode+0x216
kernel: #11 0xffffffff8095a188 at vn_open_cred+0x358
kernel: #12 0xffffffff80953801 at kern_openat+0x261
kernel: #13 0xffffffff80c89067 at amd64_syscall+0x357
kernel: #14 0xffffffff80c717db at Xfast_syscall+0xfb

No more secondary architectures

I was notified I can not use Fedora Koji builders for doing personal builds of Fedora forbidden items. This means I have to drop the following architectures from the repositories:

  • CentOS/RHEL 5 – ppc
  • CentOS/RHEL 5 – ppc64
  • Fedora 20 – armv7hl

I don’t have any hardware (or access) to any system like those; so my only chance is to drop support for them. All those architectures are bound to disappear from the repositories with the next round of updates.