Kernel Log: What's coming in 2.6.28 - Part 3: Dodgy drivers
At the Kernel Summit a few weeks ago, kernel hackers accepted the "linux-staging" development tree into the main development tree (1, 2) (Kernel-Summit). Greg Kroah-Hartman started linux-staging a few months ago as a place to bring together open source drivers that are maintained independently of the official Linux kernel but do not satisfy the kernel developers' quality requirements. The aim of linux-staging is to offer developers a central platform on which to prepare the drivers for acceptance into the official linux kernel.
Now the kernel developers want to accelerate the improvement of these drivers, which have some serious problems in their code or in their design, within the main development tree. The idea is that the kernel hackers will have the code for these drivers easily available to them and will be able to contribute improvements over their normal channels. In order to separate mature from immature drivers, the code brought in from linux-staging has landed up in a new driver/staging/ folder.
There is a problem, though: how to make users and developers aware that there are staging drivers present. To handle this, when a staging driver is loaded, moreover, the kernel is marked as "TAINT_CRAP", so that when bug reports come in from users, it is clearly visible that a "dodgy" driver was loaded and may have been, at least partly, responsible for any problems (1, 2).
Of the approximately ten staging drivers now accepted into the main development tree, some are well-known ones that linux distributions have been delivering for years such as the prism2_usb driver developed by the WLAN NG Project and the at76_usb driver for wireless chips by Atmel. We'll have to see whether this acceptance into the staging area of the official kernel will now stimulate more kernel hackers than before to feel a call to improve the drivers. Where the old, complex wireless driver is concerned, writing a new driver starting from scratch might possibly be the better approach.
Further commits relating to the acceptance of linux-staging:
- Staging: add Alacritech slicoss network driver
- Staging: add Kconfig entries and Makefile infrastructure
- Staging: add sxg network driver
- Staging: add me4000 firmware files
- Staging: add me4000 pci data collection driver
- Staging: USB/IP: add host driver
- Staging: USB/IP: add client driver
- Staging: USB/IP: add common functions needed
- Staging: add the go7007 video driver
- Staging: add w35und wifi driver
- Staging: Fix gcc warnings in sxg
- Staging: go7007 v4l fixes
- Staging: add echo cancelation module
- Staging: SLICOSS: Fix warnings due to static usage
- Staging: SLICOSS: Fix remaining type names
- Staging: SLICOSS: Call pci_release_regions at driver exit
- Staging: workaround build system bug
- Staging: Lindent sxg.c
- Staging: SLICOSS: lots of checkpatch fixes
- Staging: add et131x network driver
Further background and information about developments in the Linux kernel and its environment can also be found in previous issues of the kernel log at heise open:
- Kernel Log: More than 10 million lines of Linux source files
- Kernel Log: Coming in 2.6.28 - Part 2: network infrastructure and network drivers
- Kernel Log: Coming in 2.6.28 - Part 1: ATA support and block layer
- Kernel Log: new Catalyst drivers, 220.127.116.11 resolves cause of e1000e problem
- Kernel Log: Ext4 completes development phase as interim step to btrfs
- Kernel Log: Linux 2.6.27 Released