Nouveau Gets Further Freed From Ctx_Voodoo

Posted by Michael Larabel on February 23, 2010

One of the issues that was widely discussed when Linus Torvalds brought up finally merging the Nouveau DRM into the Linux 2.6.33 kernel was a microcode problem. The past few generations of NVIDIA graphics processors require this specialized microcode/firmware to be loaded in order to provide acceleration of any sort. At first it was it was a mystery what this microcode actually did, but it turns out that it's used for GPU context switching and the like. This wound up being a sticky situation.

The Nouveau DRM was pulled into the Linux 2.6.33 kernel and the microcode of concern ("ctx_voodoo" as it's been called) was left to be loaded externally rather than embedded in the driver itself due to copyright concerns.

Since then, however, the Nouveau development community had created its own NV40 microcode replacement to alleviate the ctx_voodoo usage for the GeForce 6 generation of graphics cards. Emerging now is also a free software alternative to loading the ctx_voodoo microcode for the NV50/NV8x/NV9x/NVAx class hardware. In other words, the newer NVIDIA graphics processors no longer need to deal with this messy firmware.

Unlike the NV40 firmware replacement, this solution for newer NVIDIA GPUs isn't generated firmware being loaded by the driver, but rather the needed microcode is generated in real-time by the driver. With the massive patch (2,000+ lines of code), the Novueau DRM generates its own ctxprogs firmware without any dependence on any potentially copyrighted NVIDIA firmware.

This embedded ctxprogs and ctxvals generator should work for these newer families of NVIDIA GPUs, but it's quite different from NVIDIA's blob, so the developer (Marcin Koƛcielnicki) is looking for many individuals to test out this newest code and look for any regressions. The Nouveau Gallium3D driver also needs to be tested using this ctxprogs/ctxvals generator.

This generator isn't yet merged into the Nouveau DRM, but for now the large patch can be found on this web-page. Hopefully it will be tested and ready for merging into the Linux 2.6.34 kernel next month. The message announcing this NV50/NV8x/NV9x/NVAx ctxprog and ctxvals generator can be found on the Nouveau mailing list.

Discuss this article in our forums, IRC channel, or email the author. You can also follow our content via RSS and on social networks like Facebook, Identi.ca, and Twitter (@Phoronix and @MichaelLarabel). Subscribe to Phoronix Premium to view our content without advertisements, view entire articles on a single page, and experience other benefits.
Latest Hardware Reviews
  1. Sumo Lounge Emperor
  2. Gallium3D Continues Improving OpenGL For Older Radeon GPUs
  3. 15-Way Open vs. Closed Source NVIDIA/AMD Linux GPU Comparison
  4. Nouveau vs. NVIDIA Linux Comparison Shows Shortcomings
Latest Software Articles
  1. Intel Linux OpenGL Driver Leading Over Apple OS X
  2. The Cost Of Ubuntu Disk Encryption
  3. Btrfs vs. EXT4 vs. XFS vs. F2FS On Linux 3.10
  4. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
Latest Linux News
  1. SQLite Now Faster With Memory Mapped I/O
  2. Microsoft Releases Skype For Linux 4.2, Has Bug-Fixes
  3. Qt For Tizen Launches, Based On Qt 5.1
  4. KTAP Released For Linux Kernel Dynamic Tracing
  5. Linux 3.10-rc2 Kernel Takes In A Few Extra Pulls
  6. QEMU 1.5 Supports VGA Passthrough, Better USB 3.0
  7. Handbrake 0.9.9 Supports OpenCL Offloading
  8. Freedreno Gallium3D Now Banging The Adreno A3XX
  9. Jolla Announces Their First Phone
  10. Mageia 3 Released, Still Using Legacy GRUB
  11. NetBSD 6.1 Brings In More Features
Latest Forum Talk
  1. Qt For Tizen Launches, Based On Qt 5.1
  2. AMD Radeon R600 GPU LLVM 3.3 Back-End Testing
  3. Modern Intel Gallium3D Driver Still Being Toyed...
  4. Linux's "Ondemand" Governor Is No...
  5. Microsoft Releases Skype For Linux 4.2, Has...
  6. Intel Linux OpenGL Driver Leading Over Apple OS X
  1. Computers
  2. Display Drivers
  3. Graphics Cards
  4. Motherboards
  5. Peripherals
  6. Processors
  7. Software
  8. Operating Systems
  9. All Articles
  1. Linux Benchmarking
  2. OpenBenchmarking.org
  3. Phoronix Test Suite