NVIDIA Transitions Fully Towards Open-Source Linux GPU Kernel Modules
developer.nvidia.com
developer.nvidia.com
The best thing we can hope is improvement on NVK and RedHat's Nova Driver can put pressure on NVIDIA releasing their user space components.
RDMA requires a special network card and is opt-in - an RDMA NIC cannot access any random memory, only specially registered regions. One could argue that a NIC FW bug could cause arbitrary memory accesses, but that's another place where an IOMMU would help.
I’m not holding my breath about these libraries to be phased out and NVIDIA integrates to the platform GLX any time soon.
I think NVIDIA will resist moving to a firmware only model (ala AMD & Intel) as long as they can, preferably forever.
https://docs.nvidia.com/cuda/eula/index.html
ctrl-f "datacenter": none
so yeah, I'm not sure where the assertion of "no progress" and "nothing meaningful" and "this changes nothing" come from, other than pure fanboyism/anti-fans. before you couldn't write a libre CUDA userland even if you wanted to - the kernel side wasn't there. And now you can, and this allows retiming and clock-up of supported gpus even with nouveau-style libre userlands. Which of course don't grow on trees, but it's still progress.
honestly it's kinda embarrassing that grown-ass adults are still getting their positions from what is functionally just some sick burn in a 2004 viral video or whatever, to the extent they actively oppose the company moving in the direction of libre software at all. but I think with the "linus torvalds" citers, you just can't reason those people out of a position that they didn't reason themselves into. Not only is it an emotionally-driven (and fanboy-driven) mindset, but it's literally not even their own position to begin with, it's just something they're absorbing from youtube via osmosis.
Apple debates and NVIDIA debates always come down to the anti-fans bringing down the discourse. It's honestly sad. https://paulgraham.com/fh.html
it also generally speaks to the long-term success and intellectual victory of the GPL/FSF that people see proprietary software as somehow inherently bad and illegitimate... even when source is available, in some cases. Like CUDA's toolchain and libraries/ecosystem is pretty much the ideal example of a company paying to develop a solution that would not otherwise have been developed, in a market that was (at the time) not really interested until NVIDIA went ahead and proved the value. You don't get to ret-con every single successful software project as being retroactively open-source just because you really really want to run it on a competitor's hardware. But people now have this mindset that if it's not libre then it's somehow illegitimate.
Again, most CUDA stuff is distributed as source, if you want to modify and extend it you can do so, subject to the terms of the CUDA license... and that's not good enough either.
Edit since I'm being downvoted: I did search for it and could not find it.
I see no indications either that either nvidia nor any of the rest of the manufacturers has moved any respectable amount of functionality to the firmware. If you look at the opensource drivers you can even confirm by yourself that the firmware does practically nothing -- the size of the binary blobs of AMD cards are minuscule for example, and long are the times of ATOMBIOS. The drivers are literally generating bytecode-level binaries for the shader units in the GPU, what do you expect the firmware could even do at this point? Re-optimize the compiler output?
There was an example of a GPU that did move everything to the firmware -- the videocore on the raspberry pi, and it was clearly a completely distinct paradigm, as the "driver" would almost literally pass through OpenGL calls to a mailbox, read by the secondary ARM core (more powerful than the main ARM core!) that was basically running the actual driver as "firmware". Nothing I see on nvidia indicates a similar trend, otherwise RE-ing it would be trivial, as happened with the VC.
> Recently, though, the company has rearchitected its products, adding a large RISC-V processor (the GPU system processor, or GSP) and moving much of the functionality once handled by drivers into the GSP firmware. The company allows that firmware to be used by Linux and shipped by distributors. This arrangement brings a number of advantages; for example, it is now possible for the kernel to do reclocking of NVIDIA GPUs, running them at full speed just like the proprietary drivers can. It is, he said, a big improvement over the Nouveau-only firmware that was provided previously.
> There are a number of disadvantages too, though. The firmware provides no stable ABI, and a lot of the calls it provides are not documented. The firmware files themselves are large, in the range of 20-30MB, and two of them are required for any given device. That significantly bloats a system's /boot directory and initramfs image (which must provide every version of the firmware that the kernel might need), and forces the Nouveau developers to be strict and careful about picking up firmware updates.
Someone who believes this could easily prove that they are correct by "simply" taking their 4090 and documenting all its functionality, as was done with the [7900 xtx](https://github.com/geohot/7900xtx).
You can't say "I see no indications/evidence" unless you have proven that there is no evidence, no?
no, that’s not how either logical propositions or burden of proof works
I think you're missing the point, perhaps intentionally to make a smart-sounding point?
We're programmers, working on _specific physical things_. If I claim that my CPU's branch predictor is not doing something, it is only prudent to find out what it is doing, and enumerate the finite set of what it contains.
Does that make sense? The goal is to figure out _how things actually work_ rather than making claims and arguing past each other until the end of time.
Perhaps you don't care about what the firmware blobs contain, and so you'd rather have an academic debate about logical propositions, but I care about the damn blobs, because it matters for my present and future work.
[0] https://portswigger.net/daily-swig/nvidia-hackers-allegedly-...
Re-reading that story is kind of wild. I don't know how valuable what they allegedly got would be (silicon, graphics and chipset files) but the hackers accused Nvidia of 'hacking back' and encrypting their data.
Reminds me of a story I heard about Nvidia hiring a private military to guard their cards after entire shipments started getting 'lost' somewhere in asia.
[0] https://www.pcgamer.com/no-half-a-million-geforce-rtx-30-ser...
[1] https://www.geeknetic.es/Noticia/20794/Encuentran-en-Corea-5...
The meat of the drivers is still proprietary, this just allows them to be loaded without a proprietary kernel module.
What really changed the situation is that Turing architecture GPUs bring new, more powerful management CPU, which has enough capacity to essentially run the OS-agnostic parts of driver that used to be provided as blob on linux.
"Open Drivers" from nVidia include different firmware that utilizes the new-found performance.
So you better actually use IOMMU
Same thing with USB3/TB-controllers, NPUs, etc that everybody just expects to be perfectly implemented to spec, with flawless firmwares.
Also, Hyperthreading wasn't itself faulty or "bugdoored". The tricks necessary to get high performance out of CPUs were, and then there was intel deciding to drop various good precautions in name of still higher single core performance.
Fortunately, after several years, IOMMU availability becomes more common (current laptop I'm writing this on has proper separate groups for every device it seems)
[1] There's always the OpenBSD of navel gazing about writing "secure" C code, becoming slowly obsolescent thanks to being behind in performance and features, and ultimately getting pwned because your C focus and not implementing "complex" features helping mitigate access results in pwnable SMTPd running as root.
So as a chipset creator company director it would seem like a no-brainer to me to have to tell my engineers unfortunately to not fix some exploitable bug in the IOMMU/Chipset. Unless I want to never sell devices that could potentially be used to move citizens internet packets around in a large scale deployment.
And implement/not_fix something similar in other layers as well, e.g. ME.
The very point of Lawful Interception involves explicit, described interfaces, so that all parties involved can do the work.
The systems with LI interfaces also often end up in jurisdictions that simultaneously put high penalties on giving access to them without specific authorizations - I know, I had to sign some really interesting legalese once due to working in environment where we had to balance both Lawful Interception, post-facto access to data, and telecommunications privacy laws.
Leaving backdoors like that is for Unlawful Interception, and the danger of such approaches is greatly exposed in form of Chinese intelligence services exploiting NSA backdoor in Juniper routers (infamous DRBG_EC RNG)
Is this feature commonly present on PC hardware? I've only ever read about it in the context of smartphone security. I've also read that nvidia doesn't like this sort of thing because it allows virtualizing their cards which is supposed to be an "enterprise" feature.
I don't know if that's what's happening here, honestly, but you're right that they don't care about being shamed, but building a reputation of being hard to work with and target, especially in a growing market like Linux (still tiny, but growing nonetheless, and becoming significantly more important in the areas where non-gaming GPU use is concerned) can start to erode sales and B2B relationships, and the latter particularly if you make the programmers and PMs hate using your products.
Isn't Linux 80% of their market? ML et al is 80% of their sales, and ~99% of that is Linux.
What competition?
I do agree that companies don’t really care for public sentiment as long as business is going as usual. Nvidia is printing money with their data center hardware [1] where half of their yearly revenue comes from.
https://nvidianews.nvidia.com/news/nvidia-announces-financia...
So my guess is it's to do with LLMs. They are all in on AI, and having more of their code be part of training sets could make tools like ChatGPT/Claude/Copilot better at generating code for Nvidia GPUs.
A bit sad, but hey, welcome anyways.
The best solution is to have the industry eat their dogfood.
It's simply a function of their history. They used to have high priced professional level graphics cards ("Nvidia Quadro") using exactly the same chips as their consumer graphics cards.
The BIOS of the cards was different, enabling different features. So people wanting those features cheaply would buy the consumer graphics cards and flash the matching Quadro BIOS to them. Worked perfectly fine.
Nvidia naturally wasn't happy about those "lost sales", so began a game of whack-a-mole to stop BIOS flashing from working. They did stuff like adding resistors to the boards to tell the card whether it was a Geforce or Quadro card, and when that was promptly reverse engineered they started getting creative in other ways.
Meanwhile, they couldn't really Open Source their drivers because then people could see what the "Geforce vs Quadro" software checks were. That would open up software countermeasures being developed.
---
In the most recent few years the professional cards and gaming cards now use different chips. So the BIOS tricks are no longer relevant.
Which means Nvidia can "safely" Open Source their drivers now, and they've begun doing so.
--
Note that this is a copy of my comment from several months ago, as it's just as relevant now as it was then: https://news.ycombinator.com/item?id=38418278
but those companies are really adverse to open sourcing because they can't be sure they own all the code. it's decades of copy pasting reference implementations after all
No. H20 is a different chip designed to be less compute-dense (by having different combinations of SM/L2$/HBM controller). It is not a throttled chip.
A800 and H800 are A100/H100 with some area of the chip physically blown up and reconfigured. They are also not simply throttled.
> there's a reason why h800 were included last minute
No. Oct 22 restrictions are by itself significantly easier than Oct 23 one. NVIDIA just need to kill 4 NVLink lanes off A100 and you get A800. For H100 you kill some more NVLink until on paper NVLink bandwidth is roughly at A800 level again and then voila.
BIS is certainly pissed off by NVIDIA's attempt at being creative to sell the best possible product to China. So they actually lowered allowed compute number AGAIN in Oct 23. That's what killed H800.
I swore off ever again buying Nvidia, or any laptops that come with Nvidia, after all this. Maybe in 10 years they'll have managed to right the brand perceptions of people like myself.
(IIRC the main issue was https://gitlab.freedesktop.org/xorg/xserver/-/issues/1317 , which is now complete.)
I’m using Hyprland though so explicit sync support isn’t entirely there for me yet. It’s actively being worked on. But in the last few months it’s gotten a lot better
Yup. Anecdotally, I see a lot of folks trying to run wine/games on Wayland reporting flickering issues that are gone as of version 555, which is the most recent release save for 560 coming out this week. It's a good time to be on the bleeding edge.
VRR has always worked for me on single monitor X. I use it on my gaming computer (so about twice a year).
I have a laptop 10.1 2560x1600 with a 32' monitor, and another 27', never had any problem
Wayland has practically no advantages, you have to spend hours configuring, and still have apps working badly... they are always just a month away from having "everything" fixed
Maybe Wayland is the future but I'll keep using Xorg distros for the foreseeable future
Basically, with X11 and hidpi, all you can do is to set up the system to announce dpi with certain value and hope, that the clients will cope. Some can (I know of exactly two of them: Chrome and Firefox), others will up bump up the font size and hopefully are using a layout, so the window sizes will adjust to accommodate the textboxes, but all the non-text assets will stay low-res how they were, because they do not have any other. Apps for remote desktop access or vm console won't be able to display remote/vm correctly. And the rest will just ignore that and you get tiny stuff on the display.
And this is just the hidpi issue with single display. Won't go into the problems when running with multiple displays, with different dpi.
I also do not have a faintest idea of what "setting up Wayland" might mean. What did you set up? How? The only thing that needs to "set up" is to pick a wayland session in the display manager. There's no xorg.conf for wayland, setting up drivers, etc. What did you configure "for hours"?
I've been using 4K 27" for over a decade, and Wayland, since Fedora made it default. Since I have no 20-year old xdotool scripts, or others that inject events or try to grab pixmaps, I've had no problem.
> You guys must be using some different X11 than the rest of us.
Speak for yourself, I know plenty of people who are able to get non-96-DPI working on X with just Xft.dpi and some environment variables.
> Some can (I know of exactly two of them: Chrome and Firefox), others will up bump up the font size and hopefully are using a layout, so the window sizes will adjust to accommodate the textboxes, but all the non-text assets will stay low-res how they were, because they do not have any other.
This is an application bug (non text assets not getting scaled up) and will hardly be fixed with anything other than vaseline the text and icons on an equivalently non-DPI-change supporting application on wayland.
The vast majority of modern software works just fine.
> Apps for remote desktop access or vm console won't be able to display remote/vm correctly.
Does Wayland solve this in any other way other than to vaseline it all up? xfreerdp has /scale. When it comes to VMs I use through spice you just set their DPI settings individually to match your host, then you get nice scaling without vaseline. AFAIK in wayland this all gets vaselined.
> And this is just the hidpi issue with single display. Won't go into the problems when running with multiple displays, with different dpi.
Don't run multiple displays with different DPI. It's an unsolvable problem in the X11/Wayland ecosystem. You need to keep everything as postscript or something equivalent all the way up until the point you know which monitor it's rendered on.
Of all the things Wayland could have actually gone out and fixed, this is one they eschewed in favour of "ah screw it, just give all the applications some graphics buffers and let them figure it out".
> I also do not have a faintest idea of what "setting up Wayland" might mean. What did you set up? How? The only thing that needs to "set up" is to pick a wayland session in the display manager. There's no xorg.conf for wayland, setting up drivers, etc. What did you configure "for hours"?
I know exactly what guilhas means.
Some people are not content with Ubuntu Gnome at a integer scaling factor, they're running highly bespoke setups where everything from the display manager to the screen-grab stuff is customized or custom written. So you spend a lot of time and effort switching to sway, switching to wayland, switching to wayland native versions of a terminal, fixing firefox so it starts in wayland mode, fiddling with the nonsensical scaling settings to actually get firefox to render at the right size, figuring out how to get your screenshot binding to work again, figuring out how to get all your applications to start in the right version, being dismayed when something which still uses X11 runs in XWayland and looks like vaseline because of weird design decisions which are incomprehensible (meanwhile that same application with Xft.dpi set to the right value renders flawlessly).
Eventually you get it all back up and running and you play with it for a week and you spot 20 things which subtly work differently or outright break, you spend hours looking for a solution to only get half of it working.
Right now wayland works mostly fine for the Ubuntu Gnome user or the Kubuntu user (except issues getting non-integer scaling factors working or issues with things needing XWayland) but it's nowhere near as easy to get up and running for someone running a non-standard setup.
Having said that, the latest is a pain on X11 right now as well, with frequent crashing of Plasma, which atleast restarts itself.
There’s a lot of bleeding on the bleeding edge right at this moment :)
I agree with you that there's a lot of bleeding. Linux is nicer than it used to be and there's less fiddling required to get to a usable base, but still plenty of fiddling as you get into more niche usage, especially when it involves any GPU hardware/software. Yet somehow one can run Elden Ring on Steam via Proton with a few mouse clicks and no issues, which would've been inconceivable to me only a few years ago.
- I’ve upgraded through a few iterations starting with Plasma 6, so my dotfiles might be a bit wonky. I’m not using Home Manager so my dotfiles are stateful.
- Could be very particular to my dock setup as I have two docks + one of the clock widgets.
- Could be the particular wallpaper I’m using (it’s one of the dynamic ones that comes with KDE).
- It wouldn’t surprise me if it’s related to audio somehow as I have Bluetooth set-up for when I need it.
I’m sure it’ll settle soon enough :)
I found it funny how silently it would fail at times. After coming out of a game or focusing on something I'd scratch my head as to where did the docks/background went. I'd say you're lucky in that it recovered itself, generally I needed to run `plasmashell` in the alt+f2 run prompt.
Most of NVIDIA's kernel modules are split into two components:
An "OS-agnostic" component: this is the component of each kernel module that is independent of operating system.
A "kernel interface layer": this is the component of each kernel module that is specific to the Linux kernel version and configuration.
When packaged in the NVIDIA .run installation package, the OS-agnostic component is provided as a binary:The new open source ones effectively move majority of the OS-agnostic component to run as blob on-GPU.
The exciting bits there is the work on NVK.
My prediction is that it will continue to improve if only because people want to run nvidia on workstations.
That said, my previous experience with the DKMS driver stuff hasn't been bad. If you use Nvidia's proprietary driver stack, then things should generally be fine. The worst issues are that Nvidia has (historically, at least; it might be different for newer cards) refused to implement some graphics features that everybody else uses, which means that you basically need entirely separate codepaths for Nvidia in window managers, and some of them have basically said "fuck no" to doing that.
So... not perfect, but it works.
I haven’t tried wayland yet. Sounds like it might be time soon given other comments in this thread.
https://github.com/aaronp24/nvidia-versions
See: https://github.com/NixOS/nixpkgs/blob/9355fa86e6f27422963132...
You could also opt to use the latest driver instead of stable: https://nixos.wiki/wiki/Nvidia
Version 555.58.02 is under “latest” in nixos-unstable as of about three weeks ago[1]. (Somebody should check with qyliss if she knows the PR tracker is dead... But the last nixos-unstable bump was two days ago, so it’s there.)
[1] https://github.com/NixOS/nixpkgs/commit/4e15c4a8ad30c02d6c26...
Do you know something I don't? I'd love to be on the latest version.
I should have written my post better, it implies that 555 does not exist in nixpkgs, which I never meant. There's certainly a phrasing that captures what I'm seeing more accurately.
(Still on 550.)
The thing is, AFAIU, NVIDIA has several release channels for their Linux driver[1] and 555 is not (yet?) the "production" one, which is what NixOS defaults to (550 is). If you want a different degree of freshness for your NVIDIA driver, you need to say so explicitly[2]. The necessary incantation should be
hardware.nvidia.package = config.boot.kernelPackages.nvidiaPackages.latest;
This is somewhat similar to how you get a newer kernel by setting boot.kernelPackages to linuxPackages_latest, for example, if case you've ever done that.Thanks for the additional info, this HM thread has helped me quite a bit.
Having the ability to keep alternate configurations for $previous_kernel and $nvidia_stable have been super helpful in diagnosing instead of rolling back.
Maybe NVIDIA drivers have kind of worked on 12 month old kernels that Ubuntu on average uses.
The problem with comments like this is that you never know if you will be me or you on your graphics card or laptop.
I have tried nvidia a few times and kept getting burnt. AMD just works. I don't get the fastest ML machine, but I am just a tinkerer there and OpenCL works fine for my little toy apps and my 7900XTX blazes through every wine game.
If you need it professionally than you need it, warts an all. For any casual user that 10% extra gaming performance needs to weighed against reliability.
A mechanic might say "This car has never given me a problem" because the mechanic doesn't consider cleaning an idle bypass circuit or adjusting valve clearances to be a "problem". To 99% percent of the population though, those are expensive and annoying problems because they have no idea what those words even mean, much less the ability to troubleshoot, diagnose, and repair.
This might provide you a suggestion that alternate manufacturers should be considered.
I have confirmed this to be the case on Google and Bing, so DuckDuckGo and Startpage will also exhibit this phenomena.
If you think they're wrong, be sure to let them know.
So you see now why that's not very relevant to end-users experiences they were talking about?
That's the only way they would be disagreeing with me.
On plenty of distros "I want to install it and forget about is reasonable" and on both Gentoo and Ubuntu I have rebooted from a working system into a system where the display stopped working, at least on Gentoo I was ready because I broke it somehow.
I think it also got so much better over time, I've been using Linux since debian woody (22 years ago) the stuff you had to deal with back then heavily skews my perspective on what users today see as unacceptable brokenness in the Nvidia driver.
That's the opposite of my experience. I'd love to support open-source. But the AMD experience is just too flaky, too card-dependent. NVidia is rock-solid (maybe not for Wayland, but I never wanted Wayland in the first place).
My nvidia problems are generally software and update related. The NVidia stuff usually works on popular distros, but as soon anything custom or a surprise update happens then there is a chance things break.
Black screens, X server crashes, OpenGL programs either crashing or running slow. Just general unreliability. Different driver versions seemed more reliable than others, which meant I was always very reluctant to upgrade, which then gives you more problems as you end up pinning old versions which then makes it harder to troubleshoot online...
> My nvidia problems are generally software and update related. The NVidia stuff usually works on popular distros, but as soon anything custom or a surprise update happens then there is a chance things break.
I mean if you run mixed versions then yeah that will work for some upgrades and not others. A decent package manager should prevent that; some distros refuse to put effort into packaging the nvidia-drivers out of principle. But if you keep the drivers in sync (which is what the official package from NVidia themselves does, it's not their fault some distros choose to explode it into multiple packages) and properly rebuild just the kernel module every time you do a kernel upgrade (or just reinstall the whole driver if you prefer), then it's rock solid.
The cards worked fine with binary drivers once the system was installed, but AFAIR, I had to integrate the binary driver packages in the Ubuntu ISO in order to boot.
I presume that now, the situation is much better, but necessiting binary drivers can be a problem in itself.
The only "trick" is I'm still on X11 and probably will stay. Note that I did try wayland on few occasions but I steered away (mostly due to other issues with it at the time).
Also tearing is a bitch. Still. Even with ForceCompositionPipeline.
Wayland is even worse mess than it normally is. Used to flicker real bad before 555.58.02, less so with the latest driver - but still has some glitches with games. A bunch of older Electron apps still fail to render anything and require hardware acceleration disabled. I gave up trying to make it all work - can't get rid of all the flicker and drawing issues, plus Wayland seems to be a real pain in the ass with HiDPI displays.
X11 sort of works, but I had to entirely disable DPMS or one of my monitors never comes back online after going to sleep. I thought it was my KVM messing up, but that happened even with a direct connection... no idea what's going on there.
CUDA works fine, save for the regular version compatibility hiccups.
Wayland is mostly fine, though i get some windowframe glitches when maxing them to the monitor and a another issue that i'm pretty sure is wayland but it has obnly happened a couple of times and it locks the whole device up. I cant prove it yet.
I am using only Linux or FreeBSD on all my laptop, desktop or server computers.
On desktop and server computers I did not ever have the slightest difficulty with the NVIDIA proprietary drivers, either for OpenGL or for CUDA applications or for video decoding/encoding or for multiple monitor support, with high resolution and high color depth, on either Gentoo/Funtoo Linux or FreeBSD, during the last two decades. I also have AMD GPUs, which I use for compute applications (because they are older models, which still had FP64 support). For graphics applications they frequently had annoying bugs, unlike NVIDIA (however my AMD GPUs have been older models, preceding RDNA, which might be better supported by the open-source AMD drivers).
The only computers on which I had problems with NVIDIA on Linux were those laptops that used the NVIDIA Optimus method of coexistence with the Intel integrated GPUs. Many years ago I have needed a couple of days to properly configure the drivers and additional software so that the NVIDIA GPU was selected when desired, instead of the Intel iGPU. I do not know if any laptops with NVIDIA Optimus still exist. The laptops that I bought later had video outputs directly from the NVIDIA GPU, so there was no difference between them and desktops and the NVIDIA drivers worked flawlessly.
Both on Gentoo/Funtoo Linux and FreeBSD I never had to do anything else but to give the driver update command and everything worked fine. Moreover, NVIDIA has always provided a nice GUI application "NVIDIA X Server Settings", which provides a lot of useful information and which makes very easy any configuration tasks, like setting the desired positions of multiple monitors. A few years ago there was nothing equivalent for the AMD or Intel GPU drivers, but that might have changed meanwhile.
NVIDIA is not transitioning to open-source drivers for its GPUs; most or all user-space parts of the drivers (and most importantly for me, libcuda.so) are closed-source; and as I understand from others, most of the logic is now in a binary blob that gets sent to the GPU.
Now, I'm sure this open-sourcing has its uses, but for people who want to do something like a different hardware backend for CUDA with the same API, or to clear up "corners" of the API semantics, or to write things in a different-language without going through the C API - this does not help us.
or
NVIDIA Transitions Towards Fully Open-Source GPU Kernel Modules?
Anyhow I read the article, I think they’re saying fully as in exclusively, like there eventually will not be both a closed source and open source driver co-maintained. So “fully open source” does make more sense. The current driver situation IS partially open source, because their offerings currently include open and closed source drivers and in the future the closed source drivers may be deprecated?
Gaming on Linux with an NVIDIA card (especially an old one) is awful. Of course Linux gamers aren't the demographic driving this recent change of heart so I expect it to stay awful for a while yet.
In essence I don’t believe that much has really changed here.
[1] https://download.nvidia.com/XFree86/Linux-x86_64/525.78.01/R...
[1] Turing GSP is not the first "classical serial CPU" in nvidia chips, it's just first that has enough juice to do the task. Unfortunately without recalling the name of the component it seems impossible to find it again thanks to search results being full of nvidia ARM and GSP pages...
Falcon?
here's[1] a presentation from nvidia regarding (unsure if done or not) plan for replacing Falcon with RISC-V, [2] suggests the GSP is in fact the "NV-RISC" mentioned in [1]. Some work on reversing Falcon was apparently done for Switch hacking[3]?
[1] https://riscv.org/wp-content/uploads/2016/07/Tue1100_Nvidia_... [2] https://www.techpowerup.com/291088/nvidia-unlocks-gpu-system... [3] https://github.com/vbe0201/faucon
The GPU is described here[1] and the mailbox interface used generally between various components is described here [2]
[1] https://github.com/AsahiLinux/docs/wiki/HW%3AAGX#overview
Any closed-source privileged code cannot be audited and it may contain either intentional backdoors, or, more likely, bugs that can cause various undesirable effects, like crashes or privilege escalation.
On the other hand, in a properly designed modern computer any bad firmware of a peripheral device cannot have a worse effect than making that peripheral unusable.
The kernel should take care, e.g. by using the I/O MMU, that the peripheral cannot access anything where it could do damage, like the DRAM not assigned to it or the non-volatile memory (e.g. SSDs) or the network interfaces for communicating with external parties.
Even when the peripheral is so important as the display, a crash in its firmware would have no effect if the kernel had reserved some key combination to reset the GPU (while I am not aware of such a useful feature in Linux, its effect can frequently be achieved by switching, e.g. with Alt+F1, to a virtual console and then back to the GUI, the saving and restoring of the GPU state together with the switching of the video modes being enough to clear some corruption caused by a buggy GPU driver or a buggy mouse or keyboard driver).
In conclusion, making the NVIDIA kernel driver as open source does not deserve to have its importance minimized. It is an important contribution to a more secure OS kernel.
The only closed-source firmware that must be feared is that which comes from the CPU manufacturer, e.g. from Intel, AMD, Apple or Qualcomm.
All such firmware currently includes various features for remote management that are not publicly documented, so you can never be sure if they can be properly disabled, especially when the remote management can be done wirelessly, like through the WiFi interface of the Intel laptop CPUs, so you cannot interpose an external firewall to filter the network traffic of any "magic" packets.
A paranoid laptop user can circumvent the lack of control over the firmware blobs from the CPU manufacturer by disconnecting the internal antennas and using an external cheap and small single-board computer for all wired and wireless network access, which must run a firewall with tight rules. Such a SBC should be chosen among those for which complete hardware documentation is provided, i.e. including its schematics.
I have argued with "I don’t believe that much has really changed here", which is the text to which I have replied.
As I have explained, an open-source kernel module, even together with closed-source device firmware, is much more secure than a closed-source kernel module.
Therefore the truth is that a lot has changed here, contrary to the statement to which I have replied, as this change makes the OS kernel much more secure.
People used to believe similar things about Hyperthreading, glitchability, ME, Cisco, boot-loaders, ... the list goes on.
The functions of an I/O MMU for checking and filtering the transfers are very simple, so the probability of non-intentional bugs is extremely small in comparison with the other things enumerated by you.
Which -to my eyes- would increase the possibility of other system parts mucking with IOMMU restrictions, and/or triggering bugs.
big difference. almost nobody is going to give you the sauce hidden behind blobs. but i hope the dumb issues of the past (imagine using it on laptops with switchable graphics) go away slowly with this and it is not only for pleasing the enterprise crowd.
https://github.com/NVIDIA/open-gpu-kernel-modules/tree/main/...
Everything breaks immediately otherwise.
Exactly, that's when the nightmare starts.
NVIDIA can no longer get away with that nonsense when they have to show their code.
In Linux and BSD, you usually get all of your drivers with the system; you don't have to install anything, it's all mostly plug and play. For instance, this has been the case for AMD and Intel GPUs, which have a 100% open source stack. NVIDIA is particularly annoying due to the need to install the drivers separately and the fact they've got different implementations of things compared to anyone else, so NVIDIA users are often left behind by FOSS projects due to GeForce cards being more annoying to work with.
Open-sourcing graphics drivers may indicate that NVidia is moving away from GPUs for graphics. That's not where the money is now.
[1] https://www.visualcapitalist.com/nvidia-revenue-by-product-l...
[2] https://www.macrotrends.net/stocks/charts/NVDA/nvidia/roi
And For cutting-edge platforms such as NVIDIA Grace Hopper or NVIDIA Blackwell, you must use the open-source GPU kernel modules. The proprietary drivers are unsupported on these platforms. (These are two most advanced NVIDIA architectures currently)
1. nVidia compute dominance is not due to hyperfocus on AI (that's Google's TPU for you, or things like intel's NPU in Meteor Lake), but because CUDA offers considerable general purpose compute. In fact, considerable revenue came and still comes from non-AI compute. This also means that if you figure out a novel mechanism for AI that isn't based around 4x4 matrix addition, or which mixes it with various other operations, you can do them inline. This also includes any pre and post processing you might want to do on the data.
2. The whole advantage they have in software ecosystem builds upon their PTX assembly. Having it compile to CPU and only implement the specific variant of one or two instructions that map to "tensor cores" would be pretty much nonsensical (especially given that AI is not the only market they target with tensor cores - DSP for example is another).
Additionally, a huge part of why nvidia built such a strong ecosystem is that you could take cheapest G80-based card and just start learning CUDA. Only some highest-end features are limited to most expensive cards, like RDMA and NVMe integration.
Compare this with AMD, where for many purposes only the most expensive compute-only cards are really supported. Or specialized AI only chips that are often programmable either in very low-level way or essentially as "set a graph of large-scale matrix operations that are limited subset of operations exposed by Torch/Tensorflow" (Google TPU, Intel Meteor Lake NPU, etc).
3. CUDA literally began with how evolution of shader model led to general purpose "shader processor" instead of specialized vector and pixel processors. The space taken by specialized hardware for graphics that isn't also usable for general purpose compute is pretty minimal, although some of it is omitted, AFAIK, in compute only cards.
In fact, some of the "graphics only" things like Z-buffering are done by the same logic that is used for compute (with limited amount of operations done by fixed-function ROP block), and certain fixed-function graphical components like texture mapping units are also used for high-performance array access.
4. Simplified manufacturing and logistics - nVidia uses essentially the same chips in most compute and graphics cards, possibly with minor changes achieved by changing chicken bits to route pins to different functions (as you mentioned, you don't need DP-outs of RTX4090 on an L40 card, but you can probably reuse the SERDES units to run NVLink on the same pins).
Never thought I would see the day.