Kernel Log: Coming in 3.8 (Part 3)
by Thorsten Leemhuis
The Linux kernel now includes everything that is needed to use 3D acceleration with all GeForce graphics chips. Drivers have also been added for a Wireless Gigabit chip and a PCIe WLAN chip from Realtek.
In his email announcing the release of Linux 3.8-rc6, Linus Torvalds emphasised that he wanted the seventh release candidate to be the last one. When he released RC7 on Friday, however, he made no mention of whether there would be an eighth RC before the final version of Linux 3.8.
As long as no more major problems arise, though, the Linux kernel 3.8 should still be released this month. This article on driver updates will therefore bring the "Coming in 3.8" Kernel Log mini-series to a close. The first two parts of the series focused on the changes that kernel developers made to filesystems and storage and the platform and infrastructure code for Linux 3.8.
In Linux 3.8, the Nouveau kernel driver will include everything that the OpenGL driver – which is part of current versions of Mesa 3D and is also called Nouveau – needs to use the 3D acceleration of all GeForce graphics chips available so far without further configuration. This is the first time that the Nouveau developers, who use reverse engineering to get the information they need to program their drivers, have managed this feat; before this, they were still lacking standard 3D support for some newer Fermi GPUs and the Kepler graphics chips, which have been on the market since March 2012 (1, 2, 3). For many computers, however, NVIDIA's proprietary graphics driver will still be a better choice, since Nouveau can't activate the faster operation modes for many of the newer GeForce chips, resulting in 3D performance that leaves something to be desired. There are also other issues, particularly when it comes to video acceleration and fan management support.
Version 3.8 of Linux is the first to include a simple kernel graphics driver for the graphics cores in NVIDIA's Tegra 2 and 3 SoCs (system on a chip) (1, 2, 3 and others). The driver is not from NVIDIA; it was developed mostly by a developer from the German company Avionic Design. The company works on embedded solutions in close cooperation with NVIDIA and programmed the driver independently, but with input from NVIDIA. Surprisingly, NVIDIA jumped into the development process, publishing extensions a few weeks ago that let the driver make the graphics cores' acceleration features available, but these improvements did not make it into 3.8. Userland drivers are still needed to use the acceleration functions, and NVIDIA has yet to give any indication that it is interested in releasing those drivers under an open source licence. Nouveau developer Lucas Stach shared background information on the Linux drivers for NVIDIA's Tegra in a presentation at FOSDEM 2013, a recording of which is available on YouTube.
The Radeon driver now allows more of the graphics cores' DMA engines, which have previously been largely ignored, to be used from userspace (1, 2, 3, 4, 5). The i915 graphics driver now supports by default the graphics cores of the Haswell processors that Intel will introduce under the name Core i4000 in a few months. The developers have also included a workaround for a bug in the Intel 830 and 845 chipsets so the graphics drivers are supposed to be stable on these chipsets.
The virtio_net network driver, which uses paravirtualisation and is especially used with KVM and Xen, should provide better performance now that it can use multiple queues for each network device. The same goes for the Tun/Tap driver, which is also used for system virtualisation as well as other purposes like emulating network hardware.
The batman-adv (Better Approach To Mobile Ad-Hoc Networking Advanced) mesh implementation developed as part of open-mesh.org to spontaneously create WLAN networks can now build a distributed ARP table, which allows non-mesh clients on a network to receive quick, reliable answers to their ARP queries.
The rtl8723ae driver for the Realtek RTL8723AE PCIe WLAN chip is new (1, 2 and others), as is the wil6210 driver for a Wilocity WLAN chip that operates at 60GHz and uses the IEEE 802.11ad standard promoted by the Wireless Gigabit Alliance (WiGig).
Another addition to the kernel is the ar5523 driver, which was started over five years ago for the Atheros USB chipset of the same name. Extensions for supporting more chips and WLAN adapters were added to a number of other drivers; the brcmsmac WLAN driver, for example, now supports the BCM43224 Broadcom chip, while the rt2800usb RaLink driver supports the Sweex LW323 USB WLAN adapter.
The cdc-mbim driver, which supports broadband modems that implement Mobile Broadband Interface Model (MBIM) 1.0, specified by the USB Implementers Forum, is also new (1, 2). MBIM is a USB protocol for connecting modems for laptops, tablets and desktop computers that provide an internet connection using GSM and CDMA-based 3G and 4G (including LTE). Aleksander Morgado provides more details on the protocol and its advantages compared to other technologies in a blog post.
The kernel's audio drivers now support the Philips PSC724 Ultimate Edge sound card. The kernel can also handle VIA's VT1705CF HD audio codec now. The merge listing the most important changes to Linux 3.8's sound subsystem includes some other changes to audio drivers.
The kernel now includes a driver for human interface devices (HIDs) that use I2C (1, 2 and others), using the "HID over I2C" protocol designed by Microsoft and implemented in Windows 8. Extensions were added to the HID multitouch driver to support some of the features for better finger and movement recognition found in Windows 8.
The drivers for Video4Linux 2 (V4L2) located in the media subsystem can now use the "DMA Buffer Sharing Mechanism" (dma_buf) integrated in Linux 3.3 to share buffer space with graphics cards, which makes it possible that data from video hardware will no longer need to be duplicated in the buffer in order for a graphics chip to display it.
Alan Cox has given up kernel development for family reasons, leaving his position as maintainer of the serial driver subsystem. Cox is a Linux veteran who maintained the Linux kernel 2.2, during which time he was considered the second most important kernel developer after Linus Torvalds. Although he hasn't been that far up in the ranks these last few months, Cox has still contributed quite a lot to the development of Linux.