What's new in Linux 3.4

by Thorsten Leemhuis

The new version sees a number of important changes affecting graphics drivers. The x32-ABI promises the advantages of x86-64-CPUs without the overhead of 64-bit code. Btrfs is reported to be quicker, and Yama prevents processes from accessing each other's allocated memory.

The kernel developers have needed only two months to complete the recently published 3.4 version of the Linux kernel; yet, the release offers the usual number of new features. Some of the features are as interesting for data centre administrators as they are for users who run Linux on desktop PCs or notebooks.

In detail

This article provides an overview of the most important changes of Linux version 3.4. More detailed information can be found in the Kernel Logs of the "Coming in 3.4" mini-series, released over the past few weeks on The H Open, which form the basis of this article.

In these articles, you will find the more detailed source articles that cover the important changes in each particular area. There is also the "Minor gems" section in each which lists the many other changes not mentioned in the main article but which, for many users, are still of great significance.

Graphics

Just hours after NVIDIA released its GeForce GTX 680 graphics card – with which NVIDIA has ushered in the switch from the Fermi to the Kepler architecture – kernel developers added rudimentary support for it to the Nouveau DRM/KMS driver. Initially this only enabled basic functionality such as setting common display modes including standard widescreen display resolutions that are not supported by the VESA driver. A bit later, the development versions of the Nouveau drivers in Mesa 3D and X.org also gained support for this card. It's likely to be several months before the major Linux distributions include all of the components required for the GTX 680 out of the box; for that to happen someone first needs to write some open source firmware for it.

The Radeon DRM/KMS driver in the 3.4 kernel will support Southern Islands (SI) and Trinity (TN) family graphics cores (1, 2, 3, 4 and others). The SI generation, also known as RAxx, includes the Tahiti, Pitcairn and Verde graphics chips found on the mid- to high-end cards which make up the Radeon HD 7700, 7800 and 7900 series. A Gallium3D driver for Mesa 3D which works in conjunction with the kernel's DRM/KMS driver is in development. Trinity is the code name for the processor series equipped with an on-chip graphics core that AMD released in mid-May. These are supposed to replace the Llano processors from AMD's A-series, which is primarily used in lower- to mid-priced desktops and laptops. Support for the Trinity GPU was also added to Mesa 3D and X.org; it should show up in Linux distributions in the not-too-distant future.

Intel developers have merged a patch which means that Linux 3.4 will now use RC6 – the graphics core power-saving feature – by default on Sandy Bridge processors that contain a GPU (graphics processing unit). As this feature typically reduces power consumption when idling by between three and five watts, this should noticeably extend laptop battery life and tangibly reduce noise levels, since the fan will have less hot air to expel from a system.

The kernel has also gained a simple DRM/KMS driver by the name of udl. It implements the DisplayLink protocol, which is used for controlling USB monitors. One further component integrated in 3.4 is prime/dma-buf, a framework which enables graphics cores to exchange data with minimal overhead. In the long term, this is intended to improve support for hot pluggable graphics chips, by allowing, for example, an NVIDIA chip to pass images that it has calculated to the processor graphics core for output without too much effort. No drivers are using the new infrastructure yet.

Architecture & Infrastructure

From Linux 3.4, kernels that are compiled for x86-64/x64 processors can offer an "x32" ABI (Application Binary Interface) to programs (1 and others). Programs compiled for this ABI can access the 64-bit registers and data paths of 64-bit processors, but they only use 32-bit pointers – which are sufficient for many typical tasks and use less memory than 64-bit pointers. Broadly speaking, this allows programs that are compiled for the x32 ABI to avoid the overhead that comes with full 64-bit operation while enabling them to benefit from some of the major advantages of 64-bit x86 processors. The new ABI appears to be intended predominantly for the embedded and mobile markets, as most of the programs used in this area are unlikely to require more than 4GB of memory, or they will gain enough from using 64-bit pointers elsewhere to compensate for the increased memory consumption of full 64-bit operation.

The newly incorporated Yama security module can prevent processes from using the Ptrace (Process Trace) function call to examine other processes' memory; SELinux has recently added similar functionality.