Even more drivers
So far we've discussed the infrastructure and driver improvements which are relevant for the majority of Linux users – before this article shifts its focus to other important development aspects of 2.6.27 and then provides a short conclusion followed by an outlook on 2.6.28, however, the next few passages provide information about numerous further and by no means unimportant improvements to drivers and infrastructure. Kernel hackers, for example, sped up the recovery process from standby (ACPI S3) for systems which use the AHCI for addressing the system volumes. Another patch for the same driver increased the patch author's data throughput by an average of ten percent. Also new is the enclosure management in the AHCI driver, which can make it easier to find (faulty) hard disks in the server rack.
Driver changes galore Among the innumerable changes in Linux 2.6.27 is a great number of patches which change the many drivers contained in the Linux sources. These patches improve hardware support, increase the range of features offered or simply correct mistakes. The paragraphs on this and the previous pages only mention the most important of these driver improvements; many further changes are listed with short descriptions and roughly sorted by topic in two collections at the end of this article (1, 2). The listed changes contain links to the respective commit in the web interface of the Linux source code management system, where you can usually find both more background information about the change and the patch itself. |
In 2.6.27, the source code for the Direct Rendering Manager (DRM) received major restructuring work. The changes were made to improve the integration of the GEM GPU memory manager and the kernel based modesetting (KMS) planned for 2.6.28 or 2.6.29. Integrated into the Linux kernel for the first time was also the hso driver for Option HSDPA/HSUPA cards and the bcm5974 input driver for the touchpads in the Macbook Air and the Pro Penryn. The kernel hackers extented the driver for Intel's I/OAT (I/O Acceleration Technology) to support I/OAT specification 3.0. There were also numerous changes to the drivers for FireWire hardware.
Linux 2.6.27 already supports the audio and storage components of Intel's Ibex Peak chipsets (1, 2, 3) even though these are currently scheduled for release with the Nehalem CPUs for mainstream desktops (known by their code names Lynnfield and Havendale) in the third quarter of 2008. Several changes have also already been integrated for the Core i7 and Xeon CPUs with Nehalem core that are anticipated for release in the coming weeks, for example their support in Oprofile and coretemp.
However, 2.6.27 also dispensed with several drivers – for example with the i2c drivers, i2c-i810, i2c-prosavage and i2c-savage4 which have been replaced by other drivers for quite some time. There also has been a more modern driver to replace the now removed trident OSS driver in the kernel for quite some time. The developers also threw out the long ailing auerswald ISDN driver, whose task has been taken over by a libusb based driver in the userspace.
Fine tuning
After years of development, the lockless pagecache patches (1, 2, 3) and their get_user_pages (1, 2, 3, 4, 5, 6) by Novell developer Nick Piggin have finally found their way into the main development branch; the patches accelerate several memory subsystem procedures, which is said to be particularly beneficial for the performance of large systems. Several additional changes were incorporated mainly by the SGI developers to ensure that Linux runs smoothly on systems with up to 4096 CPUs (1, 2).
New in the main development branch is also the Ftrace (Function Tracer) debugging and test framework. It helps Linux and system developers trace the code sections where the system spends a lot of its operational time – these hot spots can then be specifically targeted for performance and response speed optimisation. The frontend of the older Sysprof (System-wide Linux Profiler) can still be used via an Ftrace plugin (1, 2, 3, 4, 5). New in 2.6.27 is also Mmiotrace (1, 2, 3, documentation). This toolbox is partially based on Ftrace, was started by Intel and Nouveau developers and serves for tracing Memory Mapped IO (MMIO). This is interesting for debugging or reverse engineering tasks – and that's exactly what the developers of the Nouveau graphics driver created Mmiotrace for, so they could better monitor the operation of the proprietary Nvidia driver for Linux. Another new component is the Tracehooks tracing infrastructure. This infrastructure is to become the basis for Utrace, which has long vied for integration into the official kernel.
Those who often configure and compile kernels should be pleased about the Diffconfig tool integrated with 2.6.27 which makes it easy to compare two kernel configuration files. Numerous patches introduced by Ulrich Drepper are likely to be of interest to programmers who develop multithread userspace applications. The patches integrate several new syscalls designed to avoid some known POSIX file descriptor security risks; Drepper, who maintains the Glibc standard C library, describes the background of the changes and their intended function in the Glibc in his blog; LWN.net also discussed the then proposed patches several months ago.
2.6.27 sees a change to the Completely Fair Scheduler (CFS) called SMP-nice for group scheduling – it was originally intended for 2.6.26 but had to be postponed due to a lack of quality. Due to several alterations (1, 2), system hibernation can now also be executed via kexec – developers call this khibernation. This is meant to offer several advantages over the previous software suspend (Swsusp) method, but it is still quite experimental.
In addition, the kernel developers included many improvements to the KVM virtualisation solution – among these is mmu-notifiers, which is mainly, but not exclusively, useful for virtualisation solutions like KVM. Also new, the support for the paravirt_ops hypervisor interface based on the IA64 architecture of Intel's Itanium (1, 2, 3, documentation) as well as the Save/Restore support required to migrate guests to other host systems in Xen. Support for Xen DomU for x86-64 systems has also been included for the first time (1, 2, 3, 4, ) – to date, the Xen code included in the kernel since 2.6.23 only supported the operation of x86-32 Linux under a Xen hypervisor.
The kernel's crypto support can now handle the RIPEMD-128 and RIPEMD-160 algorithms (1, 2) and can generate hashes asynchronously if required. The kernel hackers have continued to merge source code files which are similar for x86-32 and x86-64 systems. The filters for SCSI commands can in 2.6.27 be configured by the system administrator for individual devices and during operation; so far, filters were rigid, allowing users to address burners etc but disallowing anything that could potentially do any damage.
The improved infrastructure for hugetbl (Huge Tables) now allows the use of the gigabyte pages (1, 2) supported by recent AMD processors; to ensure the continued use of medium-size pages, developers made several changes to the hugetbl infrastructure (1, 2, 3, 4). New is also the support for AMD's IOMMU (1, 2, 3, 4).
The numerous lines of source code changed during the development of 2.6.27 and recorded in diffstat were not only caused by the improvements and new features but also by some cleaning up and restructuring work. Developers threw out components like the support for the v850 architecture, which hasn't been maintained for a long time. As expected, the patch for removing the arch/ppc/ directory is almost 4 Mbytes in size – the currently supported Power and PowerPC architectures are now exclusively handled by the code which has been located at arch/powerpc/ for quite a while. A considerable number of new and removed lines of source code were also created by the restructuring of the MIPS code and by numerous patches to reposition the include files for some of the supported architectures on the source code tree (see, for example, the commits for ARM, IA64, Power or Sparc). When rename detection is activated in Git, diffstat will therefore display slightly fewer changes.
Next: Formative discussions, no longer any explicit warnings in case of security holes