Thursday, April 26, 2007

Linux 2.6.21 Changelog

Short overview (for news sites, etc)

2.6.21 improves the virtualization features merged in 2.6.20 with VMI (http://lwn.net/Articles/175706), a paravirtualization interface that will be used by Vmware (and maybe -probably not- Xen) software. KVM does get initial paravirtualization along with live migration and host suspend/resume support (http://lwn.net/Articles/223839). 2.6.21 also gets a tickless idle loop mechanism called "Dynticks" (http://lwn.net/Articles/223185), a feature built in top of "clockevents" which unifies the timer handling and brings true high-resolution timers. Other features are: bigger kernel command-line, optional ZONE_DMA; support for the PA SEMI PWRficient CPU, for a Cell-based "celleb" architecture from Toshiba, better PS3 support: support for NFS IPv6, IPv4 <-> IPv6 IPSEC tunneling support, UFS2 write support, kprobes for PPC32, kexec and oprofile for ARM, public key encription for ecryptfs, Fcrypt and Camilla cipher algorithms, NAT port randomization, audit lockdown mode, many new drivers and many other small improvements.

Important things (AKA: ''the cool stuff'')

VMI (Virtual Machine Interface)

VMI is a virtualization feature built in top of the paravirt_ops paravirtualization implementation introduced in 2.6.20.

Paravirtualizated kernels need to be modified to run under a hypervisor. The goal of VMI is to become the common paravirtualization interface for hypervisors like Xen and Vmware. Vmware will certainly use VMI; Xen was going to use VMI but they may develop their own VMI-like interface. Any hypervisor can use VMI by providing a (GPLed) ROM; the ROM describes how the low-level VMI kernel must use the hypervisor. A VMI-enabled kernel can also boot on bare hardware and no hypervisor with no performance impact (commit 1 2, 3, 4, 5, 6, 7, 8)

More details about VMI can be found in this LWN article: "The VMI virtualization interface"

KVM updates

KVM does evolve at a very fast pace, due to its clean design. This release (KVM-15) brings many new features:

*

Initial paravirtualization support, which has much faster performance
* Live migration (the guest continues running even while being migrated) support. It's possible to migrate a guest from a Intel CPU to an AMD CPU
* Host Suspend/resume support
* CPU hotplug support - a useful feature for data centers, where you can add/remove CPUs according to the load
* A stable userspace interface

Recommended LWN article: "KVM-15"

(commit 1, 2, 3, 4, 5)

Dynticks and Clockevents

Recommended LWN article: "Clockevents and dyntick"

(This feature touches a lot of low-level x86 code, so regressions are possible. If you have problems with 2.6.21, please report it)

Clockevents is a building block of dynticks. A example of a clock devices is the device which makes timer interrupts. The handling of those devices was made in the architecture-specific code, so there wasn't an unified way of using those devices. The clockevents patch unifies the clockdevice handling so the kernel can use the timer capabilities of those devices in a unified manner. This also allows to implement true high-resolution timers.

Dynticks (aka: dynamic ticks) it's a configurable feature for x86 32bits (x86-64 and ARM support is already done but not ready for this release; PPC and MIPS support are in the works) that changes the heart of the mechanism that allow a system to implement multitasking. To know what dyntick does, first you should know some basics: Traditionally, multitasking is implemented thanks to a timer interrupt that is configured to fire N times in a second. Firing this interrupt causes a call to the operative system's process scheduler routines. Then, the scheduler decides what process should run next, the process that was running before the timer interrupt was fired, or another process. This is how true multitasking is implemented in all the general-purpose operative systems, it's also what stops processes from being able to monopolize the CPU time: The timer interrupt will be fired regardless of what the process is doing and the operative system will be able to stop it.

N (the number of times the timer interrupt is fired in each second, aka 'HZ') is a hardcoded compile-time architecture-dependent constant. For Linux 2.4 (and Windows), HZ=100 (the timer interrupt fires 100 times per second). 2.6 increased HZ to 1000, for several reasons: 100 was the HZ value that x86 had been using since forever, and it didn't really had a lot of sense in modern CPUs that runs much faster: Higher HZ means smaller process time slices, which improves the minimum latency and interactivity. The downside is higher timer overhead (negligible in modern hardware, although some server-oriented distros package kernels with HZ=100 because of minor performance gains) and high pitch noises in some systems due to low-quality, cheap capacitators

Anyway, the issue is that the timer is fired HZ times in every second - even if the system is doing nothing. Dynticks is a feature that stops the system from waking up HZ times per second. When the system is entering the idle loop it disables the periodic timer interrupt, and programs the timer to fire the next time a timer event is needed. This means your system will be 'disabled' while there's nothing to do (unless a interrupt happens - ej: a incoming packet through your network). For now, dynticks does just that. However, this infrastructure will allow to create a innovative power-saving feature: When dynticks is in "tickless" mode and the system is waiting for the timer interrupt, the power-saving feature of modern CPUs will be used. This can save a few W when the laptop is idle.

Dynticks adds some nice configurable debugging features: /proc/timer_list prints all the pending timers, allowing developers to check if their program is doing something wrong when it should be doing nothing, /proc/timer_stat, in the other hand, collects some timer statistics, allowing to detect the source of commonly-programmed timers.

(commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28)

ASoC

The ASoC (ALSA System on Chip) layer has been added to the ALSA sound system. Its aim is to provide improved support for sound processors on embedded systems. The ASoC core is designed to allow reuse of codec drivers on other platforms, reuse of platform specific audio DMA and DAI drivers on different machines, easy I2S/PCM digital audio interface configuration between codec and SoC, and allow machines to add controls and operations to the audio subsystem. e.g. volume control for speaker amp.

To achieve all this, ASoC splits an embedded audio system into 3 components: 1. Codec driver: The codec driver is platform independent and contains audio controls, audio interface capabilities, codec dapm and codec IO functions 2. Platform driver: The platform driver contains the audio dma engine and audio interface drivers (e.g. I2S, AC97, PCM) for that platform. 3. Machine driver: The machine driver handles any machine specific controls and audio events. i.e. turning on an amp at start of playback.

It includes a dynamic power management subsystem, designed to allow portable and handheld Linux devices to use the minimum amount of power within the audio subsystem at all times. It is independent of other kernel PM and as such, can easily co-exist with the other PM systems. DAPM is also completely transparent to all user space applications as all power switching is done within the ASoC core. No code changes or recompiling are required for user space applications. DAPM makes power switching decisions based upon any audio stream (capture/playback) activity and audio mixer settings within the device.

A number of platform and codec drivers for ASoC have been merged as well.

(commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39)

Dynamic kernel command-line

The current implementation stores a command-line buffer allocated to COMMAND_LINE_SIZE (a compile-time constant) size - 256 bytes on x86. This is not enougth space today, some systems hit a limit when they use too many module parameters, video settings, initramfs parameters etc. It's possible to increase COMMAND_LINE_SIZE to a greater value, but there's a problem: a static buffer of that size (say, 2KB) will be allocated even if you aren't using all of it.

So in 2.6.21 the size of the boot command line it's allocated dynamically. A static buffer is still allocated (2K in i386), but the contents are copied into a dinamically-allocated buffer with the exact size, then the static buffer is freed with the rest of the initdata data

(commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)

Optional ZONE_DMA

ZONE_DMA was created for handling x86-specific ISA DMA uglities. Some arches do not need ZONE_DMA at all, the newer x86 systems are not needing ISA DMA and are starting to include IOMMUs. 2.6.21 makes possible to completely disable ZONE_DMA. This also makes possible some compiler optimizations

(commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

devres

"devres" is an optional subsystem for drivers that greatly simplifies the task of driver housekeeping, if you have to acquire+map then later unmap+free a bunch of device-related resources (MMIO, PIO , IRQs, iomap, PCI, DMA resources). The aim is to make easier for programmers to allocate & free resources & handle errors for a driver writer. A device driver can allocate arbirary size of devres data which is associated with a release function. On driver detach, release function is invoked on the devres data, then, devres data is freed (commit)

Recommended LWN article: "The managed resource API"

GPIO API

The GPIO API implements a simple and minimalist programming interface for GPIO APIs. A "General Purpose Input/Output" (GPIO) is a flexible software-controlled digital signal. They are provided from many kinds of chip, and are familiar to Linux developers working with embedded and custom hardware.

(commit 1, 2, 3, 4, 5, 6)

New drivers

Here are some important new drivers that have been added to the Linux tree:

* Graphics:
o

Add fbdev driver for the old S3 Trio/Virge (commit)
o

Driver for the Silicon Motion SM501 multifunction device framebuffer subsystem (commit), (commit)
* Storage devices:
o

Add two drivers for the it8213 IDE device, one using the old IDE stack (commit), (commit) and other using libata (commit)
o

Add IDE Driver for Delkin/Lexar/etc.. cardbus CF adapter (commit)
o

Add IDE driver for Toshiba TC86C001 (old IDE stack) (commit)
o

Add SCSI driver for SNI RM 53c710 (commit)
o

Add driver for Initio 162x SATA devices (commit)
* Networking devices
o

Add driver for the latest 1G/10G Chelsio adapter, T3 (commit), (commit)
o

Add driver for the Attansic L1 ethernet device (commit)
o

Add driver for the Gigaset M101 wireless ISDN device (commit)
o

Add PC300too alternative WAN driver (commit)
o

Add driver for Silan SC92031 device (commit)
o

Add driver for the Davicom DM9601 USB 1.1 ethernet device (commit)
* Various
o

Add driver to charge USB blackberry devices (commit)
o

Add driver for iowarrior USB devices. (commit)
o

Add support for the GTCO CalComp/InterWrite USB tablet (commit)
o

New driver for the Analog Devices ADM1029 hardware monitoring driver (commit)

Crashing soon a kernel near you

This is a list of some of the ongoing patches being developed at the kernel community that will be part of future Linux releases. Those features may take many months to get into the Linus' git tree, or may be dropped. The features are tested in the -mm tree, but be warned, it can crash your machine, eat your data (unlikely but not impossible) or rape your sister (just because it has never happened it doesn't means you're safe):

*

Con Colivas' RSDL process scheduler, which seems to work much better than the stock scheduler according to some reports (LWN article)
* For too long the linux wireless support hasn't been as bright as it should, specially from a desktop-ready POV. A new wireless stack based on the GPLed Devicescape wifi stack has been being developed for many time and soon will be merged. It brings better hardware support, better wireless capabilities, and better tool enablement.
*

The Blackfin architecture
*

Utrace (LWN article)
*

Revoke()/frevoke() system calls (LWN article)
* Mel Gorman's fragmentation avoidance patches and Lumpy reclaim
* Unionfs
*

EXT 4 patches (wiki)
* Lguest
*

Adaptive Readhead
* Reiser 4

Various core changes

*

Remove the SMT-nice feature which idles sibling cpus on SMT cpus to facilitiate nice working properly where cpu power is shared. The idling of cpus in the presence of runnable tasks is considered too fragile, easy to break with outside code, and the complexity of managing this system if an architecture comes along with many logical cores sharing cpu power will be unworkable (commit)
*

EDAC: Add support for Fully-Buffered DIMM APIs to core (commit)
*

Add shadow directory support for sysfs (commit)
*

Add whole_disk partition attribute for disks (commit)
*

Use zone-based counters for: free_pages (commit) and for inactive and active counts (commit)
*

Make mincore work for anon mappings, nonlinear, and migration entries (commit)
*

lockdep: add graph depth information to /proc/lockdep (commit)
*

Support for reshape of a raid6 (commit)
*

Relay: add CPU hotplug support (commit)
*

List all active probes in the system in /sys/kernel/debug/kprobes/list (commit)
*

PCI: Make PCI device numa-node attribute visible in sysfs (commit) Export the numa-node attribute of PCI devices in sysfs so that user applications may choose where to be placed accordingly.
*

PCIEHP: Add Electro Mechanical Interlock (EMI) support to the PCIE hotplug driver. (commit) * EDAC: Add memory scrubbing controls API to core (commit)
*

Make MSI useable more architectures (commit)
*

New toplevel target: headers_check_all (commit)
*

Add the module name for built in kernel drivers (commit)
*

Add retain_initrd boot option to control freeing of initrd memory after extraction (commit)
*

Allow taint flags to be set from userspace by writing to /proc/sys/kernel/tainted, and add a new taint flag, TAINT_USER, to be used when userspace has potentially done something dangerous that might compromise the kernel. This will allow support personnel to ask further questions about what may have caused the user taint flag to have been set. Recommended LWN article: "Tainting from userspace" (commit)

Architecture-specific changes

* x86-32
o

Compile with -freg-struct-return, which returns struct and union values in registers when possible (like pte_t) (commit)
o

Convert i386 PDA code to use %fs (commit)
o

Add option to show more code in oops reports (commit)
o

Support Classic MediaGXm (commit)
* x86-64
o

Add copy_from_user_nocache. This does user copies in fs write() into the page cache with write combining. This pushes the destination out of the CPU's cache, but allows higher bandwidth in some case (commit)
* PPC
o

Add support for the Toshiba's Cell Reference Set 'Celleb' Architecture (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
o

Pa Semi PWRficient CPU support (commit 1), 2, 3, 4, 5, 6, 7, 8, 9, 10)
o

Add kprobes support to ppc32 (commit)
o

Add stackEnable stack overflow checking (DEBUG_STACKOVERFLOW) and stack usage (DEBUG_STACK_USAGE) on ppc32 (commit)
o

Freescale 8xx support (commit), (commit 1, 2, 3, 4, 5)
o

83xx: Add support for MPC8349E-mITX-GP (commit), add base support for the MPC8313E RDB (commit)
o

85xx: Add support for the 8568 MDS board (commit), (commit)
o

PS3: System manager support (commit), vuart add async read (commit), AV Settings Driver (commit), repository storage support (commit), virtual Frame Buffer Driver (commit)
o

Remove the broken Gemini support (commit)
o

Add mpc52xx/lite5200 PCI support (commit) and support for the MPC52xx ATA controller (commit)
o

Add PMI driver for cell blade (commit)
o

Open Firmware serial port driver (commit)
o

Add support for AMCC Taishan 440GX evaluation board (commit)
* ARM
o

Add kexec support (commit)
o

Add support for SMDK2443 (commit)
o

Add ARM11 oprofile support (commit), (commit), (commit)
o

Add support for AT91SAM9263 (commit 1, 2, 3, 4)
o

Add Samsung S3C2443 support (commit), (commit), (commit)
o

Add support for AT91SAM9XE processors. (commit)
o

AACI record support on Versatile platform (commit)
o

Add support for the RealView/EB MPCore revC platform (commit)
o

Add initial board support for Contec Hypercontrol Micro9 boards. (commit)
o

Add Armzone QT2410 support(commit)
* S390
o

Mark kernel text section read-only. (commit)
o

noexec protection on s390 hardware. This hardware does not have any bits left in the pte for a hw noexec bit, so this is a different approach using shadow page tables and a special addressing mode that allows separate address spaces for code and data (commit)
o

Support for s390 Pseudo Random Number Generator (commit)
o

Boot from NSS support (commit)
o

Add AF_IUCV socket support (commit)
o

Rewrite of the IUCV base code (commit), (commit), (commit)
o

Adapt the following drivers to the new IUCV API: netiucv (commit), vmlogrdr (commit), monreader (commit),
o

Hypervisor filesystem (s390_hypfs) for z/VM (commit)
o

Calibrate delay and bogomips (commit)
o

Add support for clock synchronization to an external time reference (ETR) (commit)
o

Add crypto support for 3592 tape devices (commit)
* PARISC
o

Generic BUG (commit)
o

Add TIF_RESTORE_SIGMASK support (commit)
o

Generic time infrastructure support (commit)
* MIPS
o

Add basic support for the SMARTMIPS extension. This extension is currently implemented by 4KS[CD] CPUs support (commit)
o

Iomap implementation (commit)
o

Add UART support for Philips PNX8330/8550/8950 (commit)
o

Add Cobalt Server front LED (commit) and MTD device support (commit)
o

TURBOchannel bus support for the DECstation (commit),(commit)
* SPARC64
o

Add PCI MSI support on Niagara. (commit)
o

Remove the broken SUN_AURORA driver. (commit)
*

IA64: Altix: Add ACPI SSDT PCI (commit) and ACPI SSDT PCI device support (commit)

Filesystems

* eCryptfs
o

Public key encryption support (commit), (commit)
o

Encrypted passthrough: it provides an option to provide a view of the encrypted files such that the metadata is always in the header of the files, regardless of whether the metadata is actually in the header or in the extended attribute. This mode of operation is useful for applications like incremental backup utilities that do not preserve the extended attributes when directly accessing the lower files (commit)
o

Introduce the ability to store cryptographic metadata into an lower file extended attribute rather than the lower file header region. The two new nmount options are: 1) ecryptfs_xattr_metadata: when set, newly created files will have their cryptographic metadata stored in the extended attribute region of the file rather than the header 2) ecryptfs_encrypted_view: when set this option causes eCryptfs to present applications a view of encrypted files as if the cryptographic metadata were stored in the file header, whether the metadata is actually stored in the header or in the extended attributes (commit)
* GFS2
o

Add writepages for "data=writeback" mounts (commit)
o

Speed up readdir (commit)
o

Increase default lock limit (commit)
o

Shrink gfs2_inode memory by half (commit)
* CIFS:
o

Additional POSIX CIFS Extensions infolevels (commit), (commit)
o

Allow update of EOF on remote extend of file (commit)
* XFS
o

Reduction global superblock lock contention near ENOSPC (commit)
o

Make growfs work for amounts greater than 2TB (commit)
*

NFS: IPv6 support (commit 1, 2, 3, 4, 5, 6, 7, 8, 9)
*

Minix: V3 format support (commit)
*

UFS2: read/write support (commit), (commit), (commit)
*

JFFS: Remove JFFS (version 1), as scheduled. Unmaintained for years, few if any users (commit)
*

JFS: Add lockdep annotations (commit)
*

Debugfs: implement symbolic links (commit)

Networking

*

Add Camellia cipher support to IPSEC (commit), (commit)
*

IPv4 over IPv6 IPsec tunnel (commit)
*

IPv6 over IPv4 IPsec tunnel (commit)
*

Make net use the jiffies rounding code (commit)
*

Add CONFIG_NET_KEY_MIGRATE option which makes it possible for user application to send or receive MIGRATE message to/from PF_KEY socket. This feature is required, for instance, in a Mobile IPv6 environment with IPsec configuration where mobile nodes change their attachment point to the Internet. Detail information can be found in the internet-draft "draft-sugimoto-mip6-pfkey-migrate" (commit), (commit)
* NETFILTER
o

NAT: optional source port randomization support (commit)
o

Add IPv6-capable TCPMSS target support (commit)
o

Add SANE connection tracking helper (commit)
o

Introduces match for Mobility Header (MH) described by Mobile IPv6 specification (RFC3775) (commit)
* XFRM
o

Add CONFIG_XFRM_MIGRATE option which makes it possible for for user application to send or receive MIGRATE message to/from netlink socket (commit)
o

User interface for handling XFRM_MSG_MIGRATE (commit)
o

Extension for dynamic update of endpoint address(es) (commit)
*

X.25: Add /proc/net/x25/forward to view active forwarded calls. (commit) and /proc/sys/net/x25/x25_forward to control forwarding (commit). Also add call forwarding (commit)

Various subsystems

Software suspend

crypto/audit

*

Audit: "lockdown" mode where further configuration changes cannot be made. Any attempt to change the configuration while in this mode is audited. To change the audit rules, you'd need to reboot the machine (commit)
*

Add the Camellia cipher algorithm. Camellia is a symmetric key block cipher developed jointly at NTT and Mitsubishi Electric Corporation (commit 1, 2, 3)
*

tcrypt: Added test vectors for SHA384 HMAC and SHA512 HMAC (commit)
*

Allow multiple frontends per backend (commit)
*

fcrypt: Add FCrypt from RxRPC (commit)
*

pcbc: Add Propagated CBC template (commit)

Drivers

Network drivers

*

sky2: add Wake On Lan support (commit), Yukon Extreme support (commit)
*

s2io: Making LRO and UFO as module loadable parameter. (commit) and add a loadable parameter to enable or disable vlan stripping in frame (commit)
*

ucc_geth: Add support to local-mac-address property (commit)
*

zd1211rw: 4 new ZD1211B device ID's (commit), (commit), (commit)
*

prism54: add ethtool -i interface (commit)
*

ipw2200: add iwconfig rts/frag auto support (commit)
*

sungem_phy: support bcm5461 phy, autoneg (commit)
*

spidernet: add support for Celleb (commit), (commit)
*

skge: WOL support (commit)
*

forcedeth: statistics supported (commit)
*

natsemi: Support Aculab E1/T1 PMXc cPCI carrier cards (commit)
*

phylib: Add support for Marvell 88e1111S and 88e1145 (commit)
*

Remove the broken SKMC driver (commit)
*

Remove the broken OAKNET driver (commit)

SATA/IDE/SCSI

*

IDE: ACPI support for IDE devices (commit)
* SATA
o

Update libata core layer to use devres (commit), (commit)
o

Add PIIX3 support to ata_piix (commit)
o

Support PCI MSI in sata_vsc (commit)
o

sata_promise: ATAPI support (commit), add TX2plus PATA support (commit)
o

sata_sis: support SiS966/966L (commit), add support for PATA (commit)
o

sata_via: PATA support (commit)
o

sata_nv: add suspend/resume support (commit)
o

pata_cs5520: add suspend/resume support (commit)
o

libata: implement HDIO_GET_IDENTITY (aka hdparm -i) (commit)
o

ACPI _SDD (commit) and _GTF support (commit)
* SCSI
o

qla3xxx: Add support for Qlogic 4032 chip. (commit)
o

fusion: greater than 255 target and lun support (commit), inactive raid support (commit)
o

lpfc: add PCI error recovery support (commit)
o

wd33c93: Support fast SCSI with WD33C93B (commit)
o

qla2xxx: Add MSI-X support. (commit)
o

libsas: Add a sysfs knob to enable/disable a phy (commit)
o

aic94xx: Add support for scanning SAS devices asynchronously (commit)

Graphics

*

Add display output class (commit), (commit)
*

Remove broken video drivers that had already been marked as BROKEN in 2.6.0 three years ago and are still marked as BROKEN: FB_CYBER, FB_VIRGE, FB_RETINAZ3 and FB_SUN3 (commit)
*

remove the broken FB_S3TRIO driver (commit)
*

tgafb: support the DirectColor visual (commit)

ALSA

*

HDA: Add support for Fujitsu PI1556 Realtek ALC880 (commit), add sigmatel 9205 eapd support (commit), add asus-laptop model for ALC861 (ALC660) (commit), add support for Evesham Voyager C530RD laptops (commit), add asus model to ALC861 codec (commit), add support for Sigmatel STAC9202/9250/9251 codecs (commit), add toshiba model to ALC861 codec (commit), add support for Toshiba M105 to Realtek patch (commit), add support for Clevo M540JE, M550JE laptops (Nvidia MCP51 chipset, ALC883 codec) (commit), add support for Medion laptops (commit), add support for VIA VT1708(A) HD audio codec (commit), add new modesl for Realtek codecs (commit), add HP BPC-D7000 support (commit), add support for Sony UX-90s (commit), add model for ASUS W3j laptop (commit), add ALC861VD/ALC660VD support (commit), add support for Samsung Q1 Ultra (commit)
*

emu10k1: Add Audio capture support for Audigy 2 ZS Notebook (commit), add support for 14dB Attenuation PADS on DACs and ADCs. (commit), added support for emu1010, including E-Mu 1212m and E-Mu 1820m (commit), add emu1010 internal clock rate control for 44100 or 48000. (commit)
*

hdsp: support for mixer matrix of RME9632 rev 152 (commit)
*

hdspm: Add support for AES32 (commit)
*

Add snd-portman2x4 driver for Midiman Portman 2x4 MIDI device (commit)
*

ice1724: Add support of M-Audio Audiophile 192 (commit) and add support for Prodigy 7.1 XT (commit)
*

Enable capture from line-in and CD on Revolution 5.1 (commit)
*

Add Conexant audio support to the HD Audio driver (commit)
*

usbaudio: Add support for Edirol UA-101 (commit), allow pausing (commit), add PCR-A PCM support (commit)
*

ac97: Suppress power-saving mode on non-supporting drivers (commit)
*

Add support of the ESI Waveterminal 192M to the ice1724 ALSA driver (commit)
*

Enable the analog loopback of the Revolution 5.1 (commit)

Input

*

Add force feedback driver for PantherLord USB/PS2 2in1 Adapter (commit)
*

Add support for Logitech Momo racing wheel (commit)
*

Add Atlas button driver (commit)
*

wistron: Add support for Fujitsu-Siemens Amilo D88x0 (commit)
*

gpio-keys: Add keyboard driver for GPIO buttons (commit)
*

HID: Add support for Logitech Formula Force EX (commit), allow force feedback for multi-input devices (commit), quirk for multi-input devices with unneeded output reports (commit), handle multi-interface devices for Apple macbook pro properly (commit), add support for using the HID subsystem in bluetooth (commit)
*

Remove scan_keyb driver (commit)

USB

*

usbmon: add a new, "binary" API in addition to the old, text API usbmon had before. The new API allows for less CPU use, and it allows to capture all data from a packet where old API only captured 32 bytes at most (commit)
*

Add dynamic id support to usb-serial core (commit)
*

Add autosuspend support for usb printer driver (commit)
*

Add Sony PS3 ohci/ehci bus support (commit), (commit)
*

Add power management support (commit) and better ethtool support for kaweth (commit)
*

Add EPIC support to the io_edgeport driver (commit)
*

PL2303: Willcom WS002IN Support. (commit)
*

Implement support for "split" endian OHCI (commit) and EHCI with big endian MMIO (commit)
*

EHCI: force high-speed devices to run at full speed (commit)
*

Add "activesync" support for rndis_host (commit)
*

ASIX: Add IO-DATA ETG-US2 Support. (commit)
*

Remove CONFIG_USB_BANDWITH - "Enforce USB bandwidth allocation", since it's no longer neccesary (commit)

V4L

*

Bttv cropping support (commit)
*

Adds video output routing (commit)
*

Pvrusb2: Enable radio mode for 24xxx devices (commit), implement multiple minor device number handling (commit), implement /dev/radioX (commit), allow streaming from /dev/radioX (commit)
*

Add support for more Encore TV cards (commit), add a new qt1010 tuner module (commit), (commit), add VIDIOC_G_ENC_INDEX ioctl (commit), SN9C102 driver updates (commit), add support for svideo/composite input of the Terratec Cinergy 1400 DVB-T (commit), add support for the ASUS P7131 remote control (commit), add cablestar2 support (commit), add support for Terratec Cinergy HT PCI (commit), add support for the Technotrend 1500 bundled remote (commit), add support for Ultraview DVB-T Lite (commit), initial support for Sigmatek DVB-110 DVB-T (commit), initial support for MSI Mega Sky 580 based on Uli m9206 (commit), initial support for MSI Mega Sky 580 DVB-T based on GL861 (commit)

Cpufreq

*

Introduce Nehemiah C (commit)
*

Enhanced PowerSaver driver present in VIA C7 processors (commit)
*

Add VT8235 support (commit)
*

Remove "ignore_latency" option (commit)

ACPI

*

Add support for ACPI controlled removable drive bays such as the IBM ultrabay or the Dell Module Bay (commit)
*

Implement simplified Table Manager. It reduces the size of the kernel-resident ACPICA by 5% (commit), (commit), (commit)
*

ACPICA: Removed all 16-bit support (commit)
*

Remove motherboard driver (redundant with PNP system driver) (commit)
*

Remove the generic hotkey driver, as scheduled - the hotkeys are not part of the ACPI specification so they must be handled instead in the platform-specific drivers (commit)
*

Convert ACPI to sysfs framework - removes /sys/firmware/acpi (commit)
*

Add backlight sysfs support for acpi video driver. (commit)
*

sony_acpi: Add backlight support (commit), add backlight support (commit), add SNC device support for Sony Vaios (commit), rename this driver to sony-laptop (commit)
*

sony-laptop: Remove /proc/acpi/sony interface and implement platform_device. (commit)
*

Add asus-laptop driver (commit 1, 2, 3, 4, 5, 6, 7, 8)

I2C

*

Add suspend/resume/shutdown support (commit)
*

i2c-piix4: Add support for the ATI SB600 SMBus controller (commit)
*

i2c-parport: Add support for One For All remote JP1 interface (commit)
*

i2c-viapro: Add support for the VIA CX700 south bridge (commit)

Various

* hwmon:
o

it87: Add PWM base frequency control (commit)
o

Add support for the W83627DHG chip in w83627ehf (commit)
*

APM: Add shared version of APM emulation (commit), (commit), (commit), (commit)
* SPI
o

Freescale iMX SPI controller driver (BIS+) (commit)
o

eeprom driver (commit)
o

controller driver for OMAP Microwire (commit)
o

atmel_spi driver (commit)
* MTD
o

EXcite nand flash driver (commit)
o

S3C2410: Hardware ECC correction code (commit)
o

OneNAND: Add support for auto-placement of out-of-band data (commit)
*

RDMA: Add multicast communication support (commit)
*

IPoIB: Connected mode experimental support (commit)
*

RTC framework driver for CMOS RTCs (commit)
*

RTC gets sysfs wakealarm attribute (commit)
*

mmc: Add support for SDHC cards (commit)
*

tifm_core: add suspend/resume infrastructure for tifm devices (commit)
*

tifm_sd: add suspend and resume functionality (commit)
*

leds: Add IPAQ h1940 LEDs support (commit)
*

backlight: Add Frontpath ProGear HX1050+ driver (commit)
*

drivers: add LCD support (commit)