The day has finally come: NVIDIA IS PUBLISHING THEIR LINUX GPU KERNEL MODULES AS OPEN-SOURCE! To much excitement and a sign of the times, the embargo has just expired on this super-exciting milestone that many of us have been hoping to see for many years. Over the past two decades NVIDIA has offered great Linux driver support with their proprietary driver stack, but with the success of AMD’s open-source driver effort going on for more than a decade, many have been calling for NVIDIA to open up their drivers. Their user-space software is remaining closed-source but as of today they have formally opened up their Linux GPU kernel modules and will be maintaining it moving forward. Here’s the scoop on this landmark open-source decision at NVIDIA.
I can’t believe this is happening.
NVIDIA is open sourcing all of its kernel driver modules, for both enterprise stuff and desktop hardware, under both the GPL and MIT license, it will available on Github, and NVIDIA welcomes community contributions where they make sense. This isn’t just throwing the open source community a random bone – this looks and feels like the real deal. They’re even aiming to have their open source driver mainlined into the Linux kernel once API/ABI has stabalised.
This is a massive win for the open source community, and I am incredibly excited about what this will mean for the future of the Linux desktop.
All it took was a security breach 😉
Why would you think this is in any way related to that?
Ah… The major component that is missing was the locked clocks.
They have blocked open source drivers by disabling 3D clocks by default. The only way to get more than ~10% out of your modern GPU was using a proprietary binary blob.
From https://nouveau.freedesktop.org/:
Hopefully they won’t do the same shenanigans in the future.
It means that Nouveau just got a firmware they can probably use.
An important bit of fine print is that only Turing (RTX 20 series) and newer GPUs are supported, which means the vast installed base of GTX 10 GPUs will have to keep relying on the proprietary driver.
My guess is that they are coming out with something radically new which will make this obsolete. If other companies have access to their whole stack it would mean they can backwards engineer things far more than a lot of people, even programmers realize. It’s amazing what can be done and gleaned if you know enough in the first place.
I’ve done it with totally different products that were trying to make us pay for something that was highly overpriced and my company wasn’t going to pay so they asked me to see what I could do. I didn’t have the source code, just documentation which told me more than they think it did. I ended up saving my company, net after taking into account my pay, over $300,000 USD and did I get a bonus of any kind? No. Just the fun (and it was fun) figuring out how to get around the gate.
The best part was that it was totally legal because I didn’t use any of their IP.
Sabon,
More power to you. No reason we should have to pay someone else if they’re ripping us off and we can easily do it ourselves!
I’d be careful about bragging that you used their documentation though, their lawyers might be able to make a case that your work is a derivative of their IP, which technically includes documentation. Heck even creating a new implementation of a published interface can put us at risk now. Most reasonable programmers agree it is completely fair game, but lawyers and judges are neither reasonable nor programmers. 🙁
This is awesome. This should help solve many problems around both the support and breakages that nvidia’s official drivers have caused. The article claims only the kernel source is being released as FOSS…
So it is technically incomplete without the userspace tools and libraries. It isn’t clear to me how much can really be done without the userspace tools, like nvidia’s compiler and runtime, but at least having the kernel bits be open source is good news. I imagine that anyone wanting to use the kernel driver without nvidia’s proprietary userspace code, would end up leaning heavily on the nouveaux code. In my past tests though nouveaux dramatically under-performed nvidia’s official drivers.
Previously nvidia’s proprietary licenses stipulated that non-enterprise cards (like their GTX/RTX class cards) were prohibited in data centers (except that nvidia decided blockchain applications should get an explicit exception to the ban on consumer cards in data centers, yuck)…
https://www.coinwire.com/nvidia-exempts-cryptocurrency-mining-from-its-ban-of-cards-software-in-data-centers
Now that the driver will be licensed MIT/GPLv2, they can’t impose restrictions like that anymore with the kernel code, just userspace tools.
> Now that the driver will be licensed MIT/GPLv2, they can’t impose restrictions like that anymore with the kernel code, just userspace tools.
And in the massive 30mb firmware that needs to be loaded on the RISC-V cpu.
And?
Serafean is implying that the license restrictions would apply to the firmware even if it doesn’t apply to the MIT/GPLv2 drivers. It’s a valid point to bring up. I have other hardware such as network cards that needs firmware to get loaded by linux before use. It’s not immediately obvious to me whether or not linux may be violating the licensing for the firmware. I don’t actually know if there’s any case law for this specific scenario…?
It’s quite genius of them actually: the greatest sore spot for them always has been the kernel portion, that required major somersaults to work properly and over complex installer packages.
The Linux’s user space ABI is rock stable, a static executable from 30 years ago can execute on it, but the kernel ABI and API is a fast moving target with zero regards to companies that don’t want to join the kernel project (even if they actually has open source drive, just not on the tree).
Now, the ball is with MESA to reach feature parity with the closed source portion, who happens to be the bulk of a GPU driver. And fewer people pays attention to that, especially newcomers, that has that Windows POV that a “driver” is a full monolithic package.
NVIDIA get’s a public relations win and a major source of annoyance removed, while not actually open the core of their drivers, like the shaders compilers, CUDA, OpenGL code paths, etc.
I wonder how long it will take for the OpenBSD devs to start incorporating this into future releases? With AMD and Intel they tend to lag behind more or less one complete generation (i.e. Radeon 5xxx and Intel 11th gen are working in -current right now). Depending on how easy or difficult it is to port the Linux NVIDIA drivers over to OpenBSD, we may be a year or two away from rocking a fully accelerated T1000 or GTX 2060 in our workstations.
Edit: Well with the userspace remaining closed source it may not make it into OpenBSD after all…
Is it just me, or … ?
It sounds like the kernel module is just boilerplate/glue to support proprietary code in user space and proprietary code for an embedded RISC-V CPU built into their cards; and the only thing they’re really doing is avoiding the stupidity of “it’s proprietary so let’s break it, no stable kernel module ABI” for their vacuous shim.
Its not just you. In all appearances, the blob driver has been moved into the RISC-V cpu, and this is just a shim to perform API calls.
A quite strong reason for this is IMO that a lot of newer kernel symbols are exported with EXPORT_GPL, which means their blob wasn’t allowed to use it. Two such interfaces have been mentions: hw sensors subsystem, and the entire dmabuf machinery with which nvidia couldn’t integrate without violating the GPL.
Also the free PR.
From the AMD side, AtomBios isn’t ideal, but isn’t anywhere near this level of insanity.
A good writedown: https://nitter.net/marcan42/status/1524615058688724992
At least judging by the number of lines of code, the driver appears to be more than just a shim. According to Phoronix the Nvidia driver contains one million lines of code while it is still missing some “basic” features, while the AMD driver is up to four million lines. So Nvidia should catch up when it implements the missing functionality.
I’m not entirely sure what it matter even if most of the actual implementation resides in a proprietary firmware. That’s a philosophical question in nature. Sometimes this open source ideology seems more like a fetish than a moral framework.
sj87,
Or maybe it’s a moral fetish, haha.
More seriously though FOSS isn’t just about morality, there are practical reasons that open is better than proprietary and some of these reasons even predate computers. While the patent system is riff with abuse today, the rational for it was to incentivize openness in recognition of the benefits public disclosure can provide over trade secrets. Whether it’s computers, cars, washing machines, communication networks, closed/proprietary solutions benefit a few at the expense of the many. It makes it such that innovation gets dictated by the incumbents who’s primary objective is staying in control even if it means restricting owners and blocking 3rd party innovation.
Well, all GPU drivers are like that.
The bulk of a GPU driver always has been on user space even with the open source drivers, mostly mainlined on MESA (modern OpenGL/Vulkan ones) or X11 (the older 2D-only ones).
My comments with links disappear automatically. WTF. OK then, let’s stop commenting here altogether.
Artem S. Tashkinov,
That’s another wordpress “feature”. It naively assumes that messages containing 4 links are spam until a moderator manually marks it visible. It happens to me as well and I agree it’s very frustrating but it should show up in a few days. It wouldn’t be so bad for “new accounts”, but I think long time posters should get the benefit of doubt. The whole thing is dumb because 100% of the real spam I’ve seen one contains a single link. Anyways as a mitigation I try to remember to remove the “http” part on links to keep the link count down.
Linux??? This is great for ALL alt-os! Haiku, Syllable, Amiga, all of them!
I agree, it feels like this should make it a lot easier to add NVIDIA support to alternative operating systems. The comment above that this is a thin layer with much of it being pushed into the binary blob is sad but it probably makes alternative OS support even easier.
Most of the “interesting” stuff of the nvidia driver is in user space, which is still closed.
There is a comment below that says this may just be them removing some of the pain of calling into the kernel without actually committing anything or giving anything away. If that is the total motivation, that is disappointing.
If this is really a move to truly begin opening their drivers, I wonder how much the Steam Deck has played a role in their thinking? Depending on the success of that product, I cannot imagine they want to exclude themselves to those kinds of products and cede the market entirely to AMD.
tanishaj,
Yeah, I think many people will share that view. But even so I’ll personally be glad once this is merged because nvidia driver breakages are my main cause of trouble when updating the linux kernel. Installing the latest nvidia drivers out of tree is too unreliable. At least this should fix it.
Steam Deck is an ultra niche product, and it will sell orders of magnitude less than the nintendo switch.
This is mostly for agilizing things in the datacenter, to make kernel updates easier.
This is for sure groundbreaking event and sends a strong signal through the industry. Reading in between the lines it says this move increases trust on the client side and enables NVIDIA to further conduct business. This really should become the norm. Or better it has became a norm. Now when the last stronghold against such model changed their mind. Obviously this is only the first step. A lot of work ahead to upstream the code and to gain some user space component that uses it. But we will get there i am confident in that. Now that both sides agree this is a proper way forward. If NVIDIA would do that much sooner and would have a good track record in regards to FOSS drivers. Then i am sure that the ARM deal would have gone through. As for mobile space and ARM drivers. I guess now is the appropriate time to take a hint.
I never understood why they were closed source in the first place. NVIDIA would benefit from all the ports to other systems that various groups are going to do. While porting the various groups would stumble upon bugs and inadvertently end up fixing NVIDIA drivers for free. It’s not like you can steal drivers from one vendor to run them on someone else’s graphics cards. Even the idea of allowing competitors to glean into the trajectory of the company is pointless because by the end of the day, gleaning and getting work done are two different things. I’m glad the secrecy is over.