- cross-posted to:
- [email protected]
- cross-posted to:
- [email protected]
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…
Edit: typo
Then isn’t the correct solution to sue Nvidia?
It’s a legal issue with a legal solution.
You dont sue someone with deeper pockets than you.
This is what’s wrong in so many countries.
Yeah probably, but Nvidia can afford lawyers and delays for years. Much longer than any oss group could afford
So you want the company that licensed the patents to the Linux kernel for open source use to have to sue Nvidia for wrongly using their code? You want the company to have to spend a bunch of money suing Nvidia and possibly lose which would open the flood gates to more closed source code leeching off the Linux kernel?
Yeah that’s going to make them want to keep licensing their IP to the Linux Foundation (which they’re probably doing for free).
Or the maintainers can just submit a fairly simple patch to ensure that the kernel and the patents are being respected. Do you really think the first approach is the way to go?
Because sueing is never great
Neither is having your copyright infringed. Neither is wasting volunteer manpower playing a technical game of cat and mouse
apparently suing in these cases would mean having authorization from ALL contributors…
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.
deleted by creator
Good read. I think the root is simply, don’t care about the rights of others if it is going to cost them something personally.
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.
Them becoming raging zealots is kind of the only realistic way to defend the GPL though. If they don’t, it’s just going to get treated like toilet paper. I’d much rather have the angry hate mob than to be disrespected by big companies who can otherwise just get away with whatever they want.
And I’d like hardware that works, and proprietary drivers are really the only way that happens
AMD and Intel both have fully featured, full performance open source graphics drivers.
Not to knock on your point but the AMD drivers on Linux don’t support hardware video encoding unfortunately, so technically it’s not full-featured
Depends on your distro. Fedora and Manjaro removed it.
I take advantage of hardware video encoding on linux with amd’s open source drivers almost every day.
Ehm, not at all??
There’s so much hardware with non-proprietary drivers.
Why do you think that? Companies can open source their drivers at will, in fact at this point NVIDIA is the only major player in GPU market who hasn’t done this, what do you think makes this particular hardware so special that needs a closed source driver when every other competitor doesn’t? In fact what could possibly be the reason for a driver to need to be closed source?
deleted by creator
Or maybe we should keep companies, which rake in billions of dollars, to a much higher standard??
Nvidia could be better at open-sourcing their stuff. But they don’t. Blame them, not GPL.
we rely on software that doesn’t work on AMD
Which software?
3D rendering software using iRay. I’ve started trying to learn Blender, but I’ve still got thousands spent on assets and hardware which means I’m not going to run out tomorrow and pickup a new card. It all works fine under Wine, but the amount of Nvidia hate on here is just tiring.
So you use iRay as the rendering engine for Blender? And (I’m assuming a lot here) iRay doesn’t use CUDA, OpenCL etc, but straight talks to the GPU via graphics drivers, thus having hardware depency for nvidia GPU?
-
Phoronix comments are always wild
Remind me of those who supports Red Hat for blocking sources and telling those who downstreams “code thief with no contribution to open source” lol.
I did not “support” Red Hat but I was pretty vocally in opposition to most of the reaction to it. I found the willful inaccuracy and even flagrant dishonestly from the “community” close to disgusting at times. So, you may be including people like me in your comment.
In this case, it seems very straight-forward that NVIDIA is in the wrong. Not just ethically but legally as well.
My own read is that some of the people slamming Red Hat are defending NVIDIA now. Coming away from that experience, I the over-arching principle that many adhere to most is simply whatever is best for them. Red Hat was wrong because people felt entitled to something. The kernel devs are wrong ( and NVIDIA right ) because people feel entitled to something.
I don’t understand the small minority of commenters there defending a la soulless corp Nvidia, who is blatantly in the wrong here.
They think they’re gonna get a free 4090 in the mail any day now.
https://www.youtube.com/watch?v=iYWzMvlj2RQ
“I’m also very happy to point out that nVidia has been the worst […] so nVidia, “fuck you!””
Here is an alternative Piped link(s): https://piped.video/watch?v=iYWzMvlj2RQ
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source, check me out at GitHub.
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/.
I need to upgrade my computer soon… this crap makes me not want to go Nvidia again. (Running a looooong in the tooth 1060.)
Go ahead, I just ordered a new build specifically with a non-Nvidia card for the same reasons.
The new 150$ range Amd cards are enticing. I could bring new life into my rx5500 htpc.
Thanks for the ELI5. I read the article but had a hard time parsing the significance other than Nvidia proprietary drivers bad
deleted by creator
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.
To expand a bit:
The GPL-only symbols restriction is there for the benefit of proprietary developers. It ensures that their work doesn’t become a “derivative work” of the kernel’s internals, by sticking to using only the published and documented interfaces. Using published APIs doesn’t make your work a legally derivative work of the system behind those APIs (i.e. the kernel).
If your code needs to mess around in the kernel internals, it is very likely a derivative work of the kernel; which means you need the permission of the kernel authors if you want to publish that code legally.
The only terms under which the kernel authors grant that permission are the terms of the GPL.
By circumventing the GPL-only symbols restriction, Nvidia is demonstrating that their driver code needs to mess with kernel internals, not just the published APIs. And that means that it probably is a derivative work of the kernel. Which, in turn, means that those drivers must be published under the GPL in order to avoid violating the kernel copyrights.
Basically: Linus drew a line in the sand and said “As long as you don’t step over this line, you’re not pirating the kernel by releasing proprietary drivers.” And Nvidia stepped over that line.
Because the license for the patents that the Linux kernel is utilizing says that the code utilizing those patents must be open source. So therefore Nvidia is accessing those parts of the kernel illegally and against the license the Linux Foundation has. The Linux Foundation could lose the rights to use those patents if they’re not respecting the license.
Cause the GPL is a virus
And it’s a good thing. Fuck proprietary software 😎
We’ll be down voted, but agreed.
If it’s a dmca violation then sue them. Do not create software “defenses” and do not make my computer experience worse.
With what money are they supposed to fight the multi billion dollar mega corpo exactly with dozens of lawyers??
Also, if they fight this in court then that would mean less money for development thus making your experience even worse….
Well then don’t! Revenge code which makes it worse for people who actually use Linux isn’t a way to do this.
Nvidia shipping proprietary code is what makes it worse for people who actually use Linux. They should open source their driver.
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.
Then let Nvidia deal with this drama of their own making. Linux works as intended.
So intentionally harmful to user experience. As usual.
The user experience is based around audited, reviewed, open source software. Everything from the licenses, distro policies, and kernel maintainership is based around that model and it has benefitted users far more than if Linux was a mess binary blobs that do not interoperate with each other in a well-defined and transparent manner.
AMD and Intel both manage just fine, along with hundreds of other companies supporting hundreds of other pieces of hardware on top of dozens of different CPU architectures. If Nvidia insists on being a special snowflake about this then it is 100% their problem.
From a legal perspective, nvidia has been illegally bypassing a software license by exploiting a loophole. Linux devs fixed the loophole.
I don’t see why I would be annoyed at Linux devs in these circumstances.
Then go install Windows.
If that is the case, then you should be very happy to leave Linux for a proprietary OS that Nvidia works on and properly supports.
This thing exists.
But you have to pay for it.
Otherwise you might have to deal with the wishes of the people you aren’t paying.
Okay, then continue not caring as the people who do take care of things. Don’t worry your pretty little head about it.
Riddle me this, why is there such a thing as proprietary drivers for anything? Especially consumer facing products like this?
Don’t you want anyone and anything using your product in any situation? Help me understand NVIDIA’s bit with this?
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.
deleted by creator
AMD isn’t, and they used to be significantly worse than Nvidia about proprietary drivers.
deleted by creator
People held the same opinion about them though. How is that not relevant?
deleted by creator
Whatever, dude.
Likely a combination of 4 things:
-
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.
-
They can open their code without merging into mesa
-
They don’t want you to use “old” GPUs
Sure but why open their code without getting the integration benefits?
- Getting to use GPL-only symbols
- Still much easier for distros
- Example of drivers
And again we are talling about code not being rejected as main goal.
-
-
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.
All ml, ai, hpc is done on Linux. They are getting a lot of money because of the hype.
They need Linux drivers. No way hpc can be done on windows. But it can be done on amd
They don’t have to offer Linux drivers for free to the general public though. Ask yourself why they do that.
The problem is not mine. Is theirs. They want to use functionality written by others with certain requirements (i.e. that using that code requires disclosing the source code).
If they are not happy with that, that’s fine. They shouldn’t use those functionalities.
Problem is that they depends on Linux kernel for their biggest business (data centers). If they don’t support linux, market will shift to amd. As ML user, I am absolutely fine. I can use amd for our gpu cluster. I absolutely cannot use a non linux OS.
That’s their problem, not linux maintainers’ problem
With GPUs being used for AI stuff and all sane people using Linux for servers, no, Linux market isn’t small at all for Nvidia.
That’s all I see happening too. The Nvidia Linux drivers will just get worse and not solve anything.
It’s already a huge pain in the ass to use the proprietary drivers, the open source ones barely work as is.
The Linux market is too small for nVidia to care
I’ll fix it for you: “The Linux gaming market”
Linux AI market is their bread, butter and red caviar. Shim itself is enough proof they care.
deleted by creator
They don’t want you to see the “if benchmark_xyz { do less work }” blocks of code.
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.
a) Good for them
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)
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
Yes, even if it’s a dialog box with only a “No” button, despite how easy it would be to get it to return a different value.
DISCLAIMER: IANAL, this is not legal advice.
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
Not to be contrarian, but b) could well be a full decade of work and numerous individual projects
That’s just such a great image!
Made me lol
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.
Give the gigantic heatsink, that might actually work just fine. The PCI brackets are just stamped aluminium after all.
Lousy criminals. NVIDIA, I mean. If I wrote code like that, I’d be dragged in front of a judge and made to answer for breaking the DMCA. But if you’re a big, rich company, the government won’t touch you.
What ever happened to the source code nvidia did release. Was it released in such a way to where it is not helpful?
They are not legally allowed to build drivers from the illegally acquired source code.
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.
deleted by creator
I’ve always heard cleanroom, since you keep your coders completely isolated from the investigation team so there can be no question of code pollinating across, Just documentation to be reimplemented in a unique and different way.
deleted by creator
I don’t think they meant the hacked and released source code, I think they meant the kernel modules that Nvidia actually opensourced in may of '22
I have not had a look at it myself, but my understanding is, that that was/is only glue code to the closed source blob.
You are correct, it while it was technically driver for kernel, meaning it is using kernel driver api, it was not driver for graphic card. Just a bit different way to load binary blob.
That’s only for never generation cards, from 20xx series upwards I think.
But there’s still the proprietary driver for everything before that, including 1080 and such.
This is the best summary I could come up with:
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!
So what does that mean for me on Arch, how will it affect me?
ELI5?
If they don’t fix it before 6.6 comes out on Arch, you may have to use the LTS kernel.
I don’t use arch but I would guess you should avoid kernel 6.6 if you are using an nvidia card until we get more info about that.
It seems they just fixed symbol_get() so GPL-only symbols are avaliable to GPL driver
Phoronix thinks I’m using ad blocker. In fact I’m not. I don’t have any kind of adblocker on my network… *sigh*
Meanwhile me using ublock adblocker and flawlessly reading the content on firefox
Which browser are you using? Perhaps it has some built in blocking
Firefox 102.14.0esr.
I believe the standard amount of blocking in Firefox is:
- Social media trackers
- Cross-site cookies in all windows
- Tracking content in Private Windows
- Cryptominers
- Fingerprinters
Since the line between “ads” and “tracking everything people do on the internet” has been pretty blurred, perhaps the anti-adblock checker triggers on any of those.
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.).
I use Nvidia’s proprietary driver because the open-source Nouveau driver won’t work with my display. Will this update break the driver, or just make it slower?
I’d love to stop using Nvidia, but I don’t have much choice about using their proprietary driver until I get my next video card, or Nouveau starts working for me.
It probably means it’ll take longer for Nvidia to release a driver for Linux 6.6 and might stop them from doing so. They’ll probably find a way to circumvent this and continue to violate the GPLv2 the kernel is licensed under.
If your on a distro which gets a new kernel quickly it might be a good idea to pin Linux 6.5 so the system doesn’t update to a kernel which the driver doesn’t support. But whether that’s necessary woll probably be talked about more once 6.6 actually releases.
PS: If your on a 2000 series or later GPU you might actually be able to use nouveau at some point, since there’s ongoing work on an open source Vulkan driver with actually useable performance. Thanks to Nvidia it definitely won’t work on Pascal and earlier.
deleted by creator
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!
That’s unrelated to this.
Blacklist the Nvidia driver and un-blacklist nouveau. I’m going from memory, but I think if you can get to GRUB, you can append ‘single’ to your kernel parameters. That should get you into a system with minimal drivers loaded.
Noveau supports 2080 since 2019.
Nouveau is slow
Slow is better than broken.
TAINT_PROPRIETARY_MODULE & GPL Condom has to be intentional double entendre right?