1) This is unambiguously Good News<p>2) This is not upstreamable in its current form (nvidia admit this in their press release)<p>3) In an ideal world, nouveau (the open source driver for nvidia hardware) would be able to target this kernel code. Right now though there's no commitment for any sort of stable userland ABI, and that makes that difficult (moving to a new driver version may break interfaces that nouveau uses)<p>The press release does say that they have plans to figure out a more upstream friendly approach in the long term, which is great - and what has been released will undoubtedly help development of the existing nouveau codebase.
Had to do a few doubletakes on this, but even with the recent hacks and progress on NVIDIA releasing Tegra source code, I didn't expect this for another few years.<p>Holy shit.<p>It's even licensed as MIT.<p>Even OpenBSD could conceivably port this with enough manpower. Adding enough just emulation for the userspace driver would be a lot easier than maintaining a complete linux emulator.<p>This is one of the biggest things to happen to hardware support for open source OSes in well over a decade.
Note that this is just the kernel modules, not the actual graphics driver.<p>IIRC these sources were already released under a permissive license along with their driver distribution. This just seems to be them putting those sources on GitHub and being more open to contributions.
> In this open-source release, support for GeForce and Workstation GPUs is alpha quality. GeForce and Workstation users can use this driver on Turing and NVIDIA Ampere architecture GPUs to run Linux desktops and use features such as multiple displays, G-SYNC, and NVIDIA RTX ray tracing in Vulkan and NVIDIA OptiX. Users can opt in using the kernel module parameter NVreg_EnableUnsupportedGpus as highlighted in the documentation. More robust and fully featured GeForce and Workstation support will follow in subsequent releases and the NVIDIA Open Kernel Modules will eventually supplant the closed-source driver. Customers with Turing and Ampere GPUs can choose which modules to install. Pre-Turing customers will continue to run the closed source modules.<p>Translating & simplifying the language here: sounds like GTX 10xx GPU users (Pascal architecture, e.g. 1070/1080) will stick with closed source for now, but RTX 20xx GPU users (Turing architecture, e.g. 2080) and RTX 30xx GPU users (Ampere architecture, e.g. 3080) will have the option to opt-in to the open source kernel module. Stable open source support for GTX 10xx GPU users may come later.
For those who didn't use Nvidia on linux in the old times:<p>The driver was a proprietary binary. Since a kernel module requires interfacing with the kernel API, it could be considered a derivative work and a breach of the GPL license. So, Nvidia provided a small open source shim which interfaced between the kernel and the proprietary module.<p>You had to compile that shim yourself with the right arcane command line incantations and if you did anything wrong, missed the right packages or had an incompatible user space, including libs and compiler, you could end up without X11 and no way to easily run a browser or google about the problem you had. You had to do it EVERY FUCKING TIME YOU UPDATED THE KERNEL!<p>It was still possible to edit xorg.conf or, if you were older, xf86config by hand to fix it and use the VESA driver, but it was very inconvenient. It became more reliable over the time and even fully automated with DKMS, but I hated them for it.<p>I used and recommended ATI and INTEL for most of the people I could for a long time because of this.<p>I was from a time when It was possible to use 3D acceleration on linux with 3dfx with fully open source drivers (I think), giving you a cheap UNIX-like graphical workstation with OpenGL support. When Nvidia bought 3dfx and simply killed their drivers, my hate became specially strong.<p>EDIT: Remember you had to recompile the shim at every kernel update and replaced "module" with "driver".
I did a double take because the title is almost clickbait for us desktop Linux users, and immediately wondered "what's the catch?". It's a significant catch, but also a significant step in the right direction.
It will probably end up like how AMD cards work.<p>The closed source driver still exists but there will hopefully be a completely open source stack (Nouveau++?) For nvidia.<p>This blog has more details about red hats plans for this driver.<p><a href="https://blogs.gnome.org/uraeus/2022/05/11/why-is-the-open-source-driver-release-from-nvidia-so-important-for-linux/" rel="nofollow">https://blogs.gnome.org/uraeus/2022/05/11/why-is-the-open-so...</a>
With this announcement, I'm now interested in trying out some Nvidia graphics cards on the Pi again. Nouveau had some issues, and the official drivers had no source available, so I couldn't hack them to work.<p>With the source available... it could be possible! Of course, CUDA support may never happen there, at least not using open source code.
23 years ago in middle school I made my first ever linux user group post [1] trying to shift from an nvidia geforce to the onboard cyrix mediagx drivers because they had closed source drivers.<p>It’s been a long time coming lol.<p>[1] <a href="https://www.spinics.net/lists/xf-xpert/msg04601.html" rel="nofollow">https://www.spinics.net/lists/xf-xpert/msg04601.html</a>
The kernel modules are the first stage I guess, since a massive amount of hardware programing knowledge is in user space like with AMD/intel GPUs.<p>I wonder how much LAPSUS$ hack has to do with it.<p>I wonder if nvidia hardware programing interface is a mess like AMD one, just curious.
Hell is freezing?<p>Serious, does it means we won't need Nouveau anymore? How many and which binary blobs it still needs? Are they encrypted or require signing?
Phoronix link about what this actually means:<p><a href="https://www.phoronix.com/scan.php?page=article&item=nvidia-open-kernel&num=1" rel="nofollow">https://www.phoronix.com/scan.php?page=article&item=nvidia-o...</a><p>Main takeaways:<p>- support for gaming workstation GPUs is alpha<p>- the user space stuff (OpenGL/Vulkan) is still closed source. (A LOT of heavy lifting is done here.)
If I understand this correctly nvidia is moving its proprietary code from the drivers to the card itself. Looks like we are looking at a future where graphic cards will get firmware updates instead of driver updates.
I am wondering with how large the newest graphics cards and ho the power requirements are so much larger than the other components. I see a future where we have PC cases and laptops with a pci slot exposed externally to attach external graphics cards which has it's own power supply and cooling only. It is attached to the PC when you need the GPU power for gaming or work then just remove it for a silent PC. As we start hitting the physical limits for moores law I think such a future is big possibility.
Would love to hear from folks who worked on this!<p>Was this an ongoing thing? Did it have to be pitched hard? What finally made the difference? I'm assuming here it's not because of LAPSUS as some speculate. This seems like it must have been in the making for quite a while.
> Open kernel modules support all Ampere and Turing GPUs. Datacenter GPUs are supported for production, and support for GeForce and Workstation GPUs is alpha quality.<p>Sounds like this is not going to be what I game on for at least a little bit?
I'm curious to see how they'll manage updates, so far it's one mega commit.<p>> Showing 2,519 changed files with 1,060,036 additions and 0 deletions.
So is it correct that they are only open-sourcing the kernel-mode portion of the driver and that the real meat of the driver like the shader compiler will remain in a closed-source binary?
Wow! I literally never thought I'd see the day.<p>I've been on linux for at least a couple of decades now, and this has been a thorn in my side from the get-go. I can't overstate how huge this is!<p>Great work Nvidia, seriously. It does look like it's not perfect, but damn it's a great step.
The bits that implement the userland graphics libraries are closed source, unlike Mesa. So this is still useless, but don't get me wrong... I'll take it, but I'm still going to bitch about it. My hope is now folks will be able to adapt these Nvidia cards into the Mesa ecosystem, like ~10 years from now or whatever.
Since the open sourced drivers are explicitly stated in TA to also help the Nouveau driver improve, the latter does not matter that much. That's what Mesa is here for.
watch out the fine print though:<p><a href="https://twitter.com/marcan42/status/1524615058688724992" rel="nofollow">https://twitter.com/marcan42/status/1524615058688724992</a><p>34MB firmware<p>Good, but I'll try to stick with AMD. If only AMD's opencl support was better...
I'm confused! Why would Nvidia want to keep any of this closed source. Surely they make money when people buy graphics cards, and having open source out-of-the-box graphics support in Linux would mean they would sell more graphics cards?
It seems the modules bridge the kernel with the driver [1], so it is this part that is GPL/MIT, the driver itself is still a binary blob.
AMD probably does the same? Correct me if I'm wrong.<p>[1] <a href="https://github.com/NVIDIA/open-gpu-kernel-modules/tree/main/kernel-open" rel="nofollow">https://github.com/NVIDIA/open-gpu-kernel-modules/tree/main/...</a>
I first used OpenGL on linux in 1995. Software-based commercial X server that was unusably slow. By 98 or so I had Mesa, and was running software-based open source OpenGL (still pretty slow, but almost usable). By 2001, I think, I had a FireGL card that was supported in linux doing hardware OpenGL, I think it was a partly open source kernel driver- first time I had competitive performance to lower-end SGIs in the lab). FireGL was then acquired by ATI which sold their cards as high-end and continued the driver. After that I reverted to software for driver reasons, then to the nvidia driver, which I've used on linux for over a decade now. I will give ATI and nvidia credit for having at least some fairly good level of support for linux over the past two decades.
This is what happens when you don't just give up and "be pragmatic". Kudos to NVidia for coming to the table, and I look forward to seeing more of this sort of thing.
Isn't this connected with fact that nvidia got threats from lapsus group to open-source their's drivers unless hacker will publish some stolen confidential data?
<a href="https://videocardz.com/newz/hackers-now-demand-nvidia-should-make-their-drivers-open-source-or-they-leak-more-data" rel="nofollow">https://videocardz.com/newz/hackers-now-demand-nvidia-should...</a>
Is this connected to the hack/leak where the hackers requested this very move?<p>WE REQUEST THAT NVIDIA COMMITS TO COMPLETELY OPEN-SOURCE (AND DISTRIBUTE UNDER A FOSS LICENSE) THEIR GPU DRIVERS”<p><a href="https://www.theverge.com/2022/3/1/22957212/nvidia-confirms-hack-proprietary-information-lapsus" rel="nofollow">https://www.theverge.com/2022/3/1/22957212/nvidia-confirms-h...</a>
This may be a boon for unlocking hardware features on GeForce. Stuff like below shows that some things are just disabled in hardware, but lots of reverse engineering would be needed to bypass it.<p><a href="https://www.ibtimes.com/nvidia-geforce-graphics-card-virtualization-hacked-how-activate-vgpu-feature-3179008" rel="nofollow">https://www.ibtimes.com/nvidia-geforce-graphics-card-virtual...</a>
And just like that my next gpu will probably be NVIDIA. AMD's recent prices have made nvidia look like a better option and the only thing holding me back was amd's amazing open source drivers and the options that came with. If nvidia's drivers become comparable or are well on their way then they would be the obvious choice in today's market.
This is such good news... I hope we see 'real world improvements soon' !<p>The amount of time, I was 'sucked' with a black-screen after a reboot and the amount of time I wasted with Nvidia drivers ! I swear I would never buy NVIDIA again !
Public post by nVidia: <a href="https://developer.nvidia.com/blog/nvidia-releases-open-source-gpu-kernel-modules/" rel="nofollow">https://developer.nvidia.com/blog/nvidia-releases-open-sourc...</a>
Just out of curiosity, how easy would it to have been to decompile and reverse-engineer the original closed-source modules and then write an open sourced version of them? Would that have been legal?
Congrats!<p>Most importantly, will they open source Optimus? Even though the drivers work, getting everything to render on the GPU, and output to the laptop LCD, has always been an inconsistent pain.
That makes ThinkPads with Linux look much different than before compared to MacBooks with macOS. (And save a lot of update/re-configure/re-install cycles...)
I was worried they had actually decided not to do this after seeing all of the other recent developments and then a pause. Glad to see it was just part of the path to it.
I believe everyone is the comments are like, "Omg! They finally took us seriously telling they are horrible at writing drivers for Linux". Good job Nvida
I wonder if it is the result of the LAPSUS$ hack. This was their statement from early March:<p><i>"After evaluating our position and Nvidia's, we decided to add one more requirement.</i>"<p><i>"We request that Nvidia commits to completely Open Source (an distribute under a FOSS License) ther GPU drivers for Windows, macOS and Linux, from now on and forever."</i><p><i>"If this request is not met, on Friday we will release the complete Silicon, Graphics and Computer Chipset Files for all recent Nvidia GPUs."</i>
As predicted 3 months ago ;)<p><a href="https://news.ycombinator.com/item?id=30471005" rel="nofollow">https://news.ycombinator.com/item?id=30471005</a>