Torvalds isn't yet ready to apologize for giving Nvidia the finger.

Editor's note: See the update at the end of this article for Linus Torvalds' response to Nvidia.

Few companies have been the target of as much criticism in the Linux community as Nvidia. Linus Torvalds himself last year called Nvidia the "single worst company" Linux developers have ever worked with, giving the company his middle finger in a public talk.

Nvidia is now trying to get on Linux developers' good side. Yesterday, Nvidia's Andy Ritger e-mailed developers of Nouveau, an open source driver for Nvidia cards that is built by reverse engineering Nvidia's proprietary drivers. Ritger wrote that "NVIDIA is releasing public documentation on certain aspects of our GPUs, with the intent to address areas that impact the out-of-the-box usability of NVIDIA GPUs with Nouveau. We intend to provide more documentation over time, and guidance in additional areas as we are able."

The first step was releasing documentation of the Device Control Block (DCB) layout in Nvidia's VBIOS, describing the board's topology and display connectors. Ritger continued:

I suspect much of the information in that document is not news for the Nouveau community, but hopefully it will be helpful to confirm your understanding or flesh out the implementation of a few unhandled cases.

A few of us who work on NVIDIA's proprietary Linux GPU driver will pay attention to nouveau at lists.freedesktop.org and try to chime in when we can.

If there are specific areas of documentation that would most help you, that feedback would help NVIDIA prioritize our documentation efforts.

If you have specific questions for NVIDIA, you can ask here, or direct them to: open-gpu-doc at nvidia.com. I can't promise we'll be able to answer everything, but we'll provide best-effort in areas where we are able.

The gesture was well-received. In response, Maarten Lankhorst of Canonical wrote, "You rock!" Lankhorst added, "Our biggest struggle at the moment is the video clocking and power management, which is highly device specific and depends on configuration too. A complete video bios documentation would be nice too, I understand that will take a bit longer than just the dcb."

I popped into the Nouveau IRC channel this morning to get the developers' take on the significance of the news. They confirmed that they already knew much of the information in the DCB documentation but said that it may "help us find a few corner cases for cards we don't own" and allow them "to handle uncommon cases we haven't seen in the wild."

One developer said, "The stuff Nvidia wants to offer in the future is much more interesting, really. That does sound like a good start, though."

Nvidia's move this week (on the same day that Valve announced a new Linux-based operating system for gaming) is a change of heart from the position it took last year after Torvalds' criticism. At the time, Nvidia told Tom's Hardware, "While we understand that some people would prefer us to provide detailed documentation on all of our GPU internals or be more active in Linux kernel community development discussions, we have made a decision to support Linux on our GPUs by leveraging Nvidia common code rather than the Linux common infrastructure. While this may not please everyone, it does allow us to provide the most consistent GPU experience to our customers, regardless of platform or operating system."

We've e-mailed Ritger, Torvalds, and Linux kernel maintainer Greg Kroah-Hartman to get more information and reactions, and we will update this post if we hear back from them.

UPDATE: Torvalds has responded to Ars, saying he's optimistic but not quite ready to apologize to Nvidia. "We'll see," Torvalds wrote in an e-mail. "I'm cautiously optimistic that this is a real shift in how Nvidia perceives Linux. The actual docs released so far are fairly limited, and in themselves they wouldn't be a big thing, but if Nvidia really does follow up and start opening up more, that would certainly be great.

"They've already been much better in the ARM SoC space than they were on the more traditional GPU side, and I really hope that some day I can just apologize for ever giving them the finger."

Kroah-Hartman responded as well, saying, "It's very significant, and very nice to see happen."

UPDATE 2: Ritger responded to our questions regarding what Nvidia plans to do next. He wrote that "more BIOS-related information is in the pipeline," and that "Our goal is for the Nouveau driver to give NVIDIA users a reasonable out-of-the-box experience. This entails things like successful GPU initialization, display configuration, and basic 2D and 3D rendering. The DCB and other BIOS-related information will hopefully help improve some scenarios where Nouveau had initialization problems, or display enumeration sorts of challenges."

What information Nvidia releases will be "largely based on feedback from the Nouveau community," he also wrote. "So far, feedback from Nouveau guys has been that the DCB spec is actually more useful than I expected it to be, which is great news."

Promoted Comments

I thought the Nvidia drivers on linux where supposedly pretty decent, and at least better than AMD?? I've tried Steam on linux quite a bit, and had tons of issues with my AMD GPU, both open source and proprietary drivers! I was thinking of getting and Nvidia card, having read their drivers were ok. So... they both suck?

No, NVIDIA's proprietary drivers are fantastic on Linux, and have been for many years. This is about improving the open source one, called Nouveau (which has problems, though obviously due in part to lack of documentation).

I thought the Nvidia drivers on linux where supposedly pretty decent, and at least better than AMD?? I've tried Steam on linux quite a bit, and had tons of issues with my AMD GPU, both open source and proprietary drivers! I was thinking of getting and Nvidia card, having read their drivers were ok. So... they both suck?

It's a bit of a convoluted history. Here's how I understand it: Nvidia's proprietary drivers are pretty solid on Linux, but their development is closed and entirely dictated by Nvidia. The good side is that you get great performance on their hardware. The downside is that they're a huge binary blob which replaces much of the standard X stack and function basically as a wrapper around their Windows drivers. This isn't ideal for Linux kernel and graphics stack developers. They did offer some open-source drivers (called "nv"), but those were always low-performance, 2D-only, and the code itself was intentionally made difficult to follow. The situation was soured even more when, a few years ago, they killed the official open-source drivers. The community responded by building their own by reverse-engineering some new open source drivers ("Nouveau"). Generally, they have just been pretty hostile to the Linux community. Sure, their proprietary blobs usually work great ... except when they don't and there's very few options for fixing it. It's also hard to get new graphics features that show up in the kernel and Linux graphics stack (the stuff that's hardware-agnostic and doesn't go into the drivers for specific cards) until Nvidia releases a new version of their proprietary driver to incorporate them. With open source drivers, you can usually just recompile the existing code (maybe make a few changes here or there) against the latest developments in the rest of Linux Land to get all the new features.

Now Nvidia is pledging to help out the open-sources Nouveau developers by releasing some documentation about their hardware so that they don't have to rely entirely on reverse-engineering anymore. In this regard they're finally "catching up" to AMD, who has been officially assisting the development of open-sourced Linux drivers on their hardware for years now.