Kernel Log: Coming in 3.2 (Part 5) - Drivers
by Thorsten Leemhuis
Kernel version 3.2, expected around New Year, improves support for multitouch touchpads. It also enhances support for modern NVIDIA graphics chips and offers a range of new and improved drivers for DVB hardware.
Linux 3.2 will likely be released around the New Year, as Linus Torvalds indicated when releasing Linux 3.2-rc6: "[…] while I can see myself doing an -rc7, I probably won't do an -rc8 unless something bad pops up. There doesn't seem to be any real reason to drag out this release any more, and we'll probably have the real 3.2 around new years."
The seventh release candidate (RC) will probably appear around Christmas Eve, if Torvalds sticks to his usual rhythm. The Kernel Log will therefore conclude its "Coming in 3.2" mini-series with a discussion of the kernel advancements in hardware support. Parts 1 to 4 of the series provided an overview of the new kernel version's changes related to network drivers and infrastructure, filesystems, architecture and processor support and other aspects of the kernel infrastructure.
On systems that are based on Intel's Ivy Bridge platform, which is expected to become available next year, the DRM/KMS driver for Intel GPUs will be able to drive up to three monitors. From Linux 3.2 onwards, that driver will enable hardware semaphores and the very efficient and Intel-specific RC6 graphics power-saving feature by default (1, 2)). Both features will also be used by default on Intel's current Sandy Bridge processor generation if the system does not use VT-d, as this virtualisation technology is known to cause problems when used alongside RC6.
Update: 27/11/12 - New problems were found on Sandy bridge systems after RC6 and hardware semaphores were enabled by default. In response to those problems the kernel developers have, yet again, disabled both features by default (1, 2).
Since the technique lowers the power consumption of many Sandy Bridge systems by a few watts, it is especially interesting for notebooks since it can significantly extend the battery life. It can be activated on older kernels with the kernel boot parameter i915.i915_enable_rc6=1, but those versions lack some fixes for problems surrounding the use of RC6, which have been included in Linux 3.2.
The Nouveau driver now uses the acceleration functions that are available with the auto-generated firmware on the Fermi graphic cores NVC1 (GeForce GT 415M, 420, 420M, 425M, 430, 435M, 525M, 530, 540M, 550M and 555, as well as Quadro 600 and 1000M), NVC8 (GeForce GTX 560 Ti OEM, 570, 580 and 590 as well as Quadro 3000M, 4000M and 5010M) and NVCF (GeForce GTX 550 Ti and 560M) chips; Linux 3.2 will be the first kernel version to support the latter graphics chips. Several other kernel modifications provide the foundations for power saving features in the Nouveau driver which future kernel versions are expected to use.
Major restructuring measures affect the vmwgfx DRM/KMS graphics driver, which addresses the VMware SVGA2 virtual graphics hardware components that are emulated by recent virtualisation solutions from VMware. With these measures in place, the driver, which has support for 2D and 3D acceleration, is now no longer rated as a staging driver. A new addition is a DRM/KMS driver for Samsung's Exynos 4210 SOCs, which doesn't yet offer any acceleration. However, this is the first DRM/KMS driver for embedded systems to be incorporated into the kernel; as early as Linux 3.3, a DRM/KMS driver for the OMAP platform by Texas Instruments (TI) is planned to follow, although this driver will be added to the staging area. As of version 3.2, the USB subsystem includes a frame buffer graphics driver for UFX6000 (USB 2.0) and UFX7000 (USB 3.0) chips manufactured by SMSC.
The most important updates for the audio drivers include a patch to bypass problems that can arise if a hardware manufacturer does not provide correct vendor and subsystem information. A range of further kernel modifications improve the auto parser that is used for codec configuration in Realtek's audio codecs (see "Minor gems" section on page 2 of the article). These changes should facilitate code maintenance and improve the automatic configuration of current and future systems; however, as with any other kernel modification, there is no guarantee that a major change in the approach to hardware configuration won't trigger problems that didn't exist in previous kernel versions.
Dozens of changes have been integrated into the media subsystem, which is home to the infrastructure and drivers for remote controls, TV hardware and webcams; subsystem maintainer Mauro Carvalho Chehab lists the most important ones in his two main Git-Pull requests for Linux 3.2 (1, 2). New additions include drivers for webcams with Topro chip-sets as well as for the Pinnacle PCTV HDTV Pro, Technotrend Connect S2-3600 and WinTV-Aero-M TV receivers.
Also newly supported are the Kworld UB499-2T DVB-T receiver and the MaxLinear MxL111SF DVB-T demodulator. Another new kernel addition is a driver for the NXP TDA10071 DVB-S/S2 demodulator and the Conexant CX24118A tuner. In the staging area, the tm6000 driver for TM5600, TM6000 and TM6010 USB-DVB chips and the altera-stapl driver for the Altera FPGA firmware downloader reached a degree of maturity that has allowed the developers to move them to the media subsystem; the same applies to the cx25821 driver for TV cards with Conexant's cx25821 chip.
The media subsystem maintainer now maintains the staging area's media drivers in the drivers/staging/media/ directory; the staging area is the place for code that doesn't meet its developers', or the kernel developers', quality requirements. Among the additions to this area for 3.2 is the as102 driver for a DVB receiver chip by Abilis.
As already mentioned in other parts of the "Coming in 3.2" mini series, the ath6kl, brcm80211 and vmwgfx drivers have also been moved out of the staging area. The same is true for some of the components that support Microsoft's Hyper-V; the remaining components are scheduled to leave the staging area in 3.3. Parts of the driver for Intel's GMA500 graphics core which is, for instance, included in Intel's "Poulsbo" US15W chipset, are also likely to be moved out in that version.
- The Human Interface Devices (HID) code of Linux 3.2 will include a driver with full support for Logitech's Unifying receiver.
- The Synaptics touchpad driver now offers image sensor support and can, therefore, provide information on the positions of several fingers; another modification improves the support for situations where a user places more than two fingers on the touchpad. Extensions to the elantech touchpad driver allow this driver to support recent Elantech hardware and improve its multitouch capabilities (1, 2, 3).
- Several patches have already been integrated into Linux 3.2 that, based on information provided by the Windows drivers, completely disable the ASPM (Active State Power Management) PCIe power management technology for certain chips (1, 2). Linux 3.3 is scheduled to provide the patch that will allow the kernel to behave like modern Windows versions when deciding whether to disable/enable ASPM on a system level. However, several distributions have already integrated this patch into the kernels they deploy as regular updates.
- The new pin control subsystem can simplify the configuration of System-On-a-Chip (SOC) components that allow pins to be used for different purposes; background information can be found in the documentation and in an article on LWN.net.
- The RDMA-nes driver now supports "MPAv2 Enhanced RDMA Negotiation" and "Packed And Unaligned fpdus".
- The SCSI subsystem now offers the mvumi driver for Marvell's Universal Message Interface (UMI); according to the commit comment, this interface is, for example, used to communicate with Marvell chips such as the "Plato". Extensions to the megaraid_sas driver add support for the 9360 and 9380 MegaRAID models. The mpt2sas driver has been given "Fast Load Support". It tries to accelerate driver initialisation, for instance by searching for devices in parallel with other drivers. The qla4xxx driver can now be managed via the Open ISCSI tools' iscsiadm program.