Nouveau: NVIDIA's New Hardware Is "VERY Open-Source Unfriendly"

Written by Michael Larabel in Nouveau on 15 April 2015 at 09:42 AM EDT. 160 Comments
NOUVEAU
While NVIDIA's new GeForce GTX 900 series is dominating for Linux gamers with excellent performance with their $1000+ GPU as well as great Linux OpenGL/OpenCL performance out of their lower-cost GPUs with excellent power efficiency, that's only when using the proprietary driver... NVIDIA's newer GTX 900 / Maxwell hardware is less open-source friendly than their previous generations of hardware.

With the Linux 3.19 kernel there was basic support added for the new NVIDIA GPUs to the open-source, community-based, reverse-engineered Nouveau driver. However, this initial support was limited to just mode-setting, a.k.a. setting up the display outputs without any hardware acceleration. For months we've known NVIDIA's moving to requiring signed firmware images for their graphics processors and now it's biting the open-source developers.


For previous generations, Nouveau developers came up with a way to extract the firmware binary blobs out of the NVIDIA proprietary driver when initializing the graphics card with it and then doing some MMIOtrace magic. While this was an initial hurdle with new hardware generations, for Fermi, Kepler & Co, Nouveau developers ended up writing the code so that Nouveau would be able to self-generate the GPU firmware without users having to touch the binary driver. However, with the new Maxwell GPUs needing signed firmware, it's a different and more challenging game.

Back when NVIDIA came forward to inform Nouveau developers that they are starting to sign/validate GPU firmware images, they said they'd end up providing the firmware/microcode images to Nouveau developers. However, NVIDIA has yet to provide the necessary firmware to Nouveau developers. The lack of these signed firmware blobs is currently preventing the Nouveau developers from moving forward in providing open-source hardware acceleration.


In the Linux 4.1 Nouveau pull request, Ben Skeggs mentioned as part of the merge into DRM-Next:
more gm20x bring-up, fifo/ce are ok, gr is mostly complete with the exception of ctxsw ucode.. nvidia aren't playing nice yet so there's not much more that can be done at this point...

I spent a lot of time trying to find a viable way of doing gr ctxsw without signed firmware, but the "security" restrictions on the fecs/gpccs falcons are excessive and go beyond what'd be necessary to protect the host from malicious firmware. This newer nvidia hw is VERY open-source unfriendly.

I have some experimental host-based ctxsw work that could be a viable (albeit unsatisfactory and slow) workaround in the meantime, but it needs some more work and i'd like to get the 3d driver working properly before i commit to pushing it.

Basically, Skeggs is being blocked from bringing up more of the GeForce GTX 900 (GM20x) graphics processors because of the lack of the context switching microcode from NVIDIA. Originally NVIDIA implied they were moving to signed GPU firmware images to prevent graphics card knock-offs (those selling NVIDIA GPUs online that are actually low-end GPUs with modified firmware to reflect higher-end models) and in bettering the security of their driver/hardware. However, from the Nouveau reverse-engineering, the restrictions were found to be overboard and for Ben to say "This newer nvidia hw is VERY open-source unfriendly."

Until NVIDIA finally delivers these signed firmware blobs (they're not even trying to get the source to the firmware, just the signed binary blobs) to Nouveau developers, the GeForce GTX 900 open-source support is going to be really problematic and basically non-existent. On the AMD side, the open-source Linux driver does continue to depend upon binary-only firmware blobs, but at least AMD is releasing them promptly alongside their open-source driver code.

If you're looking toward a new graphics card and don't mind using binary drivers, I'd still highly recommend the new GeForce GTX 900 graphics cards as the new Maxwell GPUs are fantastic performers and offer some great features that are supported well under Linux by the proprietary driver. However, strict open-source users will remain better off with AMD or Intel graphics for the foreseeable future.
Related News
About The Author
Michael Larabel

Michael Larabel is the principal author of Phoronix.com and founded the site in 2004 with a focus on enriching the Linux hardware experience. Michael has written more than 20,000 articles covering the state of Linux hardware support, Linux performance, graphics drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software. He can be followed via Twitter, LinkedIn, or contacted via MichaelLarabel.com.

Popular News This Week