414 comments

[ 2.6 ms ] story [ 400 ms ] thread
Nvidia module does not taint kernel anymore!
16xx, 20xx, 30xx, and some enterprise cards. Still great progress.
For the uninitiated: If the linux kernel is asked to load a module with an incompatible license, it's called "tainted": https://www.kernel.org/doc/html/latest/admin-guide/tainted-k...
I saw this message scroll by during booting, somewhere in 2004? I searched for it online and those were my first lessons on foss and the GPL. How great to see this happening. Is it the hack (I don't think so)? Is it the succes of Steam (Deck)? Is is Proton? Deep Learning? Probably all of it…
I wonder what impact this will have on the SteamDeck if any.
The Steam Deck uses an AMD GPU, so it was probably the other way around. I'm betting this was partly done so nVidia GPUs can be used in similar devices going forward.
I wonder if it is the result of the LAPSUS$ hack. This was their statement from early March:

"After evaluating our position and Nvidia's, we decided to add one more requirement."

"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."

"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 wonder if that means their userspace drivers will follow soon.
No way they're releasing CUDA or Nvidia RTX code. That'll stay closed source (and I respect that)
Well, the libre GNU world world will be able to use OpenCL with even more performance.
They may be limiting that stuff on the closed source parts or at the firmware level. Nvidia no way will allow full blown OpenCL/Vulkan performance and support on their cards.
Direct GPU assembly programing for even more performance, like with AMD GPUs.

I guess the nintendo switch "may" benefit from GPU assembly programing... that said, AMD GPU isa documentation is top notch and I wonder if nvidia will follow up to there.

I remember reading an article where it was claimed that Nvidia successfully did a “counter hack” on that group, whatever that means.

Considering this is coming well after the supposed deadline, I don’t think it’s related.

(comment deleted)
>If this request is not met, on Friday we will release the complete Silicon, Graphics and Computer Chipset Files for all recent Nvidia GPUs.

Since the deadline passed I guess Nvidia negotiated, or they were bluffing.

This doesn't actually solve the major standing issue with Nvidia's drivers as far as I'm aware, because the biggest thorn has been the secretful FALCON units, and the code signing of firmware blobs that's kept projects like nouveau from being able to gain traction.

Remember, it isn't enough that the kernel module is FOSS. The firmware is where the crux is.

Radeons have the same issue, tho.
Definitely. There are no coincidences in Nvidia strategy.
(comment deleted)
I wonder if this has been in the works for years, or if this is a reaction to the recent Lapsus hack.
I'd be interested to know too. The hackers purportedly demanded release of the Nvidia drivers as open source:

> The LAPSUS$ hacking group, which has taken credit for the breach, had an unusually populist demand: it stated that it wants Nvidia to open source its GPU drivers forever and remove its Ethereum cryptocurrency mining nerf from all Nvidia 30-series GPUs (such as newer models of the RTX 3080) rather than directly asking for cash. [1]

[1] https://www.theverge.com/2022/3/4/22962217/nvidia-hack-lapsu...

The datacenter focus here probably just means that $$$$ did the talking somewhere. AKA some large customer/former customer/potentially former customer said "open source or else" and they decided that having a couple people clean up, and push the special bits into the firmware/etc was a good way to solve the problem and keep $ALTERNATIVE at bay for the next generation or two.
Looking over the GitHub commit history of the two contributors on the repo, I’d say it’s a reaction.

These folks look like they’ve barely touched much open source code before now.

A planned run up would surely have these folks doing more GitHub based commits even if on very private repos.

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.

Holy shit.

It's even licensed as MIT.

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.

This is one of the biggest things to happen to hardware support for open source OSes in well over a decade.

Nvidia have always shipped closed-source drivers, despite AMD and Intel providing open source drivers for their GPUs. This made the experience on Linux second class to Windows, where while also closed source, at least you knew that bugs would probably get fixed. Various non-core features simply wouldn't have support on Linux, e.g. Optimus. Also, shipping closed source binaries would limit which kernel you could run to supported versions.

Lastly, of course, this opens the way to non-Linux OSes receiving support as well.

If you just search the web for "Nvidia issues Linux" you'll see quite a few complaints. Particularly from people who have obscure configurations -- they pretty much had no chance of getting anything to work.

This is a good technical summary of the impact but I think misses the somewhat emotive history here.

See things like this infamous clip from Torvalds[0] for more context on the community sentiment around nvidia in general.

[0] https://www.youtube.com/watch?v=IVpOyKCNZYw

Don't even have to click to know what that is, first thing that came to mind when I saw this headline
> where while also closed source, at least you knew that bugs would probably get fixed.

Yeah, I waited just 18 months (IIRC) for proper DisplayPort DPMS signalling, so my monitor can sleep.

Linux driver bugs get fixed, albeit accidentally.

I think the GP meant the windows drivers would be fixed; not the linux drivers.
>If you just search the web for "Nvidia issues Linux" you'll see quite a few complaints.

I'd wager that is the BULK of the linux-power-user complaints. I'm definitely never buying NVIDIA again for my next PC. The last time I decided to go for Nvidia was because of their CUDA/ML eco-system.

Next time I'll just use the cloud for any ML/GPU-computing. The amount of time wasted by nvidia-driver nonsense is actually absurd !

If the module can use MESA, good. If not, meh.

>. Adding enough just emulation for the userspace driver would be a lot easier than maintaining a complete linux emulator.

OpenBSD it's the best BSD on support for free (Intel) and semi free drivers such as the ones from AMD, they already adapted all the src from Linux, KMS included.

That's very different. The source code for the userspace portions of the MESA drivers for AMD/Intel are released under a permissive licenses, so OpenBSD (and other BSDs) have been able to modify them to compile under their OS (and get those changes committed to the original tree). With NVIDIA, the userspace portions don't use MESA, so would need some form of translation layer to work on an OS other than Linux.

But, said translation layer would have limited scope; so is a lot more feasible than maintaining a general purpose translation layer indefinitely.

Official NVidia drivers natively supported FreeBSD for over a decade now.
KMS is from the kernel.
Wow! MIT is about as clean as you can go, with no real reserved advantage to dual license etc using Affero GPLv3 or similar. Not bad.
(comment deleted)
def seems related
it's not at all. it's been in the works via redhat, canonical and others for probably 2 years now.
I wonder if this release will meet the hacker's definition of open source in this case. People like that have a habit of changing the goal lines.
(comment deleted)
That might not even be overstatement. The last few big desktop linux crash-and-burns I've run into all had display drivers as a common component.

I like back-foot, underdog NVIDIA. Ascendent AMD hasn't drawn my ire yet, let's hope power corrupts slowly.

> I like back-foot, underdog NVIDIA. Ascendent AMD hasn't drawn my ire yet, let's hope power corrupts slowly.

That "back-foot" "underdog" nVidia has the edge in the video market still... and 3x the market cap of AMD.

APUs are eating the market of novideo, see e.g. the performance of the M1 iGPU
Are APUs different from what we used to call integrated graphics cards?
The difference is getting blurry. Apus have generally better communication/latency/shared resources with the CPU. The ultimate ideal of an APU is to have a unified memory with the CPU, which is the case in e.g the PS3/PS4 Despite progress in heterogenous computing (the neglected HSA), in SOCs, 3D ingerposers, high bandwidth buses interconnects and 3D memory such as HBM, the PC platform has yet to see a proper APU. In fact the M1 is probably the closest thing to an ideal APU on the market. But yes the more time pass, the more the term IGPU denote APU. AMD bought ATI because of the fusion vision, the idea that sharing silicon, resources and memory between the CPU and the GPU would be the future of computing.

An unrelated but very underrated is the egpu. Egpus are external to the pc unlike a dgpu. So you can buy a thin laptop, connect it via Thunderbolt to a rtx 3080 and enjoy faster gpu performance than allowed on any laptop on the market, and enjoy a thin lightweight, silent laptop the rest of the time. Disclaimer Thunderbolt is still a moderate limiting factor in reaching peak performance.

> the PC platform has yet to see a proper APU

Wat. AMD literally invented the term 'APU' and has been shipping them since 2011. Fully unified CPU+GPU memory since 2014's Kavari. That's full cache coherent CPU & GPU along with the GPU using the same shared virtual pageable memory as the CPU.

The M1 didn't add anything new to the mix.

It's a spectrum. I don't think that cache coherency was useable by developers/compilers. The two only ways I know (HMM and HSA) are niche, used by nobody. GPGPU compute would GREATLY benefit from programs that can share memory between cpu and gou without having to do needless high latency round-trips and copies. So they failed in practice. They never did a CPU addressable HBM interposer (despite having invented HBM) unlike what I believe is the M1.
> An unrelated but very underrated is the egpu. Egpus are external to the pc unlike a dgpu. So you can buy a thin laptop, connect it via Thunderbolt to a rtx 3080 and enjoy faster gpu performance than allowed on any laptop on the market, and enjoy a thin lightweight, silent laptop the rest of the time. Disclaimer Thunderbolt is still a moderate limiting factor in reaching peak performance.

Not just for laptops: this sounds also a bit like what the Switch dock could have been.

(And in some sense, it reminds me of Super FX chip for the SNES.)

APUs are AMD-speak for CPU and GPU on the same die (Intel has similar but doesn't call them that). Integrated graphics cards (a misnomer since there is no card -- IGP or iGPU is probably more accurate) may or may not be on the same die (instead could be on the motherboard, particularly in the chipset). That design is pretty rare/antiquated at this point though. Being on the same die means higher bandwidth, lower latency, etc.
I think Intel calls them XPUs.
Integrated video cards were integrated onto the motherboard. APUs/iGPUs are integrated into the CPU.
It's fair to extrapolate because their strategic decisions will be based on extrapolations.

NVIDIA had to overclock and hustle the current generation of cards and it's looking even worse for the next generation. Software was a moat when AMD was heavily resource constrained, but now they can afford the headcount to give chase. Between the chip shortage and crypto, there was plenty of noise on top of fundamentals, but one doesn't make strategic plans based on noise.

This is all speculative, of course. I'm sure if asked they would say it was a total coincidence. Just like AMD and Intel switching places on their stance towards overclocking. Complete coincidence that it matches the optimal strategy for their market position -- "milk it" vs "give chase." Somehow it always seems to match, though, and speculation is fun :)

NVIDIA is well, well ahead of AMD.

NVIDIA's cards were faster than AMD's with the huge gap in transistor density that was the Samsung fab.

Don't get excited for the AMD graphics division up in Canada.

>NVIDIA's cards were faster than AMD's with the huge gap in transistor density that was the Samsung fab.

They are roughly at par. AMD does better at lower resolutions because of their cache setup.

With the refreshed cards, AMD is slightly ahead.

Keep in mind that is at a particular price point.

NVIDIA's top of the range chip is ahead of AMD's, and the 3080's SKU is at a lower binning point on the bell curve than the 6950's.

Hence NVIDIA would be able to maintain a performance per watt crown at the 6950's price point if it sold its highest bins cheaper.

Given the gap in transistor density, that is an exorbitant architectural delta.

I wish my company were in the same desperate situation as Nvidia. One where we’d be faster than the competition with similar perf/W while using a much inferior silicon process…
Amd changed their windows drivers to not output video if it detects its running in a VM. Nvidia went the other way and stopped doing so.

Both can/could be bypassed with some libvirtd xml magic, but still. Nvidia seem to slowly stop being assholes, AMD started already.

>Amd changed their windows drivers to not output video if it detects its running in a VM.

What? Why?

Presumably market segmentation. You're only allowed VMs that dont feel like shit (i.e. have gpu accel) if you pay for enterprise vGPU shit. Can't have someone buy two of your GPUs to give one to a VM, obviously.
> pay for enterprise vGPU

For AMD the driver is difficult to find and poorly documented (and only available on ESXi unlike NVIDIA vGPU support for Xen, Hyper-V, KVM, Nutanix, and ESXi, etc.). At least the guest drivers don't have licensing issues unlike with NVIDIA IIUC.

And very few AMD GPUs even support it...

(and good luck finding a remotely recent AMD GIM driver)

Plus the quality of the overall experience. And I understand NVIDIA is even worse re: GPU virtualization.

The end result is that it is unusable in practice. Very difficult and restricted to few CPUs/GPUs and very specific software chain.

Otherwise, it'd be open source, universally available and trivial to use.

The good news is that I understand this support is actually good on the Intel side, and Intel has promised that they will actually release competitive GPUs soon. Should this truly be the case, it will automatically make Intel the go-to for GPU virtualization, and might help motivate NVIDIA/AMD to stop segmenting re: GPU virtualization, ending this shitty situation.

> And I understand NVIDIA is even worse re: GPU virtualization.

Nope, it’s much better on the nvidia side actually. The latest AMD GPU with a publicly accessible OSS GIM driver is the AMD S7150, which was released in 2016. (https://github.com/GPUOpen-LibrariesAndSDKs/MxGPU-Virtualiza...)

And it’s locked out from most AMD SKUs today, so even if you got a modern GIM driver, you’ll need very special SKUs to enable it and use virtual GPUs.

> The good news is that I understand this support is actually good on the Intel side

Not anymore. GVT-g is gone on Ice Lake (Intel 10th generation mobile, 11th gen desktop) so that you can no longer do hardware vGPU on newer Intel parts at all.

Sad thing is that what you said used to be true.

Meanwhile NVIDIA GRID needs licensing fees but actually works, with high end GPU options being available. And has all the fancy stuff like vGPU live migration for seamless maintenance too. It doesn’t even compare.

Given the recent moves by Nvidia I wonder if they'd consider the holy grail of passthrough: Officially supporting (even a single) vGPU on linux so that you could use the card on the linux host and a guest.

The tech already seems possible since people have modded the enterprise drivers to do it, but that isn't official support. A few years ago I would have said there was no chance of this happening from nvidia. But I was also hopefully Intel's dedicated GPUs would support GVT-g back then!

Because the drivers for the consumer GPUs are not licensed for datacebter use and obviously VM == datacenter
This is a problem for QUbes OS which has a legitimate need for vgpu on a desktop operating system.

It's because of this arbitrary restriction that Qubes is not able to provide GPU acceleration, which is a huge barrier to its adoption.

Wow, I hadn't heard that AMD added that check. Between that and their unending reset problems that makes them a completely inferior choice for GPU passthrough. Before Nvidia stopped the passthrough blocking you could make a case that AMD was a better choice.
Just had my first graphics stack issue since 2013 upgrading to Fedora 36 and was caught flat-footed. I've got multiple GPUs, so now I've got to figure out if it's Wayland, amdgpu, nouveau (since unblacklisting), or dkms. "Just working" has made me lazy.
Was in similar boat recently, I'm not that up to day with the whole X11 vs Wayland, but dammit am I mad !

I feel like JUST as the "Linux X11 Discrete Graphics Scenario" started to become more stable and less (not none, but less) of an issue to setup and upgrade without getting black screens, the Linux-world is now turning to a "new windowing server" i.e Wayland, we starting all over again sigh

Maybe the answer to having a decent and carefree discrete graphics Linux stack is to fork (Don't you dare link to the XKCD comic about 'Standards') SteamOS.

They are at least motivated (as it's part of their core product) to make it work most of the time. And have a done boat load of good work for Linux ecosystem. Well done guys ! :)

(comment deleted)
> It's even licensed as MIT.

Wouldn't be the first time. The old 2D "nv" driver was part of X11, and maintained by Nvidia employees.

The catch, besides it being 2D only, was the "source code" was actually somewhat obfuscated.

Phoronix link about what this actually means:

https://www.phoronix.com/scan.php?page=article&item=nvidia-o...

Main takeaways:

- support for gaming workstation GPUs is alpha

- the user space stuff (OpenGL/Vulkan) is still closed source. (A LOT of heavy lifting is done here.)

Ok, we've changed to that from https://developer.nvidia.com/blog/nvidia-releases-open-sourc... above. Thanks!

Edit: ok, changed back

Please change it back. Nvidia was the official source and Phoronix is low-quality blogspam of dubious accuracy.
Uh why would you change from a good, official source to a worse rehash of the same stuff with less detail from Phoronix?

I don't even dislike Phoronix, but what was wrong with the first-party source?

User suggestions about better articles tend to be pretty reliable, so we tend to trust them. Sometimes they turn out not to be better (at least not by consensus)—in which case we can change the link back. I've done so in this case.

If you want to understand this process, you should understand that none of it involves actually reading the articles!

I would argue the Phonorix is the vastly superior link.

That blog is the most dedicated to the confluence of 3D, Linux, and open source.

The Nvidia copy is typical engineering marketing copy. The Phonorix post dives into everything with great detail and goes further by discussing the future of open source Nvidia support with the upcoming technologies, and existing technologies (Noveau, Mesa, etc)

Nvidia fanboys care little for Phonorix because that site consistently points out how unfriendly and uncooperative Nvidia has been with the whole of the Linux community. (Web search for yourself Nvidia EGLStreams GBM.)

> the user space stuff (OpenGL/Vulkan) is still closed source. (A LOT of heavy lifting is done here.)

Much like AMD - surely they benefit a lot from having a relatively stable non-kernel ABI they can target, though. The problem right now is that everything changes every time the kernel is updated, but if you turn it into a "here's how you dispatch PTX to the card" layer and a "here's how you turn OGL/Vulkan into PTX" blob then the dispatch layer probably isn't changing as much.

(graphics doesn't really use PTX but you get what I mean... dispatching compiled assembly and graphics API calls to the card.)

It doesn't help further the copyleft cause as much as if NVIDIA had open-sourced everything, of course, but from an end-user perspective of "I don't want my kernel updates to be tied to my driver release-cycle" it should solve almost all of the problem?

AYYYYYY

Shout out to nvidia for this.

nvidia, fuck you no more!
Hopefully Linus concurs
I'm curious to see how they'll manage updates, so far it's one mega commit.

> Showing 2,519 changed files with 1,060,036 additions and 0 deletions.

That's not really surprising when they are importing to a new repo and they aren't sure there isnt anything confidential (or bad optics) in previous commits or message
from the article:

> With each new driver release, NVIDIA publishes a snapshot of the source code on GitHub

That definitely sounds like squashed commits will be the norm for now

According to README:

> There will likely only be one git commit per driver release.

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.

I wonder how much LAPSUS$ hack has to do with it.

I wonder if nvidia hardware programing interface is a mess like AMD one, just curious.

>I wonder how much LAPSUS$ hack has to do with it.

Probably zero.

1) There have been rumors about this for months

2) The hacks only happened very recently, this certainly would have taken longer to do than that.

Do you have a reference for the AMD interface? I know it exists but don't know where to find it.
If I recall properly, the command circular buffers of 2^n bytes ("queues" in vulkan3d) are VRAM IOMMAP-ed (you just need atomic R/W pointers for synchronization, see mathematically proven synchronization algorithms). There is a "GPU IRQ" circular buffer of 2^n bytes coupled with PCIE MSIs (and I recall something about a hardware "message box"). The "thing" is, for many of them, how to use those commands and how they are defined feels very weird (for instance the 3d/compute pipeline registers programing).

Have a look at libdrm from the mesa project (the AMDGPU submodule), then it will give you pointers where to look into the kernel-DRM via the right IOCTLs.

Basically, the kernel code is initialization, quirks detection and restoration (firmware blobs are failing hard here), setting up of the various vram virtual address spaces (16 on latest GPUs) and the various circular buffers. The 3D/compute pipeline programing is done from userspace via those circular buffers.

If I am not too much mistaken, on lastest GPU "everything" should be in 1 PCIE 64bits bar (thx to bar size reprograming).

The challenge for AMD is to make all that dead simple and clean while keeping the extreme performance (GPU is all about performance). Heard rumors about near 0-driver hardware (namely "rdy" at power up).

> Have a look at libdrm from the mesa project (the AMDGPU submodule), then it will give you pointers where to look into the kernel-DRM via the right IOCTLs.

Exactly the pointer I was looking for, thank you.

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.
Hell is freezing?

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?

It means Nouveau will finally can get good I think.
Nope, nouveau is still hosed because they've been blocked ny Nvidia's secrutful FALCON's which have the reclocking and power management API's locked away behind proprietary firmware blobs.
This new driver targets GPUs with FALCON, and nouveau will be able to control it, as FALCON is GSP (https://www.phoronix.com/scan.php?page=news_item&px=NVIDIA-R...).
They're likely changing it because security researchers pwned FALCON.

There is a way to leak the hash against which High Security mode FALCON compares the microcode for signature validation.

So hopefully you'll forgive me if I maintain my skepticism over this being anything but Nvidia iterating to close a massive security defeat by redesigning their FALCON controller to mitigate the thorough pwning that's been achieved.

I don't doubt there are other improvements, I just think the timing is pretty darn convenient, especially for being in the midst of a semiconductor shortage for going and doing a massive manufacturing change like that.

Reading the hash doesn’t sound like much of a flaw to me, could you elaborate or provide a link?
nvidia switched away from FALCON to RISC-V.
Nouveau is still needed if you want open-source userland; the new nvidia open source thingy is only kernel-side and presumably works only with their own userspace drivers.
> presumably works only with their own userspace drivers.

For now, the plan is to replicate the way AMD drivers

Work, with having shared firmware but separate user lands, one closed and the other libre(MESA for AMD, Nouveau++ for nvidia?)

More details here from Red hats Christian schaller

https://blogs.gnome.org/uraeus/2022/05/11/why-is-the-open-so...

Nouveau is still needed because Nvidia's drivers do not conform to Linux kernel standards, so they can't be upstreamed. Nouveau is conforming, so it still has a reason to exist. Fortunately Nouveau can more easily improve by using Nvidia's now-open source as a reference.
From the linked article:

> The current codebase does not conform to the Linux kernel design conventions and is not a candidate for Linux upstream. [...]

> In the meantime, published source code serves as a reference to help improve the Nouveau driver. Nouveau can leverage the same firmware used by the NVIDIA driver, exposing many GPU functionalities, such as clock management and thermal management, bringing new features to the in-tree Nouveau driver.

Ten bucks Linus will curse at them in the near future.
(comment deleted)
May be but atleast he wont show the middle finger
Would love to hear from folks who worked on this!

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.

I didn't work on this but I have watched it with interest for a very long time. It has been a strategic initiative in order to improve the GPU compute ecosystem. No one loves having a tainted kernel and everyone who uses a GPU with Linux (which is almost all data center GPUs) would prefer to have the kernel modules open source. It took a lot of work and planning to figure out how to do this over many teams for a very long time, and then an enormous amount of testing to prove the new drivers were fast enough to be deployed.
It could be quite interesting to outline just how far back in time this started (with lots of details), considering those demands to open-source certain code that were apparently made around March 3rd this year.

My own motivation is to believe that NVidia isn't as broken as everyone insists it is, I guess :) and more broadly speaking it honestly seems like a Good And Interesting Idea to make the situation more clear in any case, particularly given the coverage and significant collective awareness it's attracted.

Also, I found https://www.phoronix.com/scan.php?page=news_item&px=Big-New-... in another comment - 22 May to 12 May, that's some serious stamina lol

This functionality has been rolled out (shipping) for the past year. From the blog post: "This was made possible by the phased rollout of the GSP driver architecture over the past year, designed to make the transition easy for NVIDIA customers. https://download.nvidia.com/XFree86/Linux-x86_64/510.39.01/R..."
And further, the GSP driver arch depends on the GSP controller available on Turing and later GPU's. Per wikipedia Turing was unveiled in 2018, so I guess design work was started several years prior to that unveiling. Not saying the decision to open source the driver was made back in 2015(?) or so, but the wheels were set in motion that eventually enabled the open source decision a long time ago.
Why is the firmware closed source?
So that people could not bypass DRM (Digital Rights Management, not Direct Rendering Manager). And signing the firmware would not help because with source code it is easier to find vulnerabilities in signature verification code. Though they still could publish the firmware partially.
See the RedHat graphics director here: https://linuxactionnews.com/240

He says that Nvidia's interest intensified in the last 3 months. Probably Steam Deck challenging their monopoly is making them uneasy.

Wow, this is big for Linux & Nvidea isn't it?
Does this mean we get a bit closer to having native, kernel-level Optimus drivers for Linux?
Nvidia... THANK YOU!
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.

With the source available... it could be possible! Of course, CUDA support may never happen there, at least not using open source code.

Which ones are connectable to it? And does this rely on the "replace the USB3 controller with a PCIe bridge" hardware mod?
Parent is talking about the Compute Module 4, which can plug into (among other things) a first party IO board that has a PCIe 1x slot. With a simple hardware mod (cut the slot connector, cut the GPU, use a riser, etc etc), any GPU can physically fit. He's only gotten one to work so far though, an ancient ATI card. Lots of fun YouTube videos and GitHub issues about this if you search parent's name or look at links in his profile.
<meta>-F geerl: not disappointed

Thank you for the work you do, I'm going through your ssd on rpi4 today!

Its a bit too early now isn't it ? The driver is still very alpha, and doesn't support most display stuff.
This early is a good time to also iron out some of the inevitable aarch64 bugs that have already been ironed out in other kernel drivers for AMD/other stacks.
It… works. I'm typing this comment from a machine running the new FOSS drivers like a champ on KDE Plasma. Not that it is perfectly stable, but it definitely works.
With the kernel driver open source + redistributeble firmware I guess the graphics APIs can be provided by mesa.
Nouveau has very close to 100% openGL and ES support. It has a deficit of out of specs extensions support though. Also no opensource nvidia vulkan implementation??

https://mesamatrix.net/

I guess nobody bothered to add vulkan support due to almost unusable performance without reclocking. Hopefully some work will get started with this news!
reclocking.. You're reminding me of so many memories of years of a decade of reading phoronix nouveau news. (btw nouveau mean new in french)
(comment deleted)
Well, then... hopefully FreeBSD and illumos will finally start getting support for CUDA.
This. A clutch of really nice laptops fail hard when you include the .ko GPU blobs, and most developers in BSD land shrug and say "use VESA 2D" which is fine, for all but high-DPI use. (ok, its fine everywhere, but sub-par. you use more grunt doing less work to try and deal with dumb video device)

so ok, not exactly "this == CUDA" but this == decent kernel module drivers for the GPU.

Anyone know if this makes it easy to hack in SR-IOV support for desktop class gpus?
For those who didn't use Nvidia on linux in the old times:

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.

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!

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.

I used and recommended ATI and INTEL for most of the people I could for a long time because of this.

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.

EDIT: Remember you had to recompile the shim at every kernel update and replaced "module" with "driver".

I remember using that for a Geforce2 MX and the installer.

People has no idea on what FREEDOM do you have if you aren't bound to crappy licenses with Nvidia and CUDA for serious computing where you can be limited per core.

> The module 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.

I never quite understood this logic: the same (?) binary blob is used for the FreeBSD and Solaris drivers.

* https://www.nvidia.com/en-us/drivers/unix/

So how can it be a 'derivative' of the GPL Linux if it it also used on non-GPL systems?

That's an interesting cognitive dissonance that I've always been fascinated by. I've heard people criticize developers who release proprietary drivers for the linux kernel, but never those who release something dual licensed as GPL2/MIT, or those who distribute a dual licensed GPL2/MIT module as if it were solely under the MIT license; surely that would violate the Linux kernel's GPL (in being a derivative work) as much a proprietary module would?
MIT is Ok because MIT is compatible with GPL. GPL has language saying you can't add restrictions, but the combination GPL+MIT is essentially GPL so it's ok.

Dual GPL/MIT essentially means that you as a user can choose whether you to use the code as GPL or as MIT, but if you contribute to the code you must provide the full GPL+MIT rights.

As to why release a driver as GPL/MIT instead of just the GPL, I think the idea is that the BSD's (or other OS'es) can take the code and use it under the terms of the MIT license and port it to their kernels. IIRC there are many drivers in Linux that are dual licensed in this way for that reason.

I'm not sure about the details, but to write a linux kernel module you must include some .h files under the GPL license. You really have to include it because linux ABI is intentionally not stable exactly to prevent proprietary abuse. So, AFAIK, every functional linux kernel driver must be released under the GPL.
APIs and ABIs should be open. GPL taking a different stance here is not helping anyone.
The point is: if you want to include a GPL licensed header, your code must comply with its license. Your opinion on the GPL is an entirely different matter.
btw for the Oracle vs Google lawsuit, OpenJDK was licensed as GPLv2. It was very much a GPL (purported) violation case.
Because to make a driver work with Linux you have to add Linux-specific code that typically uses Linux's source code, and that combination of the driver and Linux-specific code could be considered a "derivative".

Note that the word "derivative" is used here as defined by the license, not in its plain English meaning.

You quickly get into something similar the ship of theseus (or Trigger's broom) argument. You write some code that must link to a GPL library to functon; that code is now GPL because it's a derivative work of the library.

You rewrite that library under an MIT license, so now your code can link to that and run. Is your original code still a derivative work?

Your original code is never a derivative work. You retain copyright to the code you wrote yourself, even if it's combined with GPL later. GPL even contains this interesting clause:

> You are not required to accept this License, since you have not signed it.

So to answer your question: no, unless you've copied bits of GPL library into your code (or similar that would be judged as a copyright violation).

There's also a crappy situation of Oracle vs Google that made APIs copyrightable, so now it's not entirely clear if your code + your rewrite of library is still yours if it uses an API of the GPL library.

> Your original code is never a derivative work[...]

> > You are not required to accept this License, since you have not signed it.

> So to answer your question: no, unless you've copied bits of GPL library into your code (or similar that would be judged as a copyright violation).

Actually that clears a lot up for me, and I'd have considered myself reasonably knowledgeable when it comes to copyright in general; I think I had a few conflicting ideas about what it means to be an original work. Thank you.

> unless you've copied bits of GPL library into your code (or similar that would be judged as a copyright violation).

Which might happen very easily: one #include and you might be there.

I’m not a lawyer, but my understanding is that the GPL requires you to make source available upon request to users of your software.

So I guess if someone asks you for the source code, you can require them to prove that they actually have a copy of the GPL version, and not the new one.

The license is abundantly clear about this and answers all your questions.

It matters who is doing the rewriting and how they got the code in the first place.

I think one of the matters that confused me about it was the CLISP question. IIRC, CLISP linked to readline, but was released under a non-GPL license.

RMS contacted them, and asked them to relicense. They suggested either reimplementing a stub readline-library, or rewriting their line editing code against another lib instead. RMS insisted that they would still be a GPL-derivative, resulting in the current license situation.

I may be misremembering the recount of this, as this was way before my time.

RMS may have believed or wanted that, but it is my understanding (IANAL!) that the case law has been settled differently. If you are found in violation of the GPL due to a dependency you weren't aware was released under the GPL, you can fix that violation by rewriting your application to avoid the GPL dependency.

CLISP et al cannot be forced to distribute their code under the GPL. It's their code and their choice; contract law cannot compel someone who has never entered into the contract to do something against their will -- CLISP didn't knowingly distribute GPL code, so that distribution doesn't trigger acceptance of the GPL terms. They just have to make the situation right once they're made aware of the violation.

It's more nuanced. If you've included GPL code and modified or redistributed it, then you either have to comply with the GPL to have permission for that use, or you've potentially committed a copyright violation.

To comply with the GPL you only need to publish the one specific snapshot of source code you've combined and redistributed with GPL code, but you don't need to permanently relicense your project if it doesn't contain any code you don't have rights to use. The "tainted" version will be granted as GPLed forever, but other earlier or later versions that don't use any GPL code don't have to.

Or you can go the copyright way, and claim it wasn't a copyright violation (because it was a fair use, or non-copyrightable code) or settle the matter in whatever way the law lets you get away with.

That isn’t any different from what I said though? If someone points out you violated their copyright then you need to (1) fix the issue, and (2) pay appropriate damages. But for open source software the damages are nil, so fixing the violation is the only thing you need to do. And you can do that by either releasing the code as GPL, or removing the dependency. Either would be an acceptable remedy, in the eyes of the law.
Here's the email chain between RMS and Bruno Haible, author of CLISP:

    https://sourceforge.net/p/clisp/clisp/ci/tip/tree/doc/Why-CLISP-is-under-GPL
Apparently the situation was that CLISP was distributed as `lisp.a` and `libreadline.a` (with source for Readline included) and the end-user linked them together. Haible offered to write a `libnoreadline.a` library, exporting Readline's function but not providing their functionality, but RMS insisted that the result would still be a derived work of Readline.
> The license is abundantly clear about this and answers all your questions.

The GPL is emphatically not clear about anything. It's a legal minefield precisely because no one has any idea what it means, and everyone has their own interpretation.

> It matters who is doing the rewriting and how they got the code in the first place.

Well, then,... that's about as clear as mud.

Linus Torvalds:

    But one gray area in particular is something like a driver that was
    originally written for another operating system (ie clearly not a derived
    work of Linux in origin). At exactly what point does it become a derived
    work of the kernel (and thus fall under the GPL)?
    
    THAT is a gray area, and _that_ is the area where I personally believe
    that some modules may be considered to not be derived works simply because
    they weren't designed for Linux and don't depend on any special Linux
    behaviour.
    
    Basically:
     - anything that was written with Linux in mind (whether it then _also_
       works on other operating systems or not) is clearly partially a derived
       work.
     - anything that has knowledge of and plays with fundamental internal
       Linux behaviour is clearly a derived work. If you need to muck around
       with core code, you're derived, no question about it.
* https://yarchive.net/comp/linux/gpl_modules.html

Then you have things like (Open)ZFS and DTrace.

> don't depend on any special Linux behaviour.

This is the key point, and it is nearly impossible for firmware blobs to depend on any OS behavior, let alone "special Linux behavior". The only way they could do so is via the open-source part, so it should be easy enough to check that.

By that reasoning every program written to run on MS-DOS was a "derived work" of MS-DOS. Such programs were written with MS-DOS in mind, and often mucked around with fundamental internal MS-DOS behavior.

Same with pre-OS X Mac. Most Mac programs were written with Mac in mind, and it was not uncommon for programs mucked around with OS code and data.

What matters is how copyright law defines derivative work, and in the US that has nothing to do with whether or not your work was written with another work in mind or plays with fundamental internal behavior of another work. What matters is whether or not it incorporates copyrighted elements of another work.

> Note that the word "derivative" is used here as defined by the license, not in its plain English meaning

The license does not contain a definition for "derivative" nor of the similar term "derived" which it also uses.

"Derivate" I think here is red herring. The biggest problem is that the combination of kernel + nvidia modules could never be redistributed, which means that technically no distro should have been able to ship these drivers by default.
If I remember correctly, the open source ATI drivers were always a bit buggy and it wasn't that easy getting them installed either. The tradeoff was always Nvidia: proprietary but works well, ATI: open but buggy.
As far as I'm aware, since AMD took over, they've been fairly stable (although occasionally omitting support for the latest features until the next kernel release)
IIRC were some problems with the Linux drivers for Navi 1.0 that continued for about a year after launch. Supposedly those have been fixed.

My Vega 56 has been perfectly stable and trouble-free for years.

As a Navi 10 (5700 XT) owner, those problems still exist. It used to be that at least once a week while gaming the driver would crash with some undecipherable error message in dmesg, and because the card had the reset bug the only recourse was to reboot the machine entirely. 4 years later the only thing that's changed is that the crash shows up less frequently (I'd say once every 3 months).
Are you using Debian or Ubuntu LTS? LTS distros with older kernels are a separate beast when it comes to hardware support.
Have you ruled out power supply issues and are you running at stock clocks (for CPU and RAM as well)?

Anyway, going from "at least once a week" to "once every 3 months" means that 90% of your crashes have been fixed.

> with some undecipherable error message in dmesg

What kind of message would you expect that would be more decipherable.

> Have you ruled out power supply issues and are you running at stock clocks (for CPU and RAM as well)?

Yes for both. No overclocking whatsoever.

> Anyway, going from "at least once a week" to "once every 3 months" means that 90% of your crashes have been fixed.

I don't think I'm supposed to be ok with a device I paid premium money for crashing once every three months with no explanation from the manufacturer. They could've fixed 99% for all I care, it's still absurd that it's even an issue in the first place.

> What kind of message would you expect that would be more decipherable.

One that would lead me to an actual solution or at least an explanation, not just year old threads of people reporting this exact issue with replies saying it was fixed in kernel version X, where X is different for each thread.

> the open source ATI drivers were always a bit buggy and it wasn't that easy getting them installed either.

No. Once mainlined, you had to do absolutely nothing to get the hardware working.

The part about them being buggy is definitely true.

Up until somewhere around 2016-2017 the ATI/AMD drivers were really bad.

I had an "HD 7850" GPU on Linux around that time and it was barely usable. The performance was less than half of what you got on Windows, and the drivers would crash very often, sometimes several times a day if I was trying to play games like Team Fortress 2.

It was so bad that I decided to replace the HD 7850 with a new GTX 970 and decided to not buy anymore AMD GPUs for the indefinite future. The GTX 970 was stable and performed very well with the closed source drivers, and other than them being closed source I never had an issue with them. I always installed the closed drivers through the system package manager which handled all of the tricky stuff for me (Arch Linux maintains the nvidia driver as a system package and makes sure it runs on the current kernel before releasing it).

In modern times the situation has flipped though. I still haven't bought an AMD GPU since then but I am pretty sure my next one will be.

About them being buggy, I won't discuss. But you didn't have to do anything to even get them installed.
For the people downvoting. The dude is saying there was nothing to download since the drivers come with the is install.
Just bought a 6600XT, and it's been great.

Literally just plugged it in and installed the driver packages I didn't on initial setup, on most distros it would've literally been plug and play.

I also had a HD 7850, and though I had pushed it less than you I never noticed any huge issues.

It was in a uniquely terrible position of being one of the last cards released supported by radeon when all the development had moved to amdgpu, which it supposedly could run if you jumped through the right hurdles. I remember the xorg feature table having several things working for older and newer models but not the 7850.

Still, my experience with it led to another AMD card that I've also been quite happy with.

I agree; 2016-17 was about the turning point. I bought a Fury X around then, and it was flawless back then. In contrast, my old nvidia cards had become unusable.

On the AMD, FreeSync and HDMI audio didn't work at first. (For any card; the driver documentation said those features were a work in progress.)

Anyway, I unplugged it for a year or so, and recently plugged it back in. One apt get upgrade later FreeSync and HDMI audio just work.

It's gotten to the point where I'd opt for an ARM laptop over one without AMD or intel graphics. From what I can tell suspend resume doesn't work on intel CPUs (on windows or linux), so it's basically AMD GPU or no x86 at from a compatibility perspective. (Did AMD also eliminate S3 suspend, and not replace it with a working alternative?)

I belive this is talking about radeonhd/radeon/ati circa 2015 or earlier.

Around then, you still had to install the corresponding X11 portion of the drivers, though the nvidia eqiuvalent had the same limitation.

radeon/radeonhd, or fglrx (which was the propriertary AMD graphics) absolutely worked worse than nouveau or the proprietary nvidia drivers at that time. It was only a couple of years into amdgpu where the tables turned.

At this point it would be nice if they'd backport their Linux drivers to Windows, as I'm now on my third AMD GPU in 12-13 years (HD 5770, r9 290x, 6900XT) to have issues where the driver will randomly crash when playing hardware accelerated video on one monitor while playing a directx game on another monitor under Windows.

I'm pretty sure I needed to mess with xorg.conf and other settings to get things like screen resolution and Compiz working correctly. I don't know what part of the stack was responsible for those issues, but I thought it was related to the graphics driver.

I could be misremembering though, this was 15+ years ago now.

Except having been downgraded from OpenGL 4.1 to OpenGL 3.3, because the GPU wasn't interesting enough, well done AMD open source drivers.
> I used and recommended ATI and INTEL for most of the people I could for a long time because of this.

Same here but recently I somehow got a 3700X and there's no integrated GPU so I had to look for a GPU. I like my PC not just quiet but nearly silent, so a GPU with a fan was a big no-no. I couldn't find any single GPU able to drive 3840x1600 without a fan... Except for a NVidia one. Of course the proprietary Linux drivers are somehow buggy: the "sleep" doesn't work correctly, failing to reinitialize the correct video mode when waking up. It's always, always, always the same with NVidia GPUs on Linux. Thankfully I can switch to tty2, then back to graphical mode but I hate the inconvenience.

I'm thinking about selling my 3700X and getting a 12th gen Intel with an integrated GPU (I don't game and really couldn't care less about fast GPUs).

Why not go for a 5700g? That would hopefully avoid you having to replace your motherboard.
> I'm thinking about selling my 3700X and getting a 12th gen Intel with an integrated GPU (I don't game and really couldn't care less about fast GPUs).

Don't suppose you're in Ireland/UK/EU? Looking at building a low/mid-range gaming rig for a sibling, and a 3700X would fit fine if you're looking to sell.

It’s pretty damn stunning how quite an AIO 2x 140mm cooler can be. And graphics cards with those big triple fans are silent until needed.

I’ve been through a couple 12th gens. I like them, but unless you need the machine updated right now, 13th gen is 6 months out.

AIO performance on CPUs is largely limited by thermal transfer through the coldplate/IHS (Integrated Heat Spreader), not by radiator size. Basically the radiator is keeping the fluid very cool already, but heat can't move through the IHS quickly enough. So it takes a large improvement in fluid temperature to make a small improvement in die temperature - you are "pushing on a string" as the expression goes.

Almost no AIOs have the fluid-temperature sensors that would allow you to measure this directly, so everyone uses the die sensors. Which, since they're behind the IHS, will be much higher than the fluid itself. The die temperature is also a measurement of interest too - I'm merely explaining why the number you're seeing in the die sensor isn't really the big picture of how good the the radiator is doing at cooling. The die is hot, but the fluid is cool.

The AMD 295x2 is an extremely good example of this observation - this card had a single 120mm radiator, with one fan, and it could dissipate >500W of heat at ~60C die temperature. (not sure if this source says this directly but the non-OC power was ~430W average during gaming, and ~250W is not unreasonable for each 290X chip - actually they could go to 300W or higher if you really poured it on, but they also did generally show some significant power scaling with temperatures, so ~250W per chip/500W total is a reasonable estimate imo).

https://www.techpowerup.com/review/amd-r9-295-x2/28.html

You might say - but that's a dual-GPU card, with bare dies. And yes, that's my point, when the coldplate/IHS is no longer a bottleneck moving heat into the loop, a 120mm radiator is comfortably capable of dissipating 500W of power back out of the loop at extremely reasonable operating temperatures (60C die temperature). 60C is actually barely breaking a sweat, you could probably do 1000W through that 120mm if you didn't mind a die temperature in the 80-90C range. In CPU overclocking - your power limits/temps are almost entirely limited by how fast you can get that heat through the IHS. Reducing fluid temps (by increasing radiator size) is pushing on a string, it takes big gains in fluid temp to produce a small improvement in die temp.

Incidentally, direct-die cooling is the last untapped frontier of gains for ambient (non-chilled) overclocking. Der8auer and IceManCooler.com both make "support brackets" that replace part of the ILM (integrated loading mechanism - the socket and its tensioning mechanism and attachment to the motherboard) that holds the processor. This is necessary since the IHS is actually part of the ILM - the ILM presses down on the sides of the IHS, so removing it would change the pressure, and the ILM needs to keep a specific level of pressure on the chip to make a good contact with the pins but but without damaging anything. But you can delid the processor (there are services that do this for soldered chips, I don't recommend doing it at home) and use one of those brackets with a "normal" waterblock/AIO (or even air-cooler), since the bracket is holding the chip in the pin-bed at the proper tension.

Thermal density is going nowhere but up, Dennard scaling is over, so that is the only way to really improve thermals on <= 7nm-class nodes. Even AMD runs hot - they routinely run in the mid-80C range nowadays, even though they don't pull a lot of power - because of that thermal density, and every time they shrink it's going to get worse. The gains may be more worth it on Intel though - they show better scaling from power/voltage, TSMC nodes seem to pretty much top out at about 4 GHz and past there it gets exponentially worse for very little actual performance gain. 4.3, 4.4, sure, but they don't seem to do 5-5.3 GHz like Intel can on their Intel 7...

It's more of an adventure with a GPU than a CPU but you can add an aio after market with eg https://nzxt.com/product/kraken-g12

Then you're not paying the Kingpin markup if you're not planning to x-oc it. I did that on a Titan X (Pascal) which was still using a blower design and it worked fantastically.

This is true, but: you have to watch compatibility (note that there are no 3000 series chips on that list - because NVIDIA changed their hole placement again, and AMD has a couple different sizes for their different chips, 6500XT/6400 is definitely smaller for example), and also it doesn't do as good a job cooling VRAM. You can put add-on heatsinks on the VRAM chips, but they can fall off and short something. And adding them on the back can run into compatibility problems with bumping into the CPU heatsink.

And VRAM temperatures are a big problem on the Ampere cards - I don't really think running >100C all the time is really gonna be great for them long-term. Even gaming (vs mining) it's not abnormal to see VRAM over 100C (especially 3090, with the chips on the back, but also on the other GDDR6X cards, GDDR6X just runs extraordinarily hot). I know what NVIDIA and Micron say, I'm not sure I believe it. Above-100C is really really dubious imo.

for the 3090, with the VRAM on the back, I think it makes sense to go with a factory-configured AIO. Other cards, and especially GDDR6 cards, sure, it does work and it does help. Don't go too nuts tightening the AIO down though (ask me why! >.<)

Gelid used to make nice little cooling shields for the VRM and memory modules. I'm disappointed they stopped, although I'm sure it was a tiny market. For single-sided cards that is a much much nicer solution than stick-on heatsinks imo.

https://www.quietpc.com/gelid-icy-vision-gtx1080kit

When I ran it the vram temps were actually fine (although not the scorching GDDR6X variety of course). Since it's not sharing thermal mass with the GPU die, the direct airflow on its own was plenty.

You actually can see this with the 3090 in fact. Simply pointing a fan at the back of the card does wonders and easily keeps them in spec without a heatsink at all, although the backplate is acting as a bit of a spreader. Which makes sense since each memory chip is only like 2-3W. You don't need a heatsink for that, just a little bit of airflow

Thanks for the detailed write up, I learnt something new today.

I sometimes feel I should stop wasting so much time on the internet, but sometimes I realize that it means missing out on such comments that distill a lot of/important information.

If you want to stick with AMD and don't want to swap out the motherboard, then you'd probably just need to get an AMD CPU with on board graphics.

The actual name of the CPU should help you find one that would work in that regard, for example, see this link which explains the naming suffixes: https://www.androidauthority.com/amd-cpu-guide-1222438/

In particular:

  X - Higher clocked desktop processor (what you got)
  G - Has integrated AMD Radeon Vega Graphics (what you probably want)
  GE - Has integrated AMD Radeon Vega Graphics but lower TDP (what you might want in niche use cases)
For example, some of my homelab servers use older AMD Athlon 200 GE as their CPUs, due to the fact that there are on board graphics and because the TDP is 35W, both saving electricity and also allowing me to use passive cooling (with just a large heatsink https://www.arctic.de/en/Alpine-AM4-Passive/ACALP00022A).

For the Zen 2 series that your 3700X belongs to, you might want to look at this table: https://en.wikipedia.org/wiki/List_of_AMD_Ryzen_processors#A...

From what i can tell, the closest option performance wise to Ryzen 7 3700X but with on board graphics would be Ryzen 7 4700G.

Side note: not that you said it yourself, but since you bought up the "E" SKUs, and it often comes up:

in almost all situations, the "lower tier" CPUs can be replicated simply by taking the higher-tier CPU and setting a lower power limit. A 1800X with a 65W power limit is the same thing as a 1700, a 3400G with a 45W (?) power limit is the same thing as a 3400GE, etc. Since the "GE" chips and other niche SKUs (there is a 3700 non-X iirc, for example) are often OEM-only, and thus they only have a very limited availability, they will often command higher prices on ebay/etc than the "real" chip. In this case, there is no reason to seek out the "E" chip, with the possible exception of if it gets you the "pro" feature set and you happen to need one of the features (particularly for APUs since ECC is disabled on non-pro APUs). So if you see a 3400G for $200 and a 3400GE for $250 (made-up numbers) then don't buy the GE, buy the G and set the power limit yourself.

Lower-end chips do not have better binning - actually the opposite, higher-end chips have better binning and will run at lower voltages for a given frequency than the lower-end chips will. The "higher leakage clocks better" thing is not really a factor that matters on ambient cooling, that is for XOC doing LN2 or LHe runs, but it has entered the public consciousness that "low-TDP chips are binned for efficiency". Not in the consumer market they're not - the exceptions being things like Fury Nano that explicitly are binned better, and for which you pay a premium price for that efficiency. But most low-end consumer processors are just... low-end. They're priced according to performance, not binning.

You can see this in the SiliconLottery historically binning statistics: 1800X will categorically clock higher at any voltage than a 1700, a 3800X is categorically better at any voltage than a 3700X, etc - and that also means they will run a lower voltage at any target frequency. AMD bins straight-down in terms of chip quality: Epyc and TR get the best, then the high-end enthusiast chips, then the value enthusiast chips, then the efficiency parts at the bottom of the bins.

The "E" parts are efficient because they have a low power limit set - not because they're binned better. Lots of chips can run fine at lower voltages, they just don't do the peak frequencies as well as the binned chips. A 1800X will still get you a bit lower voltage - but since the voltage/power curve is quadratic, the difference in power is compressed at lower frequencies/voltages. Also, at a low-enough frequency you will bump into the minimum voltage required, so that tends to compress things as well. So at 3 GHz, the impact on binning between a 1800X and a 1700 would be a lot smaller than, say, at 4 GHz. The 1800X can usually do that fairly easily in a later sample, but 4 GHz is pretty much always pushing the limits of safe voltage for a 1700, for example, so the 1700 gets crappier silicon because it clocks lower.

https://siliconlottery.com/pages/statistics

https://www.reddit.com/r/Amd/comments/cll1r9/hardware_numb3r...

(the "one weird exception" is lower core-count chips. If you think of each core as a dice roll, this means that an 8-core chip has to roll perfectly 8 times, where a 6-core chip only has to roll perfectly 6 times. Since all-core OC is limited by the performance of the worst core, this means that for equal yields, there may be more lower-core-count chips with high all-core OCs. Many midrange parts do not actually have defective cores, they're locked out for market segmen...

> For example, some of my homelab servers use older AMD Athlon 200 GE as their CPUs, due to the fact that there are on board graphics and because the TDP is 35W, both saving electricity and also allowing me to use passive cooling (with just a large heatsink https://www.arctic.de/en/Alpine-AM4-Passive/ACALP00022A).

I have a server with a 3700x. I originally had a cheapo discrete AMD graphics card in it, but I ended up just yanking that and running the machine without any graphics card. Saves power.

I heard the rumor that, starting with Zen4, AMD will include an embedded GPU in each and every CPU using the new socket.

This will end this situation, and give a nice bump to AMD's market share in e.g. Valve's steam client statistics.

These days, the performance of the embedded GPUs is already pretty usable, even allowing for running heavy videogames on lowish settings. They've been increasing the performance considerably (30-60%) on each generation for several generations.

There is another downside to G SKUs: many lack PCIe 4.0. For some dedicated GPUs, that is a (minor for now) limitation.

It's why I ended up getting the (surprisingly) cheaper Intel equivalent. It has an iGPU and also PCIe 4.0.

The 3700x with a GPU with a fan is going to be a lot easier to make silent than a 12th gen Intel is going to be.

Also many GPUs support the fan turning off when idle.

I was about to post this. The fans on my AMD RX 580 never turn on unless I'm gaming or doing some crazy WebGL stuff. I can only imagine that newer ones are even more efficient in this regard.
I bought some midrange AMD graphics card a few years back, picked for idle wattage, linux support and quiet cooling.

The card isn't silent, but it's quieter than the high end, low wattage PSU fan, which is needed to dissipate heat from everything else.

Anyway, eliminating the video card fan would probably make my desktop louder, which was counterintuitive to me at the time.

(The setup is extremely quiet, FWIW.)

Thank you for bring back so many memories of learning the unnecessarily hard way.

This is great news

(comment deleted)
On Debian I do: module-assistant build-install nvidia

And it works every time, but you do need to run it every time. There is a way to automate it on new kernel installs.

> 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

I always kept the previous version of the kernel and module in case of this.

I've been recompiling my nvidia module each kernel release for over a decade and I've had no problems, you install the kernel, you install the nvidia module, and you reboot.

> EDIT: Remember you had to recompile the shim at every kernel update and replaced "module" with "driver".

I haven't bought NVIDIA since then

What do you mean with "old times"? :)

That's basically still what happens. Fedora automates this nicely with akmods, which automatically rebuilds these source only modules and installs them when you update the kernel. Has been working smoothly for a while, but it is fundamentally the same thing still.

the old times is what precipitated linus to give nvidia the finger.
> [...] you could end up without X11 and no way to easily run a browser or google about the problem you had.

You don't need X11 to run a browser. But you are right that it's pretty inconvenient without.