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

The Huge Nouveau Kernel Driver Rewrite Surfaces

Nouveau

Published on 06 August 2012 09:23 AM EDT
Written by Michael Larabel in Nouveau
1 Comment

Over the weekend there was the push by Red Hat's Ben Skeggs that effectively reworks/rewrites the Nouveau DRM kernel module for reverse-engineered open-source NVIDIA graphics under Linux.

Skeggs work rewrites a large portion of the Nouveau kernel driver code -- it measures in at about 50 commits and thousands of lines of code have been changed. We knew a big Nouveau DRM rewrite was happening following minimal changes for Nouveau with the Linux 3.6 kernel but on Saturday was when the code finally landed within the Nouveau project's kernel repository.

This Nouveau overhaul won't land in the mainline tree of Linus Torvalds until the Linux 3.7 kernel, but the developers are already asking interested parties to begin testing the code to look out for regressions. "I expect that for a while there will be a *lot* of stupid typos/thinkos that cause all sorts of breakage, so please test everything any anything you can and report *regressions* from the pre-rework code (vs 3.6-rc1 for example)."

The rewrite that happened so far is to basically allow for improved features to come in the future, but just sets the groundwork for now. "At this point don't expect any exciting cool functionality, the work so far is merely a restructure to allow moving forward on a number of fronts in the future."

Ben Skeggs mentioned the "BIG changes to kernel module" on the Nouveau mailing list. The Nouveau Linux kernel Git repository his hosted at FreeDesktop.org.

Among the big work in this Nouveau driver re-write is porting all engines to using the Nouveau driver's new module engine format (this alone is ~14,000 lines of new code), moving code and headers around, a completely new implementation of "instmem", memory management changes, and a lot of new infrastructure. Below is the main commit that added over 4,000 lines of new code to provide new core infrastructure for the Nouveau DRM driver.
This commit provides most of the infrastructure to support a major overhaul of Nouveau's internals coming in the following commits. This work aims to take all the things we've learned over the last several years, and turn that into a cleaner architecture that's more maintainable going forward.

RAMHT and MM bits of the new core have been left out for the moment, and will be pulled in as I go through the process of porting the code to become either subdev or engine modules.

There are several main goals I wanted to achieve through this work:

-- Reduce complexity

The goal here was to make each component of the driver as independent as possible, which will ease maintainability and readability, and provide a good base for resetting locked up GPU units in the future.

-- Better tracking of GPU units that are required at any given time

This is for future PM work, we'll be able to tell exactly what parts of the GPU we need powered at any given point (etc).

-- Expose all available NVIDIA GPUs to the client

In order to support things such as multi-GPU channels, we want to be able to expose all the NVIDIA GPUs to the client over a single file descriptor so it can send a single push buffer to multiple GPUs.

-- Untangle the core hardware support code from the DRM implementation

This happened initially as an unexpected side-effect of developing the initial core infrastructure in userspace, but it turned into a goal of the whole project. Initial benefits will be the availablility of a number of userspace tools and tests using the same code as the driver itself, but will also be important as I look into some virtualisation ideas.
While this just puts down lots of new low-level code as opposed to feature commits, new Phoronix benchmarks of the latest Nouveau code will happen in the coming days to look out for any regressions.

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. AMD R600g/RadeonSI Performance On Linux 3.16 With Mesa 10.3-devel
  2. Intel Pentium G3258 On Linux
  3. SilverStone Precision PS10
  4. ASRock Z97 Extreme6
Latest Linux Articles
  1. KVM Benchmarks On Ubuntu 14.10
  2. X.Org Server 1.16 Officially Released With Terrific Features
  3. Ubuntu With Linux 3.16 Smashes OS X 10.9.4 On The MacBook Air
  4. Preview: Benchmarking CentOS 7.0 & Scientific Linux 7.0
Latest Linux News
  1. Ubuntu 14.04.1 LTS Released
  2. Linux Developers Jump Quickly On ACPI 5.1, Helps Out ARM
  3. Pkg 1.3.0 Released To Improve Package Management On FreeBSD
  4. GOG.com Officially Starts Rolling Out Linux Games
  5. Fedora 21 Has Been Delayed By Three Weeks
  6. Mono Begins To Focus On Performance, Assembles A Team
  7. Oracle Linux 7 Released Today As Its RHEL7 Clone
  8. Unigine Develops City Traffic System, A Driving Simulator
  9. Intel 3.0 X.Org Driver Still Baking, New Development Release
  10. Eric Anholt Makes Progress With Broadcom VC4 Graphics Driver
Latest Forum Discussions
  1. AMD "Hawaii" Open-Source GPU Acceleration Still Not Working Right
  2. Updated and Optimized Ubuntu Free Graphics Drivers
  3. Radeon related kernel bug??
  4. how the US intellegentia operates:
  5. AMD Publishes Open-Source Linux HSA Kernel Driver
  6. Next-Gen OpenGL To Be Announced Next Month
  7. Open-Source Radeon Performance Boosted By Linux 3.16
  8. Remote gui not accessible in Phoronix Test Suite 5.2