The Closed-Source NVIDIA Linux Driver Is Incompatible With Linux 5.9 And Support Won't Come Until Mid-November

From LinuxReviews
Jump to navigationJump to search
Nvidia-settings.png

The latest Nvidia graphics driver for Linux, v455.28, won't work with the latest Linux kernel. This may be due to an intentional change on the Linux kernel side that blocks third party shims from using GPL-only symbols. Regardless of the root cause, anyone using Nvidia on Linux should stick with Linux 5.8 for now. Nvidia has promised that an updated driver compatible with Linux 5.9 will arrive mid-November.

written by 林慧 (Wai Lin) 2020-09-22 - last edited 2020-10-22. © CC BY


Linus Torvalds sharing some thoughts about Nvidia on June 14th, 2012.

Nvidia is the only PC graphics vendor that does not offer any free software graphics drivers for GNU/Linux users. There is a independently created free software driver called Nouveau available but it is, in practice, absolute garbage. The driver itself isn't garbage, but the lack of any usable firmware with basic features like clocking and power management makes it a dismal experience. Those who want to use Nvidia hardware on Linux are in practice forced to use Nvidia's binary blob driver.

Using the closed-source proprietary software driver from Nvidia used to be a total nightmare on Linux. It would only work with Xorg version X and kernel version Y and if you were screwed if you upgraded either of those. That's been less of a problem in recent years. now we're once again back to Nvidia's driver dictating what kernel versions those who own their hardware can and can't use.

Nvidia story regarding their drivers incompatibility with Linux 5.9 as shared in an "advisory" in their forum is:

"Due to an incompatibility issue, we advise customers to defer updating to Linux Kernel 5.9+ until mid-November when an NVIDIA Linux GPU driver update with Kernel 5.9+ support is expected to be available."

An advisory from something called "Arch" says that the Nvidia driver will partially work with Linux 5.9. Their advisory says that basic graphics will work while more advanced features like OpenCL and CUDA are broken:

"nvidia is currently partially incompatible with linux >= 5.9. While graphics should work fine, CUDA, OpenCL, and likely other features are broken. Users who've already upgraded and need those features are advised to switch to the linux-lts kernel for the time being until a fix for nvidia is available."

Arch Linux advisory published October 21st, 2020
Kernel developer Jessica-Yu.jpg
Kernel developer Jessica Yu.

The reason the Nvidia driver won't work with Linux 5.9 may be due to an intentional kernel-side change made with the explicit purpose of preventing non-GPL binary blob drivers from using GPL symbols. Using non-GPL code with GPL symbols has always been against the rules. Those rules were, prior to Linux 5.9, not really enforced. Most proprietary drivers got around that rule by putting a "shim" between the kernel and the driver. OpenSUSE's kernel developer Jessica Yu got Linus Torvalds to merge a patch by Christoph Hellwig which prevents that:

"Summary of modules changes for the 5.9 merge window:

  • Have modules that use symbols from proprietary modules inherit the TAINT_PROPRIETARY_MODULE taint, in an effort to prevent GPL shim modules that are used to circumvent _GPL exports. These are modules that claim to be GPL licensed while also using symbols from proprietary modules. Such modules will be rejected while non-GPL modules will inherit the proprietary taint.
  • Module export space cleanup. Unexport symbols that are unused outside of module.c or otherwise used in only built-in code."

It's hard to say if these changes are good or bad. They are great from a moral and ethical perspective. They are not that great for a end-user perspective since it makes it harder to use binary blob drivers with Linux 5.9+. Nvidia expects to have an updated Linux driver available in the middle of November, so this change is apparently not something that makes it impossible to use their driver with future Linux kernels.

Current, and historical, Nvidia drivers are available at download.nvidia.com/XFree86/Linux-x86_64/. We advice that you bookmark that location as it's a ftp-style list of folders that are named by version. It's much easier to navigate than Nvidia's main website and it will typically work when Nvidia's main website is down or overloaded.

5.00
(one vote)


avatar

Gnu4ever

14 months ago
Score 0++
Consider this next time you're shopping for hardware. F.ck Novidya
avatar

G8sqh

14 months ago
Score 0++

Understand that a fair sized community in the machine learning/computer vision world uses Nvidia's CUDA - it is simply more advanced than the alternatives, and this group also tended to use Linux. ML/CV is a rapidly growing field, with a growing interest in smaller (non-Intel) machines (e.g. Nvidia's Jetson series)

I assume the kernel developers have concluded that losing ML/CV development to Windows is an acceptable cost in preserving the purity of GPL v2. Strange decision, but I'm sure they will one day give their reasons
Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.