Linux 2.6.22 Released, 8 July 2007 (full SCM git log)
Contents
Short overview (for news sites, etc)
2.6.22 includes an optional, more SMP-friendly SLUB allocator (http://lwn.net/Articles/229984), new and much better wireless and firewire stacks, a new architecture called Blackfin, a LVM-for-flash-storage-devices called UBI, event notifications through file descriptors (http://lwn.net/Articles/225714), the POSIX-draft utimensat() syscall, the 'TCP Illinois' and 'YeAH-TCP' congestion control algorithms, IPV6 Optimistic Duplicate Address Detection, AF_RXRPC socket support, relocatable x86-64 kernel support, improvements to the CFQ I/O scheduler, more process footprint information in /proc, various new drivers and many other improvements.
Important things (AKA: ''the cool stuff'')
New Slab allocator: SLUB
(Recommended article: "The SLUB allocator")
The slab allocator is a object-caching kernel memory allocator used for dealing with "objects that are frequently allocated and freed" (see the "slab allocator" paper from Jeff Bonwick). It is a critical piece of the innards of the memory management subsystem, and a critical piece to get good performance. The Linux slab allocator works quite well for pretty much everybody; however some people (SGI) has found its current design inefficient in some cases. For example, in 1K nodes/processors configurations, several GB of memory are wasted only in object queues, not counting the objects themselves. The memory management quickly becomes too complex when adding features like proper NUMA policy support.
As result, a new slab allocator called "SLUB" has been developed by Christoph Lameter from SGI, to solve those and other problems. Its design is simpler, but it also addresses some problems that can result in better performance in some cases and more efficient memory usage (see the full design notes in this commit link). It also has better debug capabilities. There's a slabinfo userspace tool that you can find in Documentation/vm/slabinfo.c.
Its aim is to transparently replace slab, but in 2.6.22 this new slab allocator is optional and not enabled by default. You can enable it at compile time (making it the third option along with SLOB, the embedded-oriented slab allocator). SLUB has been tested for some time and it's solid enough to try it on your systems, but due to the importance of this part of the kernel, it won't completely replace the current slab allocator until more exposure and testing has been done, hence it's not recommended to use it in production systems. Testing reports, specially regressions, are greatly appreciated.
User documentation can be found here
Code: mm/slub.c;
New Wireless stack
For too many years, Linux wireless support has worked, but not very well. 2.6.22 has a completely new, better wireless stack included. This new wireless stack has been donated by the known WiFi specialist company Devicescape (many thanks to Devicescape for their contribution and support to open source!). This wireless stack has many features, like a complete software MAC implementation, WEP, WPA, a "link-layer" bridging module, hostapd, QoS support to prioritize things like VoIP, 802.11g support, and full debug capabilities. All of this comes in a single implementation that drivers can use without rewriting those features themselves, which sadly has been done multiple times in the linux WiFi world.
Another feature of this stack is a completely new user interface. The old stacks have an ugly ioctl-based interface which were standardized under the name of "wireless extensions" (wext). The new interface uses a netlink-based interface, suited for the needs of desktop-based configuration interfaces, but retaining at the same time userspace compatibility with the old interface.
The disadvantage is the lack of drivers using this stack: the drivers that have been in the tree for a long time do not support this stack, and will need to be ported (which will hopefully not be that hard, since the new stack is actually a much better ground to build drivers upon that the current mess). There are quite a lot of new and ported drivers that are already using the new stack which have not been merged in this release, but will get merged in future releases, like the RT2x00 drivers, the bcm43xx driver, zd1211rw, adm8211, rtl818x, Intel iwlwifi (ipw3945 and ipw4965). Distributions like Ubuntu and Fedora already are using them.
In any case, this is the building block that will bring better wireless support to Linux.
Code: (commit 1, 2, 3, 4, 5, 6, 7)
New FireWire stack
The FireWire stack is also getting a rewrite, with the old stack being kept around for the time being. The main driver behind this work, according the author, is "to get a small, maintainable and supportable FireWire stack, with an acceptable backwards compatibility story".
This stack has many advantages: Considerably leaner codebase (less than 8k lines of code compared to 30k lines of code in the old stack, and a similar size reduction in the sizes of the binary files), cleaned-up and improved in-stack APIs (with the side effect of getting rid of a bunch of old bugs) and design (no kernel threads, compared to one subsystem thread and one thread per FireWire controller in the old stack), consolidation of the currently four userspace ABIs into one improved ABI, the userspace ABI is changed, but compatibility is kept stable at library level (libraw1394 and libdc1394), and per-device device files, letting userspace set up finer-grained access control, such as preventing direct access to FireWire storage devices.
Still missing features relative to the old stack are: eth1394 (IP over 1394) not ported over, and no support for the PCILynx chipset (less important because that chip is very rare), isochronous support at the moment only for OHCI-1.1 chips, not on OHCI-1.0 chips. Plus the disadvantage of any new piece of code: despite being tested in Fedora rawhide etc, it can contain many bugs.
Linux1394.org's Release Notes: posting, wiki
Signal/timer events notifications through file descriptors
(Recommended article: "Kernel events without kevents")
Linux currently lacks a proper way to get complete event reporting like other systems do. poll/epoll isn't a solution for everything, because it only works in file descriptors so things like timer and signal notifications aren't covered by it, so to get fe. signal notifications in the main event loop people has needed to use (clever) hacks, like writing a byte between two internal pipes.
After considering the inclusion of an implementation of a FreeBSD/OSX-like generic event notification mechanism, a simpler, more Unixy solution (inspired by Linus some years ago) has been adopted.
Three new syscalls have been added: signalfd()/timerfd()/eventfd(). What those syscalls do is to implement event delivery into file descriptors. You can use the standard read(), select(), poll(), epoll() on those fds. They've the following differences
- The signalfd() system call implements signal delivery into a file descriptor. That fd supports the standard calls poll(), read(), select(), epoll() etc. This allows a program to receive signals via that file descriptor, which are more flexible.
- The timerfd() system call implements timers event delivery into file descriptors. As with signalfd(), you can use standard calls poll(), epoll(), select(), read()...
- The eventfd() system call is a very simple and light file descriptor that can be used as event wait/dispatch by userspace (both wait and dispatch) and by the kernel (dispatch only). It can be used instead of pipe(2) in all cases where those would simply be used to signal events. As the two previous syscalls, you can use the standard calls with the returned fd.
Code: Anonymous inode source (commit), (commit) ; signalfd: (commit), (commit), (commit); timerfd: (commit), (commit), (commit); eventfd: (commit), (commit), (commit)
Blackfin architecture
2.6.22 adds support for yet another architecture: The Analog Devices Blackfin processor architecture, and currently supports the BF533, BF532, BF531, BF537, BF536, BF534, and BF561 (Dual Core) devices, with a variety of development platforms including those available from Analog Devices (BF533-EZKit, BF533-STAMP, BF537-STAMP, BF561-EZKIT) and Bluetechnix! Tinyboards.
The Blackfin architecture was jointly developed by Intel and Analog Devices Inc. (ADI) as the Micro Signal Architecture (MSA) core and introduced it in December of 2000. Since then ADI has put this core into its Blackfin processor family of devices. The Blackfin core has the advantages of a clean, orthogonal, RISC-like microprocessor instruction set. It combines a dual-MAC (Multiply/Accumulate), state-of-the-art signal processing engine and single-instruction, multiple-data (SIMD) multimedia capabilities into a single instruction set architecture.
The Blackfin architecture, including the instruction set, is described by the ADSP-BF53x/BF56x Blackfin Processor Programming Reference. The Blackfin processor is already supported by major releases of gcc, and there are binary and source rpms/tarballs available for many architectures. There is complete documentation, including "getting started" guides, which provides links to the sources and patches you will need in order to set up a cross-compiling environment for bfin-linux-uclib. All the code is actively supported by Analog Devices Inc, at: http://blackfin.uclinux.org
Code: (commit 1, 2, 3, 4, 5, 6)
UBI
The shortest description for UBI is "LVM for NAND flash memory devices". Why duplicate LVM? Well, because flash devices can't really be handled as typical hard disks. UBI provides wear-levelling support across the whole flash chip. UBI completely hides 2 aspects of flash chips which make them very difficult to work with: 1. wear of eraseblocks; 2. bad eraseblocks. UBI also makes it possible to dynamically create, delete and re-size flash partitions (UBI volumes).
Home page: http://www.linux-mtd.infradead.org/doc/ubi.html
Secure RxRPC sockets
The RxRPC protocol driver included in 2.6.22 provides a reliable two-phase transport on top of UDP that can be used to perform RxRPC remote operations. This is done over sockets of AF_RXRPC family, using sendmsg() and recvmsg() with control data to send and receive data, aborts and errors. The AFS filesystem has been ported to use AF_RXRPC instead of the old RxRPC code.
Process footprint measurement facility
2.6.22 adds a "Referenced" line to each VMA in /proc/pid/smaps, which indicates how many pages within it are currently marked as referenced or accessed. There's also a new /proc/pid/clear_refs file. When any non-zero number is written to this clear_refs file, the Reference fiel is cleared-
With those mechanism it is now possible to measure approximately how much memory a task is using by clearing the reference bits with "echo 1 > /proc/pid/clear_refs" and checking the reference count for each VMA from the /proc/pid/smaps output at a measured time interval (fe. 1 second). This is a valuable tool to get an approximate measurement of the memory footprint for a task.
utimensat()
The next revision of POSIX will support fine-grained filesystem timestamps. struct stat will report nanosecond values. During the development one additional problem was found: there is no interface to set the file timestamp with that precision. utimes only takes a timeval structure which allows only micro-second resolution. This is why the utimensat() interface was created. It is basically the same as futimesat() interface but it takes a timespec structure.
Code: (commit)
New drivers
Add ivtv driver for Conexant cx23416/cx23415 MPEG encoder/decoder. It took three core maintainers, over four years of work, eight new i2c modules, eleven new V4L2 ioctls, three new DVB video ioctls, a Sliced VBI API, a new MPEG encoder API, an enhanced DVB video MPEG decoding API, major YUV/OSD contributions from Ian and John, web/wiki/svn/trac support from Axel Thimm, (hardware) support from Hauppauge, support and assistance from the v4l-dvb people and the many, many users of ivtv to finally make it possible to merge this driver into the kernel (commit)
Add driver for the Maxim DS1WM, a 1-wire bus master ASIC core (commit)
Add au1550 SPI controller driver (commit)
Add sensable phantom driver (commit)
Add RTC class driver for the Maxim MAX6900 (commit) and for the rtc-rs5c313 driver (commit)
Add MPC52xx PSC SPI master driver (commit)
Add serial drive for RM9000 (commit) and for PMC MSP71xx (commit)
Add user mode SPI device driver (commit)
- Graphics
pm3fb: Preliminary 2.4 to 2.6 port (commit)
New framebuffer driver (vt8623fb) for VIA VT8623 (commit)
Hecuba framebuffer driver (commit)
arkfb: new framebuffer driver for ARK Logic cards (commit)
atmel_lcdfb: AT91/AT32 LCD Controller framebuffer driver (commit)
Add Sun XVR-500 framebuffer driver. (commit) and Sun XVR-2500 framebuffer driver. (commit)
- Hwmon:
New Apple SMC driver (hardware monitoring and control) which provides support for the Apple System Management Controller, which provides an accelerometer (Apple Sudden Motion Sensor), light sensors, temperature sensors, keyboard backlight control and fan control. Only Intel-based Apple's computers are supported (MacBook Pro, MacBook, MacMini) (commit)
New coretemp driver for the digital temperature sensor found in recent Intel Core CPUs (commit)
New max6650 driver for the Maxim MAX6650 and MAX6651 fan speed monitoring and control chips (commit)
hwmon-vid: Add support for VIA Esther (commit)
New driver for the Analog Devices AD7416, AD7417 and AD7418 chips (commit)
Add keyboard blink driver (commit)
MTX-1 Watchdog driver (commit)
- Network:
Add a driver Mellanox ConnectX InfiniBand adapters (commit)
Add Marvell Libertas 8388 802.11b/g USB driver (commit)
Add zr364xx V4L2 driver for USB webcams based on the zr364xx chipsets (commit)
- pasemi
Various core changes
Futex priority based wakeup. Today, all threads waiting for a given futex are woken in FIFO order (first waiter woken first) instead of priority order. This changes makes use of plist (priority ordered lists) instead (commit)
PRIVATE futexes (commit)
Replace pgd management via slabs through 'quicklists'. Quicklists cut allocation overhead for page table pages down to a fraction in platforms like x86_64 (commit), (commit), (commit), (commit), (commit), (commit)
Change default dirty-writeback limits. This means the kernel will write "dirty" caches differently. If you notice your system behaves poorly, please report it, but before that change the limits (via /proc/sys/vm) to check if this change is the cause. dirty_background_ratio defaulted to 10, now defaults to 5. vm_dirty_ratio defaulted to 40, now it's 10 (commit)
Many improvements to the CFQ I/O scheduler: Implement logic for detecting cooperating processes (commit), (commit). Rework the queue handling, inspired from Ingo's CFS process scheduler: currently CFQ uses a doubly linked list per priority level for sorting and service uses, those lists are killed and now an rbtree of cfq_queue's is maintained, sorted by when to service them (commit), (commit), (commit), (commit)
Make multithreaded probing work per subsystem instead of per driver (commit), (commit)
Notify userspace of network device renames (commit)
Overdue removal of the mount/umount uevents (commit)
Add support for the Motorola sysv68 disk partition (slices in motorola doc) (commit)
Add support for finding out the current file position, open flags and possibly other info in the future. These new entries are added: /proc/PID/fdinfo/FD/* and /proc/PID/task/TID/fdinfo/FD/* (commit)
Add support for deferrable timers (commit) and
Make vm statistics update interval configurable (commit)
Add a new deferrable delayed work init (commit)
Remove artificial maximum 256 loop device that can be created due to a legacy device number limit (commit)
Kprobes: provides a debugfs knob to turn kprobes on/off (commit)
CRC ITU-T V.41 (commit)
vt: allow for the palette to be exposed and changed via sysfs (commit), add color support to the "underline" and "italic" attributes as in OpenBSD/NetBSD-style (vt220) and xterm (commit)
Architecture-specific changes
- x86-32
Add an option for the VIA C7 which sets appropriate L1 cache (commit)
Make COMPAT_VDSO runtime selectable. (commit)
Support Oprofile for AMD Family 10 CPUs (commit)
Allow boot parameter "noreplace-smp" for disable of SMP altinstructions (commit)
Implement alternative_io for i386 (commit)
x86: add command line length to boot protocol (commit)
Voyager: add SMP alternatives (commit)
- x86-64
- PPC
Powermac: Support G5 CPU hotplug (commit), suspend to disk on G5 (commit)
Introduce address space "slices" (commit)
Spufs support for 64K LS mappings on 4K kernels (commit)
PowerPC MSI infrastructure (commit), (commit), (commit), (commit), (commit), (commit)
Early serial debug support for PPC44x (commit)
Handle recursive oopses (commit)
64K page support for kexec (commit)
Use generic apm-emulation (commit)
EDAC ECC software scrubber (commit)
Add powerpc PCI-E reset support (commit)
Create Marvell mv64x60 MPSC (serial) platform_data (commit), create Marvell mv64x60 ethernet platform_data (commit), add interrupt support for Marvell mv64x60 chips (commit), add Marvell mv64x60 PCI bridge support (commit), create Marvell mv64x60 I2C platform_data (commit)
Add arch/powerpc support for the Motorola PrPMC2800 (commit), (commit), (commit)
Support for the Ebony 440GP reference board in arch/powerpc (commit), (commit)
Add bootwrapper support for Marvell/mv64x60 I2C (commit), (commit), Holly bootwrapper (commit), add bootwrapper support for Marvell/mv64x60 hostbridge (commit)
Add uartlite boot console driver for the zImage wrapper (commit)
Remove the unused HTDMSOUND driver (commit)
ibmebus: dynamic addition/removal of adapters (commit)
86xx: Added 2nd PCI-Ex controller support for MPC8641 HPCN to DTS (commit),
83xx: Add MPC832x RDB board support. (commit)
85xx: Add initial MPC8544 DS platform files. (commit)
Add arch/powerpc driver for UIC, PPC4xx interrupt controller (commit)
PS3: Add DABR support (commit), CBE thermal support on (commit)
- ARM
Add ARM V7 support (commit), (commit), (commit), (commit), (commit)
Add support for Atmel AT91SAM9RL processors. (commit), (commit)
Support for Micrel/Kendin KS8695 processor (commit)
Add Intel KIXRP435 Reference Platform based on IXP43x processor (commit)
Support for dynticks and hence the new clocksource/event infrastructure (commit), (commit), (commit), (commit), (commit), (commit)
Add stacktrace support and make oprofile use it (commit)
Add ability to dump exception stacks to kernel backtraces (commit)
Add GPIO debug support. /sys/kernel/debug/omap_gpio dumps the state of all GPIOs that have been claimed, including basic IRQ info if relevant (commit)
Add new boards: picotux 200 ARM (commit), KS8695 Micrel Development board (commit), (commit); mach type cc9p9360js (commit), DSM-G600 (commit)
iop13xx: msi support (commit)
H1940: Add bluetooth support (commit)
Add support for ICSIDE interface on RiscPC (commit)
AT91: Support ADS7846 touchsceen on boards SAM9263-EK (commit) and SAM9261-EK (commit);
- MIPS
- SH
Clockevent/clocksource/hrtimers/nohz TMU (SH-3 and SH-4) support. (commit)
Kdump support. (commit)
Bring kgdb back from the dead. (commit)
Generic BUG() support. (commit)
Support for: solution engine boards 7722 (commit) and SH7780 (commit), (commit); MS7712SE01 board (commit), SH7785 Highlander board (R7785RP). (commit), L-BOX RE2 (commit), se7780 PCI (commit). SH7722 clock framework support. (commit)
- SPARC64:
- S390
Improved oops output. (commit)
Improved kernel stack overflow checking. (commit)
Generic BUG(). (commit)
Add hardware capability support (ELF_HWCAP). (commit)
Processor degradation notification through uevents. This can happen e.g. because the cpus are overheating. The cpu capability can be read via /sys/devices/system/cpu/cpuN/capability (commit)
zfcpdump support. (commit)
- M68K
- UML
- H8300
- AVR32
IA64: Add the Itanium Machine Check (MC) Error Injection Tool . The IPF Machine Check (MC) error inject tool is used to inject MC errors from Linux and is a test bed for IPF MC work flow including hardware correctable error handling, OS recoverable error handling, MC event logging, etc. Documentation here. Code: Commit 1, 2, 3, 4, 5
SuperH: smc91x support (commit)
Various subsystems
Filesystems
- GFS2
- OCFS2:
- CIFS:
- AFS
Implement basic file write support, including write, truncate, fsync, fdatasync, chmod, chown, chgrp, utime. Shared-writable mappings are not supported right now (commit)
Clean up the AFS sources (commit)
Handle multiple mounts of an AFS superblock correctly. (commit)
Add "directory write" support. Add support for the create, link, symlink, unlink, mkdir, rmdir and rename VFS operations to the in-kernel AFS filesystem (commit)
Add support for the CB.GetCapabilities operation. (commit)
Implement the CB.InitCallBackState3 operation. (commit)
implement statfs (commit)
Add security support. Kerberos IV tickets are added as RxRPC keys are added to the session keyring with the klog program. open() and other VFS operations then find this ticket with request_key() and either use it immediately (eg: mkdir, unlink) or attach it to a file descriptor (open) (commit)
Update the AFS fs documentation. (commit)
NFS: Introduce rpcbind: replacement for in-kernel portmapper (commit), (commit), (commit), (commit), (commit)
JFFS2: Improve read_inode memory usage (commit)
UDF: Support files larger than 1G (commit)
FAT: It seems that the recent Windows changed specification, and it's undocumented. Windows doesn't update ->free_clusters correctly. This patch doesn't use ->free_clusters by default. (instead, add "usefree" for forcing to use it) (commit)
Networking
TCP Illinois congestion control. This is an implementation of TCP Illinois invented by Shao Liu at University of Illinois. It is a another variant of Reno which adapts the alpha and beta parameters based on RTT. The basic idea is to increase window less rapidly as delay approaches the maximum. See the papers and talks to get a more complete description (commit), (commit)
YeAH-TCP congestion control algorithm implementation. YeAH-TCP is a sender-side high-speed enabled TCP congestion control algorithm, which uses a mixed loss/delay approach to compute the congestion window. It's design goals target high efficiency, internal, RTT and Reno fairness, resilience to link loss while keeping network elements load as low as possible. For further details look here: http://wil.cs.caltech.edu/pfldnet2007/paper/YeAH_TCP.pdf (commit)
TCP cubic update for 2.6.22. The new version improves on its scalability, fairness and stability. So in all properties, we confirmed it shows better performance (commit)
Add RFC3742 Limited Slow-Start, controlled by variable sysctl_tcp_max_ssthresh (commit)
Add support to IPv4 over IPv6 tunnel (commit)
Replace compile-time debug option CONFIG_NET_DEBUG with a runtime switchable sysctl, /proc/sys/net/core/warnings (commit)
Implement the SACK-enhanced FRTO given in RFC4138 using the variant given in Appendix B (commit), (commit)
Add two new spurious RTO responses to FRTO, sysctl tcp_frto_response is added to select amongst these responses (commit)
SNMP: Support InTruncatedPkts (commit), OutMcastPkts and OutBcastPkts (commit), add definitions for {In,Out}BcastPkts, specified in the updated IP-MIB RFC (RFC4293) (commit), support InNoRoutes (commit), support InMcastPkts and InBcastPkts (commit)
CCID3: Handle Idle and Application-Limited periods as specified in [RFC 4342, 5.1] (commit)
Use ktime as clocksource, which provides nanosecond timestamping support (commit), introduce SIOCGSTAMPNS ioctl to get timestamps with nanosec resolution (commit), add SO_TIMESTAMPNS / SCM_TIMESTAMPNS socket option (commit), export real timer resolution in /proc/net/psched (commit)
SCTP: Implement SCTP_PARTIAL_DELIVERY_POINT socket option (commit), implement SCTP_MAX_BURST socket option (commit), implement SCTP_ADDR_CONFIRMED state for ADDR_CHNAGE event (commit), implement sac_info field in SCTP_ASSOC_CHANGE notification (commit), implement SCTP_FRAGMENT_INTERLEAVE socket option, introduced in draft-ietf-tsvwg-sctpsocket-13, (commit), honor flags when setting peer address parameters (commit)
IPV6: Optimistic Duplicate Address Detection (RFC 4429) Support. (commit)
- NETFILTER
ebt_arp: add gratuitous arp filtering, it allows checking that the IPv4 source address matches the IPv4 destination address inside the ARP header (commit)
bridge-nf: filter bridged IPv4/IPv6 encapsulated in pppoe traffic (commit)
rfkill: add support for input key to control wireless radio (commit)
DM
New device-mapper target that can delay I/O (for testing). Reads can be separated from writes, redirected to different underlying devices and delayed by differing amounts of time (commit)
log: fault detection (commit)
Allow offline devices (commit)
SELinux
Export initial SID contexts via selinuxfs (commit)
Extract the NetLabel SELinux support from the security server (commit)
Audit
Add SIGNAL syscall class (commit)
Audit signal recipients (commit)
Abnormal End of Processes (commit)
Audit inode for all xattr syscalls (commit)
Complete message queue auditing (commit)
* auditing ptrace (commit)
Crypto
Add cryptd, a software async crypto daemon (commit)
KVM
Power Management
Drivers
Network drivers
zd1211rw: Add ID for ZyXEL AG-220 (commit), add AL7230B RF support for ZD1211B (commit), add AL2230S RF support (commit), add another ID for Linksys WUSBF54G (commit), added new USB id for Planex GW-US54ZGL (commit), add ID for ZyXEL AG-225H v2 (commit), add ID for Sitecom WL-117 (commit), more device IDs (commit)
tc35815 driver rework. Current tc35815 driver is very obsolete and less maintained for a long time, and has been replaced it with a new driver based on one from CELF patch archive. The advantages of this version are: improved performance, NAPI, ethtool and netpoll support, power management support, 64-bit proof, TX4938 support, independence from JMR3927 (commit)
BNX2: Update 5708 firmware (commit), and 5709 firmware (commit), add ipv6 TSO and checksum for 5709 (commit), add support for 5709 Serdes. (commit)
Infiniband: Convert the IP-over-InfiniBand network device driver over to using NAPI (commit), add CQ comp_vector support (commit)
Netxen: Port swap feature for multi port cards (commit), multi PCI support for Quad cards (commit)
ucc_geth: migrate ucc_geth to phylib (commit), implement Transmit on Demand support (commit)
ehea: NAPI multi queue TX/RX path for SMP (commit), dynamic add / remove port (commit)
dmfe: add support for Wake on lan (commit), add support for suspend/resume (commit)
hostap_cs: support ADLINK 345 CF (commit), add D-Link DWL-650 Rev. P1 product id (commit)
qla3xxx: Adding support for the Agere PHY (ET1011C) (commit), add ethtool get_pauseparam for improved bonding support. (commit)
Add NAPI support to sb1250-mac.c (commit)
Support for Marvell 7042 Chip (commit)
ipw2200: add 'channels' sysfs entry (commit)
sgiseeq: Add support for Seeq 8003 on Challenge S Mezz board. (commit)
Netpoll support for Sibyte MAC (commit)
S2IO: getringparam ethtool option (commit)
Add support for the Davicom DM9161A PHY (commit)
atl1: add netconsole support (commit)
pasemi_mac: PHY support (commit)
AT91RM9200 Ethernet: Support additional PHYs (commit)
SATA/IDE/SCSI
- SATA
HPA support (commit)
pata_hpt3x2n: Add HPT371N support (commit)
pata_cmd640: CMD640 PCI support (commit)
sata_mv: clean up DMA boundary issues, turn on 64-bit DMA (commit)
pata_pcmcia: recognize 2GB CompactFlash from Transcend (commit)
Add the ATI SB700 SATA controller device id to AHCI pci table (commit)
Add MCP73/MCP77 support to AHCI driver (commit)
- SCSI
sd: implement START/STOP management (commit)
lpfc: Add support for async scanning (commit), added support for 8G speed and new HBAs (commit)
ipr: Enable multi-initator RAID support (commit)
Add SG_IO ioctl to cciss (commit)
qla2xxx: Add MSI support. (commit)
SUNESP: Complete driver rewrite to version 2.0, with tagged queuing support (commit)
- IDE
Make /proc/ide/ optional (commit)
pdc202xx_new: enable DMA for all ATAPI devices (commit)
ide-cs: recognize 2GB CompactFlash from Transcend (commit)
cmd64x: fix multiword and remove single-word DMA support (commit)
sl82c105: DMA support code cleanup (commit), rework PIO support (commit)
Add the IDE device ID for ATI SB700 (commit)
Add the MCP73/77 support to PATA driver (commit)
Graphics
fbdev: display class (commit)
pm2fb: 3dlabs Permedia 2V reference board support (commit)
fbdev: add support for AVR32 (commit), advertise limitations of drawing engine (commit), (commit)
Geforce 7300 gt fb support (commit)
radeonfb: Add support for Radeon xpress 200m (commit)
tgafb: TURBOchannel support (commit), acceleration code (commit)
pm2fb: accelerated fillrect and copyarea (commit)
intel_agp: Add support for 965GME/GLE (commit), 945GME (commit) and G3x (commit)
i915: Add new pciids for 945GME, 965GME/GLE (commit)
Add support SiS based XGI chips to SiS DRM (commit)
Sound
ice1724 - Functioning support for Prodigy 192 (commit)
ASoC Samsung S3c24xx build (commit)
hda-codec: Add support of 96kHz back (commit), add ALC662 support (commit), add ALC861VD Lenovo support (commit), add support for Gigabyte S-Series GA-M57SLI-S4 motherboard (commit), allow opening SPDIF while analog dup mode (commit), add support for Asus A8JN Laptop (commit), add support for new HP DV series laptops (commit), add ATI RS780,R600 HDMI audio support (commit), add support for MSI K9N Ultra (commit), add support for ASUS A8J modem (commit), add support for Gateway NX860 (commit)
hdspm: support for Master mode of AES32 and recent MADI (commit)
ASoC Samsung S3c24xx audio DMA (commit) and I2S support (commit)
ASoC WM8753 codec - build changes (commit)
ASoC AT91xxxx - SSC port DSP support (commit)
ASoC WM8753 codec support (commit)
ac97 - Smart 5.1 for VIA 1617a codec (commit)
usb-audio: another Logitech Quickcam ID (commit)
Add Native Instrument usb audio device support (commit)
The scheduled removal of OBSOLETE_OSS options (commit)
Input
i8042: add Fujitsu touchscreen/touchpad PNP IDs (commit), add Panasonic CF-29 to nomux list (commit), add HP Pavilion DV4017EA to the MUX blacklist (commit)
psmouse: Add support for eGalax PS/2 touchscreen controller (commit), allow disabling certain protocol extensions (commit)
Lifebook - add signature of Panasonic CF-29 (commit), work properly on Panasonic CF-18 (commit)
Add driver for MIPS Cobalt back panel buttons (commit)
Wistron: Add support for Travelmate 610 (commit), add acerhk laptop database (commit)
Add logical channel support for ATI Remote Wonder II (commit)
Remove old USB touchscreen drivers: itmtoch, mtouchusb and touchkitusb. They have been replaced with composite usbtouchscreen driver some time ago and can be removed now (commit)
MTD
Driver support for NAND flash devices on CM-x270 modules (commit)
Support for generic platform NAND driver (commit)
Remove MTD_OBSOLETE_CHIPS (jedec, amd_flash, sharp) (commit)
MTD Driver for AT26Fxxx dataflash devices (commit)
NAND: Add Micron Manufacturer ID (commit)
Nandsim: Add partition capability (commit), allow arbitrary NAND size (commit), optionally report wear information (commit), simulate flash errors (commit)
NOR: Support for auto locking flash on power up (commit)
USB
Usbmon: Extended text API (commit), and add the "bus zero" feature to the usbmon. If a user process specifies bus with number zero, it receives events from all buses (commit)
Remove ancient/broken CRIS hcd (commit)
Add power/level sysfs attribute. The new power/level sysfs attribute allows users to force the device on (with autosuspend off), force the device to sleep (with autoresume off), or return to normal automatic operation (commit)
Add "busnum" attribute for USB devices (commit)
Add the detection for the Bandrich Bandluxe C100/C100S/C120 HSDPA Data Card (commit)
cxacru: ADSL state management (commit)
Add picdem device to ldusb (commit)
ftdi_sio: Add USB ID of ADSTech USBX-707 (commit)
CP2101: new Device IDs (commit)
Make usbdevices export their device nodes instead of using a separate class (commit)
Add Freescale high-speed USB SOC device controller driver (commit)
Add FF support for Logitech Force 3D Pro Joystick (commit)
Thrustmaster firestorm dual power v1 support (commit)
Add support for Wisegroup MP-8800 Quad Joypad (commit)
Add support for Olimex arm-usb-ocd JTAG interface serial port (commit)
Add support for Sierra Wireless Aircard 595U (commit)
V4L/DVB
Add support for video output overlays. (commit)
M920x: Initial support for devices likely manufactured by Dposh (commit)
Add support for the "Elitegroup ECS TVP3XP FM1246", the "KWorld DVB-T 210", and the Animation Technologies LR214 Rev F onwards (SAA7131) to the saa7134 driver (commit)
Add support for VIDIOC_INT_G/S_STD_OUTPUT (commit)
- Added VIDIOC_INT_G_STD_OUTPUT and VIDIOC_INT_S_STD_OUTPUT to allow drivers to set the TV standard for video output separately from the video capture. This is needed for cx23415 support where the decoder is separate from the encoder and can have a different TV standard. Modified the saa7127 module to listen to VIDIOC_INT_G/S_STD_OUTPUT instead of VIDIOC_G/S_STD.
Additional card support for bttv driver (commit)
Add support for the cx23415 MPEG decoding features. (commit)
Add support for the extra keys in the black Technotrend 1500 IR (commit)
Add support for VIDIOC_G_CHIP_IDENT (commit)
Add tveeprom entry for tuner LG S701D MK3 (commit)
Add raw bayer support to the ov7670 driver (commit)
Added support for tda827x tuners with preamplifiers (commit)
Add support for three new MPEG controls. (commit)
Dvb: Remove lgh06xf driver (commit)
Add radio support for the Lifeview FlyDVB-T Duo (commit)
Add support for remote of Asustech P7131 Hybrid LNA (commit)
Add support for Opera S1- DVB-USB (commit)
Pwc: cisco VT Camera support (commit)
Tda10023: Add support for frontend TDA10023 (commit)
M920x: add support for Anubis Electronics / MSI Digi Vox Mini II (commit)
400e: Add support for Pinnacle PCTV Sat Pro USB (450e) (commit)
Added / corrected support for some ASUS hybrid boards (commit)
Add some missing Hauppauge and Belkin devices to the driver (commit)
Added support for Sabrent TV-PCB05 card. (commit)
I2C
New Simtec I2C bus driver (commit)
New i2c-tiny-usb bus driver (commit)
Bitbanging I2C bus driver using the GPIO API (commit)
i2c-nforce2: Add support for the MCP61 and MCP65 (commit)
ACPI
ibm-acpi: rename driver to thinkpad-acpi (commit)
thinkpad-acpi: driver sysfs conversion (commit), (commit), add sysfs support to the thermal subdriver (commit), add sysfs support to the cmos command subdriver (commit), add sysfs support to wan and bluetooth subdrivers (commit), add sysfs support to hotkey subdriver (commit), update brightness sysfs interface support (commit),
sony-laptop: Replace sonypi (commit), add SNY6001 device handling (sonypi reimplementation) (commit), add edge modem support (also called WWAN) (commit), make meye use sony-laptop instead of sonypi (commit), add camera enable/disable parameter (commit)
asus-laptop: add GPS support (commit)
Watchdog
Add support for the w83627thf chipset. (commit)
The scheduled removal of the i8xx_tco watchdog driver (commit)
Bluetooth
Add HCIUARTGETDEVICE support for HCI line discipline (commit)
Add support for Targus ACB10US USB dongle (commit)
Cpufreq
Support rev H AMD64s in powernow-k8 (commit)
HwMon
hwmon/smsc47m1: Add support for the LPC47M292 (commit)
Various
Add new_id to PCMCIA drivers (commit)
IrDA: KingSun/DonShine USB IrDA dongle support. (commit)
Firewire (old stack): eth1394: allow MTU bigger than 1500 (commit)
tifm: add sysfs attribute for tifm devices (commit)
mmc: Support for MMC 4.2 sector based cards (commit)
smsc-ircc2: add PNP support (commit)
Remove the blink 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 kidnap your family (just because it has never happened it doesn't mean you're safe):
- Ingo Molnar's CFS / Con Kolivas' RSDL process scheduler
- Con's swap prefetching
Utrace (LWN article)
Revoke()/frevoke() system calls (LWN article)
- Mel Gorman's fragmentation avoidance patches and Lumpy reclaim
- Unionfs
EXT 4 patches (wiki)
- Lguest
- Xen for x86-64
- Tickless patchess for x86-65
- Reiser 4