1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Memory
  5. Motherboards
  6. Processors
  7. Software
  8. Storage
  9. Operating Systems


Facebook RSS Twitter Twitter Google Plus


Phoronix Test Suite

OpenBenchmarking.org

Part 2 Of Nouveau Saga: The Microcode

Nouveau

Published on 10 December 2009 03:10 PM EST
Written by Michael Larabel in Nouveau
29 Comments

Following a feature-packed DRM pull request this morning for the Linux 2.6.33 kernel, Linus Torvalds became frustrated that the Nouveau driver for supporting NVIDIA hardware was still not to be found in this most recent pull request. Linus wants Nouveau in the mainline kernel especially as Red Hat has already been shipping this free software driver in Fedora for two releases.

Only a few hours have passed since that second news article, but more messages surrounding the Nouveau status have been sent on the kernel mailing list and dri-devel. Maarten Maathuis who has worked on the Nouveau project responded saying that Nouveau isn't in the kernel yet (as far as he knows) because the project is unsure over the legal status of some microcode.

You assume that Red Hat has full control over the project, which i don't think is the case. The reason it isn't in staging yet (as far as i know) is because of some questions over the copyright of some (essential) microcode. Either the question needs to be answered, or it has to be reverse engineered to the point that it's possible to generate it.

Like most graphics drivers, the Nouveau driver is reliant upon loading in some microcode/firmware for it to work. In the case of Nouveau they load up this big batch of microcode for the GPU initialization, but the problem is they are unsure of what this microcode even does or what is its legal status is with regards to copyright and redistribution. This microcode can be obtained when using REnouveau to (cleanly) reverse-engineer NVIDIA's display drivers using memory mapped I/O register traces, with the steps to fetching the ctx_voodoo being documented on their Wiki. Without ctx_voodoo, the Nouveau driver cannot function. Legal situations can be messy, especially when there is no support from NVIDIA for this project, but they stand neutral on the matter of Nouveau. NVIDIA's Andy Ritger had said the following when we had interviewed him at Phoronix, "The guys working on nouveau have done a really incredible job so far. However, our policy remains the same: we won't try to hinder their efforts, but we have no plans to help them."

In response to this "excuse" of microcode uncertainty, Linus replied:

I think people are just making up excuses, as evidenced by the fact that you're quoting a different excuse than I've heard before.

The fact is, if there are license questions, then Fedora had better not be distributing the code either. And they clearly are.

And don't tell me about "full control". There's absolutely full control over it being included or not.

When I brought this up at the kernel summit, there were various other random excuses. I think one of them was that it wasn't part of an official Fedora release (which is sure as hell not true at least as of Fedora 12).

I've heard the "but it's hard to merge" excuse too - which I also know is bullshit, because I can look at the git tree Fedora apparently uses, and it merges without any conflicts what-so-ever.

The most common excuse is the "oh, but it might change" crap. But that's not even a very good excuse to start with, and it's what staging is for anyway.

Somebody even made the crazy comment that "but Fedora isn't a real distribution, so it doesn't need to follow the rules everybody agreed to several _years_ ago wrt merging stuff to mainline".

I _think_ that last one was meant as a joke. But it's damn hard to tell, because the ones that are apparently sincere are equally crazy. People just seem to make up total crap to make excuses for something that everybody knows is wrong.

Linus

This microcode issue is also why Nouveau support had not shipped with FreeBSD 8.0 in its kernel, as was shared in the thread by the FreeBSD X/Mesa maintainer, Robert Noland. Alan Cox has called upon Linus to just merge the code seeing as he is the maintainer of the Linux kernel master branch.

Just minutes ago, however, David Airlie who is the DRM maintainer and a Red Hat developer that is involved with the Nouveau project, has provided his response. Due to this troubled microcode, Red Hat cannot provide a "Signed-off" copy of Nouveau for inclusion into the Linux kernel due to this legal uncertainty. As David went on to mention, if the Nouveau driver supported the kernel's firmware loader interface, this ctx_voodoo microcode could be separated from the driver so that this potentially troublesome work would not land in the kernel but could be redistributed separately, it may help in this situation. However, no one has done this firmware loading work yet.

This microcode issue for the Nouveau project could certainly be a legal problem, but as of last check, no one has actually approached the Linux Foundation, Free Software Foundation, or Software Freedom Law Center for any assistance in determining the legality of the ctx_voodoo microcode or for obtaining permission from NVIDIA to use this blob. One of these foundations should be more than willing to help, after all better free software graphics drivers have been a priority for the FSF and the Linux Foundation is currently working on 3D patent issues for OpenGL 3.x support in free software.

As far as we know, NVIDIA has also not approached Red Hat regarding problems with them shipping this microcode in their Fedora releases. Nouveau continues to be available in Fedora. Canonical is also planning on shipping Nouveau support in its kernel for Ubuntu 10.04. If NVIDIA did pursue Red Hat, Canonical, or even the lone Nouveau developers over their use of this microcode they obtained through clean-room reverse engineering, it would generate an immense amount of negative publicity for this major, publicly-traded company as being an attack against free software and Linux. This should not be an issue.

About The Author
Michael Larabel is the principal author of Phoronix.com and founded the web-site in 2004 with a focus on enriching the Linux hardware experience and being the largest web-site devoted to Linux hardware reviews, particularly for products relevant to Linux gamers and enthusiasts but also commonly reviewing servers/workstations and embedded Linux devices. Michael has written more than 10,000 articles covering the state of Linux hardware support, Linux performance, graphics hardware drivers, and other topics. Michael is also the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated testing software. He can be followed via and or contacted via .
Latest Linux Hardware Reviews
  1. A Walkthrough Of The New 32 System Open-Source Linux Benchmarking Test Farm
  2. Habey MITX-6771: Mini-ITX Board With Quad-Core J1900 Bay Trail
  3. OCZ Vector 150 SSD On Linux
  4. Noctua i4 CPU Cooler: Great For Cooling High-End LGA-2011v3 CPUs
Latest Linux Articles
  1. 17-Way Linux Graphics Card Comparison With Civilization Beyond Earth
  2. AMD Kaveri: Open-Source Radeon Gallium3D vs. Catalyst 14.12 Omega Driver
  3. 12-Way AMD Catalyst 14.12 vs. NVIDIA 346 Series Linux GPU Comparison
  4. AMD Catalyst 14.12 Omega Driver Brings Mixed Results For Linux Users
Latest Linux News
  1. Intel 2.99.917 X.Org Driver Released, 3.0 Release Finally Near
  2. Server-Side XCB Is Being Discussed For The X.Org Server
  3. Adreno A4xx Rendering With Freedreno Takes Shape
  4. Linux 3.19-rc1 Kernel Released Ahead Of Schedule
  5. Civilization: Beyond Earth Linux GPU/Driver Benchmarks
  6. X.Org Server 1.16.3 Released To Fix Security Issues
  7. Linux 3.19 Merge Window Closes Ahead Of Schedule
  8. MIPS R6 Architecture Now Supported By GCC
  9. LowRISC To Feature Tagged Memory & Minion Cores
  10. Intel Skylake Audio Support For Linux 3.19
Latest Forum Discussions
  1. Looking for an nVidia GPU, but not sure how well they are supported.
  2. Speeding up systemd networking service
  3. Need some hand holding with upgrading xserver
  4. FPS capped on Linux (AMD fglrx drivers)
  5. Are there an app using HSA ?
  6. The New SuperTuxKart Looks Better, But Can Cause GPU/Driver Problems
  7. XLennart: A Game For Systemd Haters With Nothing Better To Do
  8. Updated and Optimized Ubuntu Free Graphics Drivers