For those who didn’t quite get the irony of the previous blog title… I generally find Linus Torvalds to be quite unreasonable. So I was rather surprised by his sensible response.

But trust Linus to generate some positively outrageous outbursts only days later:

Especially around 48:15… Linus raging at nVidia. For what? For not releasing open source drivers? Single worst company they ever dealt with?

Well, correct me if I’m wrong, but as far as I know, nVidia is the only company that even offers a technology such as Optimus. As far as I know, Radeons cannot do this (at least not in systems with Intel IGPs). Aside from that, if I’m not mistaken, nVidia also pulled support for Optimus for versions of Windows prior to 7, simply because they could not get it to behave reliably enough (but I haven’t heard anyone complain that Optimus didn’t work when they installed Vista or XP on their Windows 7-certified laptop with Windows 7 preinstalled). Perhaps, there is a small possibility that nVidia isn’t just doing this to spite linux users? They may actually be doing their users a favour, just as with the aforementioned Windows support. If it can’t work reliably, it’s better if it’s not available at all. Else people will just be complaining about stability, data loss and whatnot.

I really don’t get his point. nVidia’s closed-source drivers are certainly not the only closed-source drivers for linux/Android. On the other hand, they are widely considered to be the best graphics drivers for linux, in terms of performance, stability, and feature support. nVidia has been committed to good linux support from early on (not to mention other OSes, such as FreeBSD and Solaris, which get ignored altogether by other vendors).

Just shows how little Linus really understands about the world, I suppose. The REAL problem here is that the linux kernel, X.org and the OpenGL subsystem don’t have properly defined interfaces. Which is at least partly Linus’ own fault. It’s much easier to reliably support a technology like Optimus on Windows 7, because its driver model has specific interfaces for it. It requires two drivers from independent vendors to share data together. The problem with linux is that updates to kernel, X.org and whatnot requires updates to the drivers as well. This means that you have to have very specific versions of all parts in order for them to work together reliably. The linux community seems to use open source as a crutch for this: if you can patch the sourcecode and/or (re)compile everything on the same configuration, it is more likely to work together.

But even then it is not without problems, because not all OpenGL implementations are alike. Most open source drivers are part of the MesaGL project, and as such, use the same basic interfaces. But there are also drivers which implement their own OpenGL, such as nVidia and AMD’s drivers. They are all OpenGL-compliant, but unlike in Windows, they are not compatible beyond the usermode API itself, and as such, they cannot share data through a standardized interface.

Linus should look before he leaps. He is part of the problem here, not part of the solution. I get the distinct impression that he does not even understand the problem. Which is sad for a person in his position.

19 Responses to Voice of reason, quite…

Nope, the rant is about nVidia not giving access to the HW specs so that the open source community would be able to write their own drivers. Nowadays it’s mostly about gfx cards, but back in the days even things like nForce chipset ethernet and sound drivers were buggy binary blobs only.

nVidia’s modus operandi seems to be to provide binary blobs only and refuse providing any HW specs, wait until the kernel developers eventually reverse engineer the binary blobs and then endorse the open source drivers as “official” and ditch the binary blobs. So yes, nVidia deliberately is being an ass for denying access to the HW specifications.

“Well, correct me if I’m wrong, but as far as I know, nVidia is the only company that even offers a technology such as Optimus. As far as I know, Radeons cannot do this (at least not in systems with Intel IGPs).”
You wrong. 🙂 AMD have PowerXpress and Enduro. PowerXpress works with all of the Radeon HD 6000M series cards, and Enduro is a new technology for Radeon HD 7700M+. These are muxless systems like Optimus, and works wth Intel/AMD IGPs.

Closed-source drivers are bad for Linux. These are won’t allow to debug problems. There are no way to know what’s wrong, the driver or something else. This is a huge problem for the development process.

PowerXpress only works with AMD IGPs, not Intel IGPs.
Not sure about Enduro yet, haven’t seen any actual hardware with Enduro and Intel IGP (from what I read, AMD plans it to be manual switching anyway, at least, under linux, which is not what Optimus is).
By the way, PowerXpress under linux is not very good: http://www.phoronix.com/scan.php?page=news_item&px=OTI3Mg
Aside from the fact that it was released some 3 years later than the Windows version, it is far from seamless, since AMD’s closed-source drivers don’t cooperate very well with open source drivers based on MesaGL.
Wow, AMD is so great with linux! Oh wait, they aren’t. Perhaps nVidia just figures it’s not worth releasing functionality in a state like this. What’s the point if it’s not seamless?

Driver debugging is the job of nVidia, not the end user. The only thing bad for linux is linux itself.

Nope. I have a laptop (Sony VAIO CA), with Sandy Bridge and Radeon HD 6630M. PowerXpress works great. Even Skyrim run on day 0, with Optimus it was only run at Intel IGP. It didn’t detect GeForce for several weeks.

It’s their job if the problem localized in the driver, but most Linux distribution support just delete any problem reported with NV binary driver. They don’t able to test it. I don’t know how it works at Nvidia, I think they investigate all report, but I hear storys from my wife. She is working for an OEM manufacturer. From the hardware side NV has very problematic support. Most PCs that my wife qualify use GeForce. And with the newer drivers they freeze in heavy workloads at Youtube. The problem reported to NV and they just said use the 275.33 driver, and lock the OS preventing user to update newer GeForce driver.
If NV support Linux with these practices, then Linus “statement” is understandable.

Uhhh… you need to provide more data. PowerXpress works great under what OS? And is that really PowerXpress, or a Sony-specific implementation? Because as far as I can tell, PowerXpress in general does NOT work with Intel IGPs, and under linux it can only be switched manually.

If linux distros delete problems reported with nVidia’s binary driver, then that is THEIR problem. What they should do is to report the problem to nVidia. If you don’t report it to nVidia, how can you expect them to fix it?

Aside from that, all this anecdotal ‘evidence’ really doesn’t mean anything.
Linus’ statement is not understandable, period. Aside from the fact that making a big deal out of Optimus is silly, to say the least… It is highly immature to use f-bombs and give nVidia the finger. Aside from that, as I already said, nVidia is very dedicated to supporting linux and other OSes. They probably have very good reasons why Optimus is not (yet?) supported under linux, just like it is not supported under older versions of Windows.

And it probably *only* works on that Sony with the pre-installed OS. So a Sony-specific feature (just like Apple has specific features that don’t work on the same hardware from other vendors).
I wouldn’t be surprised if it did not work if you installed a regular Windows 7, or even manually upgraded the display drivers to generic versions.

I don’t use Linux on my Sony VAIO. I have a Brazos netbook for it, and It’s works great.
The biggest problem, that there are no official support for any muxless switch for Linux. Bumblebee is an unofficial approach. It just enable to use the dedicated Optimus capable GPU but it won’t shut it down when you don’t use it. So the battery life is not great.

It’s not nVidia’s fault. AMD can’t do it either.
The real problem is in linux itself (which apparently Linus Torvalds himself does not even understand). There isn’t a good standard display driver model. In Windows 7, the driver model itself explicitly standardizes the use of drivers of multiple vendors side-by-side, which makes things like mixed-vendor multi-GPU possible, as well as things like Optimus.
In linux, it’s all a big mess, as explained in the Phoronix article I linked earlier.
The answer that Linus proposes is ridiculous. nVidia already has a very good driver. Instead of using that driver as a basis, and standardizing the driver model in linux/Xorg, he is suggesting that nVidia discloses all their IP, so that independent developers such as the Nouveau project can reimplement the driver nVidia has already written (we’ve seen how well that works with AMD: the closed-source drivers are still far better than the open source ones… what’s the point?), while still not solving the compatibility problems between different drivers? Wow, what a visionary that Linus Torvalds is! He really understands problems, and really knows how to solve them!

So, you’re basically making an argument on how PowerXpress works flawlessly on Windows 7 when it’s AMD GPU + Intel IGP, while you were trying to make a point on how AMD’s PowerXpress support is great on Linux.
And then goes along to say that your Brazos netbook, which is basically an APU platform (no Intel in it whatsoever), works great on Linux, which still didn’t enforce your point on how great AMD’s PowerXpress support is when using AMD GPU + Intel IGP on Linux.

About as pointless as trying to prove the steak you just ate tasted great with a BBQ sauce by saying that grilled fish is great when you put lemon sauce on it.

To be fair, in case of OSX, Apple have a way smaller number of hardware combinations to work on compared to Windows and Linux boxes, especially graphic cards.
They don’t have to cater to the multitude amounts of different other graphic cards within a single generation of a Mac or MacBook, and they’re usually using a single vendor to supply the whole line-up within a generation.

In that regard, you can’t really deem OSX support is better since Apple ‘only’ has to deal with a minuscule subset of currently available graphic cards.
Not to mention they’ve only used Intel CPUs ever since switching from PPCs, and never goes AMD.

Indeed. Apple only has to support one IGP (Intel) and two GPUs (nVidia and AMD).
I’m not sure how Apple solved it (just hardcoding the two cases, or actually having a generic interface for it like Windows does), but it certainly has nothing to do with BSD, because BSD uses the exact same ecosystem for graphics as linux does (Xorg, MesaGL etc). The only difference with linux is in the kernel-specific portions of the drivers. But BSD doesn’t do switching any better than linux. In fact, even worse, because afaik things like Bumblebee don’t work on BSD yet.