Last month saw the opening (and then closing) of the 2.6.33 merge window (the time during which Linus takes potentially ‘intrusive’ patches to the kernel, followed by a period of stabilisation) and with it a flood of patches intended for the 2.6.33 kernel release. There were the usual kinds of driver updates, but also a large amount of work on Big Kernel Lock (BKL) removal – more on that in a moment – and some controversy over graphics drivers. As usual, almost nothing is truly off limits in the kernel and even the venerable sysctl support had a sprucing up this time around. Meanwhile, outside of the merge process, there were a number of features proposed for the longer term – asynchronous page faults and power capping amongst them – and poetic verse in changelogs.
The 2.6.33 merge window
With the holidays now seemingly a distant memory, the new year began with the first few releases of what will become 2.6.33 (by the time you read this). Linus in fact got out a couple of updates just before Christmas, noting, “Merry Christmas… or [whatever] you’re celebrating today/tomorrow”, and he even had
a solution for those of us who ate a little too much and may now be regretting it in January: “While your pants may not fit you for the next month, the new kernel might just fit your computer perfectly.”
Several overhauls are coming to the 2.6.33 kernel. The first is a continuation of the work to reduce (and eventually remove) the Big Kernel Lock. This is a stayover from the early days of Linux multiprocessor (SMP) support, in which the kernel could only be executing kernel code on one CPU at a time (regular applications could run on many simultaneously). The lack of full scalability in kernel code was a compromise design decision to get initial support in place, but it has taken many years to reach a point where the final users of the BKL may be removed soon. To that end, a number of the kernel development community members have been hard at work on file system and terminal code work, amongst other stuff. Work has also been ongoing to replace conventional spinlock (non-sleeping, spinning locks) users with the newer sleeping variety originally introduced in the RT (real-time) kernel, and now headed into the official kernel around 2.6.34. Since some spinlocks really must never sleep, that effort includes replacing a number of existing spinlock users with raw spinlocks, as in RT.
For a number of years now, a team of developers have been working independently of the kernel to implement a fully open source graphics driver for Nvidia chipsets. This is called ‘nouveau’ (French for ‘new’) and it is widely available in various distributions – which patch their kernels to add these driver features – but had not been in the official kernel. The topic had arisen at the annual kernel developer summit in the autumn and Linus decided to put his foot down in 2.6.33, refusing to take other graphics updates from the maintainer unless they also contained the nouveau code.
Dave Airlie pulled a long late night to turn that around and get a special version of the nouveau code – one without the potentially contentious ‘firmware’ (‘ctxprogs’ – it’s largely considered to be a kind of firmware) that previously was built into nouveau and had been a reason for it remaining separate. The in-kernel code now uses ‘request_firmware’ to load it, so you (or perhaps your distribution, if they feel it is legally sound) still need to obtain the special blob from somewhere to actually make use of the new graphics driver support in 2.6.33.