5 ms·
> Indeed, nVidia open sourced the kernel portion of their drivers a few weeks ago. It's my understanding that this was more like an added shim layer in the ker
by the_biot 4y ago
> Indeed, nVidia open sourced the kernel portion of their drivers a few weeks ago.
It's my understanding that this was more like an added shim layer in the kernel, and that it just communicates to the (still proprietary) code now in firmware. In other words the blob moved, but it's still there, just shimmed. Maybe somebody with more knowledge of this codebase can weigh in?
Certainly this pattern of responding to pressure to open source code by shimming the blob is quite common. It's very common in network gear that runs Linux, for example.
- kllrnohj 4y agoAll the code running in the kernel with kernel privileges and visibility is at least open source now, though. The GPU firmware can't be audited, no, but the sandbox it's running in can be. Which is a huge improvement.
- the_biot 4y agoThat's the thing though -- not only is it not an improvement, it's not even actually different than before. This pattern of a thin shim in the kernel is just veneer, to allow the vendor to claim they're now open source, and quit bugging them about it please. I once put this exact argument to a network vendor's rep at a conference, after they'd introduced a really thin shim like this, with some fanfare. You know what his answer was, live on stage for all to hear? "but it's open source" If open sourcing proprietary code is the goal, as it has always been mine, then this sort of thing is very much a step backwards.
- 5e92cb50239222b 4y agoDon't worry, they've achieved both their goals: lowered the maintenance costs by opening and mainlining the few kernel bits that depended on the constantly breaking kernel APIs and do not contain anything potentially interesting to competitors, and got lots of 'shills' (probably the wrong word but I don't know any better) who didn't look into it too deeply and now spread great news for free that Nvidia has fully opened their drivers and the famous Linus gesture not longer applies.
- kllrnohj 4y agoIt is different, though. There's now zero Nvidia proprietary code running in ring 0. Does it meaningfully get you closer to a "true" open source driver? Not really. Is it still a significant improvement though? Absolutely. This also opens the door for any other kernel (like the BSD's) to speak to Nvidia's firmware without needing to do any reverse engineering. As well as gets Nvidia out of the way in terms of adopting new stacks like DRM-KMS. They are just no longer a blocker on that now since that's all handled by the now open source "shim" (which is still more than a shim)
- pabs3 4y agoIts a step forwards for nouveau, because they can now use the same proprietary firmware (which is now redistributable) as the proprietary driver, which means they can get the same clock speeds as the proprietary driver. Its a step backwards too, because the firmware is now signed and therefore unmodifiable, but that was a problem before the recent code release too.
- cesarb 4y ago> It's my understanding that this was more like an added shim layer in the kernel, and that it just communicates to the (still proprietary) code now in firmware. In other words the blob moved, but it's still there, just shimmed. There's a very important difference: that firmware runs in a separate processor, which assuming a working IOMMU (and that firmware has to assume a working IOMMU, since the IOMMU is controlled by the main processor), can only influence the GPU itself. Having all the code running in the main processor be open has a large benefit, and gives a lot of control back to the user. It also allows for faster evolution of the platform (for instance: the whole EGLStream vs GBM debate would be less of an issue if the kernel code was open), and even completely replacing the main processor itself (for instance, does the proprietary NVIDIA driver have a RISC-V version of its blob?).
- pabs3 4y agoNote that the NVIDIA firmware runs on RISC-V processors within their GPUs: https://lwn.net/Articles/894893/ https://lwn.net/Articles/894893/
- Jasper_ 4y agoThis is a severe misunderstanding of what the firmware is doing, or capable of doing. The kernel driver for NVIDIA handles memory transfers and DMA, command buffer submission & scheduling, watching and triggering fences, and register setting for some other components like the display controller. These responsibilities are the same for any GPU, firmware-enabled or not. The userspace driver is where most of the secret magic is on any GPU, it's in charge of building the command buffers that are submitted. All the work to translate GL/Vulkan/Direct3D takes place in the userspace driver, and it's the majority of the codebase by far. The kernel driver being open-source means most of the hardware-communication stuff is upstream. A combination of firmware and hardware interpret the command buffers and run the rest of the GPU pipeline. Firmware is used for power/clock management, managing the on-board GPU cache, queue balancing, running the front-end, and various other bits & bobs. None of this would replace any Linux or Windows driver code, it replaces dedicated hardware.
- verall 4y agoIntel runs all their stuff in a fat firmware blob and everyone considers it an "open strategy".
- kasabali 4y agoCan you be more specific?