2.6.29 merge window, part 1
As of this writing, some 6500 non-merge changesets have been accepted for the
2.6.29 development cycle. There is the usual set of new device drivers,
combined with a number of important core kernel changes.
As of this writing, user-visible changes include:
- New drivers for for SH-2A FPU based SH7201 processors,
Palm T|X, T5 and LifeDrive audio devices,
Gumstix Overo audio devices,
Marvell Zylonite audio devices,
Wolfson Micro TWL4030, UDA134x, WM8350 AudioPlus, and WM8728 codecs,
Texas Instruments SDP3430 audio devices,
OMAP3 Pandora audio devices,
Intel G45 integrated HDMI audio codecs,
Broadcom BCM50610 network PHYs,
LSI ET1011C PHYs,
KS8695 Ethernet devices,
SMSC LAN9420 PCI Ethernet adapters,
SMSC LAN911x and LAN921x embedded Ethernet controllers,
Solarflare 10Xpress SFT9001 network controllers,
Atheros AR9285 chipsets,
Solos ADSL2+ PCI Multiport cards,
Nuvoton W90X900 CPUs,
LG ATSC lgdt3304 video capture devices,
Sharp s921 ISDB-T devices,
ST Microelectronics STB6100 silicon tuners and STB0899 multistandard
ST STV06XX-based cameras,
TDA8261 8PSK/QPSK tuners,
OmniVision ov772x cameras,
Conexant CX24113/CX24128 tuners,
Texas Instruments TVP514x video decoders,
OMAP2 camera devices (as seen in Nokia Internet tablets),
NXP TEA5764 I2C FM radio devices,
Chelsio T3 ASIC based iSCSI adapters,
Wolfson Microelectronics WM8350 power management units,
Dialog DA9030 battery chargers,
DaVinci DM355 EVM microcontrollers,
Intel 5400 (Seaburg) memory controller chipsets,
Walkera WK-0701 RC transmitters,
Wacom W8001 penabled serial touchscreens,
Dialog Semiconductor DA9034 touchscreens,
TSC2007 based touchscreens,
PXA930 trackball mice, and
PXA930/PXA935 enhanced rotary controllers.
- A number of new drivers have also entered the kernel via the staging
tree; these include drivers for Sensoray 2250/2251 video capture
devices, Airgo AGNX00 wireless chips, a wide variety of data
acquisition devices via the Comedi framework, ASUS laptop OLED
displays, Ralink 2860 and 2870 wireless wireless interfaces ("This is the
Ralink RT2860 driver from the company that does horrible things like
reading a config file from /etc."),
RealTek RTL8187SE Wireless LAN NICs,
HD44780 or KS-0074 parallel port LCD panels,
ServerEngines BladeEngine (EC 3210) network interfaces,
Princeton Instruments USB cameras,
Mimio Xi interactive whiteboards,
the openPOWERLINK network stack,
Frontier Tranzport and Alphatrack devices, and
several families of Meilhaus data acquisition boards.
Also added, seemingly without help from Google, is a set of drivers
for the Android platform, including
support for the /dev/binder IPC mechanism, timed GPIO
operations, the RAM buffer console,
a special "low memory killer" device,
and the logger device.
Remember that "staging" drivers are not
considered to be up to normal kernel code quality drivers; they are
merged in the hope that developers will help to make them better.
Quite a few improvements to these drivers were merged via the staging
tree this time around, so this tree may be working as intended.
- The long-deprecated eepro100 driver has finally been removed; the
e100 driver should be used instead.
- The SCSI layer has acquired support for Fibre Channel over Ethernet
- The GEM layer used for memory management in graphical processor unit
(GPU) driver code has seen a number of improvements. The big news in
this area, though, is that the kernel mode setting code has finally
been merged. This change paves the way for the removal of a great
deal of scary user-space code, better support for features like fast
user switching, and the ability to run the X server without root
privilege. Kernel mode setting is still in an early state, though,
and most people will not want to enable it unless they are sure they
have a properly-prepared user space.
- Support for HP iPAQ h5000 systems,
Samsung S3C64XX series based systems,
and Pandora game consoles has been
added to the ARM architecture code.
- The SuperH architecture has gained support for the ftrace tracing
- There is a new no_file_caps= boot option which can be used to
disable file capabilities on kernels which have that feature enabled.
From the changelog: "This allows distributions to ship a kernel
with file capabilities compiled in, without forcing users to use (and
understand and trust) them."
- The CIFS filesystem supports a new forcemand mount option;
when present, it causes CIFS to use mandatory locks rather than
POSIX-style advisory locks.
- The CUBIC 2.3 TCP congestion control algorithm and the "backward
congestion notification" feature are now supported in the
- The network code has support for the "deficit round robin" packet
scheduling algorithm, said to produce highly fair scheduling with
- A vast set of network namespace patches has been merged. The
namespace hackers have, so far, refrained from saying that this
feature is ready for general use, but it must be getting closer.
- The devpts filesystem now supports the creation of multiple instances
in different namespaces.
- The wireless regulatory domain code has been extended to provide 802.11d support.
- The Tree RCU patch set,
which should provide improved scalability on systems with "more than a
few hundred CPUs," has been merged.
- Users of huge pages can now look in /proc/pid/smaps
for a new KernelPageSize value giving the actual size of the
pages in use. Among other things, this information can be used to
verify that a process is actually using large pages where expected.
- The eCryptfs filesystem now supports the encrypting of file names as
well as their contents.
- The FUSE user-space filesystem mechanism can now support
ioctl() and poll() calls.
- Support for unlabeled networks and hosts has been added to the SMACK
Changes visible to kernel developers include:
- There is a new synchronous hash interface called "shash." It
simplifies the use of synchronous hash operations while allowing the
same tfm to be used simultaneously in different threads. All in-tree
users have been switched to the new API.
- The massive task credentials
patch set has been merged. This code reorganizes the handling of
process credentials (user ID, capabilities, etc.). One of the
immediate implications of this change is direct references to
credential-oriented fields in the task structure need to be changed;
for example, current->user->uid becomes
current_uid(). See Documentation/credentials.txt for a
description of the new API.
- The ftrace code has seen a lot of internal changes. The function
tracing feature has seen a number of improvements, and the developers
mechanisms to profile the behavior of if statements,
provide function call graphs,
obtain user-space stack traces, and
follow CPU power-state transitions.
- Most of the callback functions/methods associated with the
net_device structure have been moved out of that structure
and into the new struct net_device_ops. In-tree drivers
have been converted to the new API.
- The priv field has been removed from struct
net_device; drivers should use netdev_priv() instead.
- The generic PHY layer now has power management support. To that end,
two new methods - suspend() and resume() - have been
added to struct phy_driver.
- The networking layer now supports large receive offload (or
"generic receive offload") operation.
- The NAPI API has been cleaned up somewhat; in particular, functions
like netif_rx_schedule(), netif_rx_schedule_prep(),
and netif_rx_complete() have lost the unneeded struct
- The hrtimer code has been simplified with the removal of variable
modes for callback functions. All processing is now done in hardirq
- A new set of LSM hooks has been added; these support pathname-based
security operations. With the merging of these hooks, one major
obstacle to the inclusion of security modules like AppArmor and TOMOYO
has been removed.
- The kernel will now refuse to build with GCC 4.1.0 or 4.1.1; those
versions have unfortunate bugs which prevent the building of a working
kernel. Versions 3.0 and 3.1 have also been deemed to be too old and
will not be supported in 2.6.29.
- Video4Linux drivers now use a separate v4l2_file_operations
structure to hold their VFS-like callbacks. The prototypes of a
number of these functions have been changed to remove the
- Video4Linux2 has also acquired a new "subdevice" concept, meant to
reflect the fact that video "devices" tend to be, in reality, a set of
cooperating devices. See the new
document for a description of how this mechanism works.
- Two new functions - stop_machine_create() and
stop_machine_destroy() - allow the independent creation of
the threads used by stop_machine(). That, in turn, lets
those threads be created before trying to actually stop the machine,
making that operation more resistant to failure.
- The poll() file operation is now allowed to sleep; see this article for more
information on this change.
- The CPU mask mechanism, used to represent sets of processors in the
system, is in the middle of being massively reworked. The problem is
that CPU masks were often put on the stack, but, as the number of
processors grows, the stack lacks room for the mask. The new API is designed to
get these masks off the stack, and to guard against anybody ever
trying to put one back. See this
posting by Rusty Russell for details on this work.
The merge window opened on December 28; if the usual two-week pattern holds,
changes should be accepted through January 11. Tune in next week for
an update on the final patches merged for the 2.6.29 kernel.
to post comments)