This article originally appeared in issue 86 of Linux User & Developer.
Linux User & Developer, one of the nation’s favourite Linux and Open Source publications, is now part of the award winning Imagine Publishing family. Readers can subscribe and save more than 30% and receive our money back guarantee – click here to find out more.
Last month saw the release of the final 2.6.33 Linux kernel, following several months of development (and some last-minute patches – including the network namespace bug this author discovered and wrote about in the previous month). In his release announcement, Linus Torvalds specifically drew attention to newly added support for Nvidia graphics acceleration through the ‘upstreaming’ (a colloquial term for inclusion of code in the official kernel) of the Nouveau 3D graphics driver, as well as the final upstreaming of the DRBD ‘Distributed Replicated Block Device’ driver that has existed for years in a separate project (and has been shipped by at least one enterprise Linux).
There were other changes contained within 2.6.33 though too – of course – including the removal of the AS (anticipatory) I/O scheduler that has long since been replaced by CFQ (the Completely Fair Queuing I/O scheduler), a number of performance counters (perf) improvements, and many other smaller items that we don’t have room to mention here. You can find an excellent community effort to document the new features online here.
Nouveau 3D graphics
Perhaps the biggest end-user visible change in 2.6.33 was the inclusion of the Nouveau accelerated graphics driver for Nvidia chipsets. Nouveau is a community effort to produce an open source alternative driver to Nvidia’s proprietary graphics driver, and work has been ongoing since 2006. The driver at this point is quite capable and in use by a large number of users (more on that in a moment) already, although some issues certainly do remain in spite of the developers’ efforts. Not least amongst these is the lack of a stable ABI (application binary interface) between parts of the driver and the non-kernel ‘user space’ X.Org graphics drivers that actually run your desktop. It might seem curious that the Nouveau developers have not (yet) made an effort to handle versioning of their interfaces, but there is at least one good reason for this: the Nouveau developers never requested that their driver be included in the 2.6.33 kernel. That came from Linus.
To understand why Linus would specifically request a driver be merged, it is necessary to have some historical perspective. Linus is a Fedora user (F12 as of this writing), and Fedora has been shipping support for the Nouveau graphics driver for some time in its own kernels. They are, of course, free to do this – most distributions contain some patches that are not yet in the official kernel, for various reasons – but Linus had specifically raised the lack of this driver being upstream as an item of concern amongst those present at the 2009 Kernel Summit back in the autumn of last year. He seemed frustrated at what he saw as a lack of movement to get the driver upstream once it was being shipped by a large distribution, especially since the maintainer of the 3D graphics subsystem (DRM) had contributed to the Fedora kernel work. All of this meant that when Nouveau was not included in the regular patches sent in for 2.6.33, Linus put his foot down and forced the issue, refusing to take further 3D graphics patches unless they also included Nouveau.
That Nouveau inclusion came back to bite this month as a 2.6.34 patch posting explicitly broke the binary interface between the latest version of the kernel driver and the X.Org user‑space pieces. This would mean that users would have to upgrade both pieces at the same time, rendering it impossible to run older development kernels once the new work was included. Linus posted a series of rants about how he hadn’t been made aware of this fact (which was mentioned in one of the many patches, but not in the customary introductory email used to request their inclusion) that the updates would break compatibility, especially on his own system.
Needless to say, it is never a good idea to break Linus’s own system.
Quoting Linus’s response to the patches, “We can’t just go around breaking people’s setups. This driver is, like it or not, used by Fedora 12 (and probably other distros). It may say ‘staging’ [referring to unstable drivers marked as such in the kernel source], but that doesn’t change the fact that it’s in production use by huge distributions.” Therein began a kernel flamefest in which various people argued about ‘upstream first’ (ensuring code is in the official kernel before it is released in distributions) as a philosophy, and various other progressively less relevant posts to the topic at hand. Perhaps the only topics not explicitly covered were the weather or the global economy.
Over the page we talk about the 2.6.34 merge window…