Luis Chamberlain sent out the modules changes today for the Linux 6.6 merge window. Most notable with the modules update is a change that better builds up the defenses against NVIDIA's proprietary kernel driver from using GPL-only symbols. Or in other words, bits that only true open-source drivers should be utilizing and not proprietary kernel drivers like NVIDIA's default Linux driver in respecting the original kernel code author's intent.
Back in 2020 when the original defense was added, NVIDIA recommended avoiding the Linux 5.9 for the time being. They ended up having a supported driver several weeks later. It will be interesting to see this time how long Linux 6.6+ thwarts their kernel driver.
Oh wow the comments on Phoronix for this one are bonkers.
From what I understand (because it wasn't clear to me from either of the TLDRs posted here) Nvidia's proprietary graphics driver has been calling parts of the kernel that they shouldn't be, because their driver is closed source.
These seem to be parts of the kernel that another company may own patents to, but has only licensed it to the kernel for free use with GPL open source code only, i.e. closed source/proprietary code is not allowed to use it.
Nvidia seems to have open sourced a tiny communication shim to try and bypass this restriction, so their closed source driver talks to the shim, and the shim talks to the restricted code in the kernel, that Nvidia does not have a license to use. This is a DMCA violation, hence why the Kernel devs are putting in preventions to block the shim, as far as I can see.
I don't understand the small minority of commenters there defending a la soulless corp Nvidia, who is blatantly in the wrong here. Some commenters have gone as far as to call the Linux kernel maintainers "zealots", would not be surprised if they are alts for Nvidia devs...
Just a perspective on why people would support NVIDIA here:
They don't believe in copyright law so they don't mind whoever infringe on them. Especially since here it would make the proprietary driver work better.
They do care about copyright law but think having a working driver outweighs respecting them.
Not my opinion here just saying that for some people usability trumps any other aspects.
They don't believe in copyright law so they don't mind whoever infringe on them. Especially since here it would make the proprietary driver work better.
I don't believe in copyright law, but I especially don't believe in partially enforced copyright law. Nvidia doesn't get to use copyright to protect their proprietary code while infringing on the copyright of FOSS.
Also, some of us are using Nvidia because we rely on software that doesn't work on AMD. I really enjoy using Linux, but if it's going to make my life difficult I'll go back to using Windows with WSL.
I agree Nvidia should resolve the licensing issues, but man GPL zealots get a such a raging hard-on for anything Nvidia related it's funny to watch.
Agree with your analysis, just pointing out that Phoronix forums have always been like this, or at least the tendency is to insult each other. Their culture is more toxic than any other Linux forums I've seen, maybe besides /g/.
But why is it a problem if they call on parts of the kernal they shouldn't? is it just a privacy concern, does it also impact performance? i don't understand
It is copyright infringement. Nvidia (and everyone writing kernel modules) has to choose between:
using the GPL-covered parts of the kernel interface and sharing their own source code under the GPL (a free software license)
not using the GPL-covered parts of the kernel interface
Remember that the kernel is maintained by volunteers and by engineers funded by/working for many companies, including Nvidia's direct competitors, and Nvidia is worth billions of dollars. Nvidia is incredibly obnoxious to infringe on the kernel's copyright. To me it is 100% the appropriate response to show them zero tolerance for their copyright infringement.
Because we don’t care about open source drama, we want an operating system that just works™ with our existing graphics cards and doesn’t get in the way of gaming.
It's not going to effect 99% of users. Nvidia will update it as they have in the past. The large majority of distros use stable kernels by default, and it will be fixed before this makes it to one. You're getting upset over something completely irrelevant to you.
Driver code might expose some underlying secret sauce they're using in the hardware. That's the justification they always used to give, at any rate. At this point, though, it's probably some code they've inherited from an acquisition that has a bunch of legal encumbrance stopping it from being open sources.
They have third party firmware in their blobs that they are under NDA regarding the source code.
They believe in the source code is a large part of their success and don't want to reveal it.
They believe giving out the source code will allow many inferior variants of the software, impacting their brand.
Control; the more source code they have in mesa the more of their code can be rejected by mesa. Keeping their stuff as blobs allows them to put in whatever hacks they want.
I assume nVidia have licensed other code that they don't have the rights to distribute the source code for.
I get what the GPL fans want here, but it's just going to lead to a gimped driver, no driver, or an even larger shim between the open and closed source bits. The Linux market is too small for nVidia to care.
And that's why I'm happy to see that the lock on modifying the Nvidia BIOS for their old graphics cards has finally been decrypted. That means that Nouveau will have a much easier route to make their open-source drivers work properly on the 10xx and 20xx cards, so we don't have to rely on the tainted crumbs that Nvidia offered here. (Then again, I eventually moved to a 6600 specifically to no longer have to deal with this kind of shenanigans)
Man, that would be so nice. I forgot actually for a while that I was using Nouveau after I switched cause nvidia-dkms wouldn't let me boot (1050ti). The only thing that reminds me is game performance. Wayland is great though.
What were some of the positives and negatives? Me personally, I have an RDNA2 card and got bitten by the gamma being too dark on hardware cursors (now resolved) and memory clock stuck at 1 GHz with some refresh rates (workaround is not to use refresh above ~144 Hz).
There's been some oddball nasty issues with Mesa recently. SteamVR causing the driver to crash (and the display just won't come back :/) H265 encoding causing driver crashing, just weird stuff. Simple things like Wayland work great, but if you have even a slightly unique workload you may run into major issues
b) How long before NVIDIA throws up their hands at the whole thing and does their own Linux distro + pushes all their cloud AI customers to use it? (it doesn't seem like they're ever going to be shamed / coerced into actually open-sourcing their driver)
Would having their own distro even help? It seems like working around this would require forking from Linux at a lower level, and even that would only circumvent technical (rather than copyright) barriers.
They can probably just drop some kernel packages in their driver PPAs or whatever. You don't need to fork the whole distro to customize the kernel. But it will still be a huge pain.
They can beef of linux support of freebsd a little and do some other help to the desktop experience there. Freebsd has always been more pragmatic, and for most uses of an os you can't tell a real world difference. (pkg instead of apt, and other such differences are minor)
There's an interesting discussion about the whole topic on the Phoronix forums about this. Some people claim that removing them and Nvidia's current behavior is a DMCA violation:
The kernel includes IP only licensed under GPLv2.
While a module linked against the kernel isn't necessarily a derived work which in turn would need to be licensed GPLv2 as well, there are specific interfaces that are meant for internal use and by their very nature would make your work derived if using them. These are the interfaces marked EXPORT_GPL_ONLY.
Using these interfaces with a module not licensed GPLv2, you taint the kernel and violate the licensing.
Removing the check, you aren't necessarily yet violating GPLv2, but you're removing a technical protection measure which is a violation of the DMCA.
It also raises the question why you'd remove checks that only prevent a possible GPLv2 violation if you're not violating GPLv2 anyways as Nvidia claims.
you aren't necessarily yet violating GPLv2, but you're removing a technical protection measure which is a violation of the DMCA.
Isn't overcoming a technical limit a violation itself? That's what made DeCSS illegal. They didn't have to prove anyone was actually copying DVDs with it, just that DeCSS could allow you to copy a DVD
B) can't happen because of gpl. Even if it could, not many customers will move to an nvidia distro. ML people need good distros and good drivers.
If a hypothetical nvidia distro would speed up training by 10% but cause drop of productivity of humans of as small as 5%, no many will "buy" it. We can throw more hardware, people are the bottleneck nowadays
Yeah they'd do that with a card that looks like it's from 2003 with those classic dual DVI ports. Stole it right out of some kid's Quake 3 box. Try that with a 4090.
couldnt they do the thing where one team analyzes the leaked code and documents functions.
and a nother, clean room team, creates independent fresh code to achieve the same results as the original?
I mean, clean room activity like that has a strong precedent, going back to EA vs Sega at least. where EA stole a sega genesis dev kit, had one team document the functions, had another team independently create code to execute those functions,and made their own dev kid and put out non-approved sega carts (which is why the EA sega carts were taller and had the yellow plastic tag)
Sega sued and EA won due the clean room engineering and sega and EA came to some kind of sweetheart deal/comrpromise/settlement.
I belive the NVK work is where that headed. The released code wasn't up to snuff for true kernel intergration on it own, but offered a lot of insights for devs working on the problem.
The Linux 6.6 modules infrastructure is changing to better protect against the illicit behavior of NVIDIA's proprietary kernel driver.
Most notable with the modules update is a change that better builds up the defenses against NVIDIA's proprietary kernel driver from using GPL-only symbols.
Given that symbol_get was only ever intended for tightly cooperating modules using very internal symbols it is logical to restrict it to being used on EXPORY_SYMBOL_GPL and prevent nvidia from costly DMCA circumvention of access controls lawsuits.
Luis Chamberlain further added in today's pull request: "Christoph Hellwig's symbol_get() fix to Nvidia's efforts to circumvent the protection he put in place in year 2020 to prevent proprietary modules from using GPL only symbols, and also ensuring proprietary modules which export symbols grandfather their taint.
The circumvention tactic used by Nvidia was to use symbol_get() to purposely swift through proprietary module symbols and completley bypass our traditional EXPORT_SYMBOL*() annotations and community agreed upon restrictions."
Back in 2020 when the original defense was added, NVIDIA recommended avoiding the Linux 5.9 for the time being.
The original article contains 476 words, the summary contains 174 words. Saved 63%. I'm a bot and I'm open source!
I get why the Linux folks are doing this, but I don't expect that it will make them popular with anyone who actually uses Nvidia drivers on Linux (which is a lot of people). I'm sure that my employer will choose up-to-date Nvidia drivers over up-to-date versions of the kernel, at least in the short term. In the long term it probably won't be an issue since Nvidia will figure something out, but if it did become an issue then ultimately Nvidia driver support is non-negotiable for the company where I work.
(No one cares what a small tech company does, but the big guys need Nvidia too so it should be possible to piggyback on whatever they do.)
For most people, principle takes a backseat to pragmatics. If your livelihood is training ML models on thousands of nVidia cards or whatever, you care less about who to be mad at and more about not laying off your staff and shutting the doors. You can't replace nVidia. You can replace the latest kernel.
From my closed-source corporate perspective, Nvidia is trying to improve performance and the Linux kernel maintainers are trying to stop them. I don't see why I would be annoyed at Nvidia in these circumstances.
I think end users wouldn't care either, they probably wouldn't even understand what's actually happening, they'll only notice performance degrading (if this is the case) and blame Linux for it.
That's not to say this shouldn't be done, I just wish there was better control on license violations and those doing it on purpose, like Nvidia in this case, would be seriously punished to make them think twice next time.
I use Nvidia drivers on Linux and fully support it. You know what else is non-negotiable? Linux support for Nvidia. Huge chunk of their money comes from people using their GPUs on Linux for machine learning. And while they can use older kernels for now (because they're still supported), they won't be able to forever. And corporates will want a supported OS with their Nvidia card.
And while they can use older kernels for now (because they're still supported), they won't be able to forever.
It might even happen that the change gets back ported upstream; that would mean that every supported kernel has the changes in place, regardless of version.
Can someone ELI5 what this is about? Why does Nvidia wants to access parts if the Linux kernel and why are linux kernel maintainers against it? Wouldn't it be good if Nvidia uses more open-source stuff?
Open source software is given with specific licenses. The Linux kernel is made of many smaller open-source components that each can have their own license. Some of the licenses used disallow the partial or full usage of the licensed software or components in proprietary settings, or in general given usage for specific cases only (in this case, the Nvidia driver using components they are not licensed to use.).
Just installed the nvidia-driver for my 2080 SUPER and my system isn't starting now. I'm using Debian 12.1 and after installing the driver, it crashes after entering in my password for my encrypted drive.
I will load up a Live USB and see if I can fix the issue. Any help would be appreciated!
I’d rather have working proprietary drivers than broken open source ones, which seem to be our only options. I find it real hard to side with Linux here as they’re going to make performance worse for a platform that already struggles.
And people wonder why Linux will never take off on the desktop. Stuff as basic as this will make sure anyone semi-casual about pc use will have issues with Linux.
Or maybe we shouldn't just accept trillion dollar companies doing whatever the fuck they want?
Nvidia is clearly in the wrong here, and infringing on copyright. Do you want to set the precedent that companies can just ignore copyright? Meanwhile when we certainly can't ignore theirs?
Maybe we should hold the companies to a higher standard. And not roll over and give in basically as soon as they do something we don't like, compromising the foundation and good parts of what we already have, in this case Linux. Open source and GPL is the lifeblood of Linux, it's what makes it as good and useful as it is.
Or maybe to keep doing social pressure on nvidia and make them feel guilty ,that they finally realse and did support of open version drivers not only for gtx 1650+ and fot more old cards.Because their source codes was published when hackers hacked their infrastructure and leaked source code.
It's sad to see the 100500th confrontation between the people who have never contributed to the kernel, yet they want to deprive others of using their existing GPU with Linux and instead force them to buy a new GPU. This screams of of being elitist and haughty but I just don't care any longer. Too tired of hatred, aggression, animosity and verbal attacks. This has really propelled Linux, oh, wait, it's only shown what kind of people represent Open Source.
It's kind of like using DRM to combat piracy in regards to multimedia. The Linux kernel is under a certain license and the kernel developers feel NVidia is encroaching on their IP in a way that is against the copyright. They won't give NVidia an exemption despite their obvious importance in the hardware industry.
It may seem aggressive but look at how Nintendo, Disney, etc. regard those who break their own plans/trademarks. If you don't take your own IP seriously, the law won't either.
DRM is a good comparison, imagine there exists a DRM measure that doesn't affect rightful owners in any way shape or form but prevents piracy, would you be against it?
Personally I would be 100% okay with that, the problem is that DRM usually causes issues to rightful users and doesn't prevent piracy. This change on the Kernel seems to be that perfect DRM, it won't affect any rightful driver but prevents companies from pirating the Linux Kernel.