Nouveau: NVIDIA's New Hardware Is "VERY Open-Source Unfriendly"
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.