Linux 2.6.32 has been released on December 3rd 2009.
Summary: This version adds virtualization memory de-duplication, a rewrite of the writeback code which provides noticeable performance speedups, many important Btrfs improvements and speedups, ATI R600/R700 3D and KMS support and other graphic improvements, a CFQ low latency mode, tracing improvements including a "perf timechart" tool that tries to be a better bootchart, soft limits in the memory controller, support for the S+Core architecture, support for Intel Moorestown and its new firmware interface, run time power management support, and many other improvements and new drivers.
Contents
-
Prominent features (the cool stuff)
- Per-backing-device based writeback
- Btrfs improvements
- Kernel Samepage Merging (memory deduplication)
- Improvements in the graphic stack
- CFQ low latency mode
- Tracing improvements: perf tracepoints, perf timechart and perf sched
- Soft limits in the memory controller
- Easy local kernel configuration
- Virtualization improvements
- Run-time Power Management
- S+core architecture support
- Intel Moorestown and SFI (Simple Firmware Interface) and ACPI 4.0 support
- NAPI-like approach for block devices
- Various core changes
- Block
- Virtualization
- PCI
- MD/DM
- Filesystems
- Networking
- Security
- Tracing/Profiling
- Crypto
- Architecture-specific changes
- Drivers
1. Prominent features (the cool stuff)
1.1. Per-backing-device based writeback
Slides from Jens Axboe: 'Per backing device writeback'
Recommended LWN article: 'Flushing out pdflush' 'In defense of per-BDI writeback'
"Writeback" in the context of the Linux kernel can be defined as the process of writing "dirty" memory from the page cache to the disk. The amount of data that needs to be written can be huge - hundreds of MB, or even GB, and the work is done by the well know "pdflush" kernel threads when the amount of dirty memory surpasses the limits set in /proc/sys/vm. The current pdflush system has disadvantages, specially in systems with multiple storage devices that need to write large chunks of data to the disk. This design has some deficiencies (described in the links above) that cause poor performance and seekiness in some situations. A new flushing system has been designed by Jens Axboe (Oracle), which focus around the idea of having a dedicated kernel thread to flushing the dirty memory of each storage device. The "pdflush" threads are gone and have been replaced with others named after "flush-MAJOR" (the threads are created when there's flushing work that needs to be done and will dissapear after a while if there's nothing to do).
The new system has much better performance in several workloads: A benchmark with two processes doing streaming writes to a 32 GB file to 5 SATA drives pushed into a LVM stripe set, XFS was 40% faster, and Btrfs 26% faster. A sample ffsb workload that does random writes to files was found to be about 8% faster on a simple SATA drive during the benchmark phase. File layout is much smoother on the vmstat stats. A SSD based writeback test on XFS performs over 20% better as well, with the throughput being very stable around 1GB/sec, where pdflush only manages 750MB/sec and fluctuates wildly while doing so. Random buffered writes to many files behave a lot better as well, as does random mmap'ed writes. A streaming vs random writer benchmark went from a few MB/s to ~120 MB/s. In short, performance improves in many important workloads.
Code: (commit 1, 2, 3, 4, 5, 6, 7)
1.2. Btrfs improvements
Recommended LWN artice: A Btrfs update
-ENOSPC: Btrfs has not had serious -ENOSPC ("no space") handling, the COW oriented design makes handling such situations more difficult than filesystems that just rewrite the blocks. In this release Josef Bacik (Red Hat) has added the neccesary infraestructure to fix that problem. Note: The filesystem may run out of space and still show some free space. That space comes from a data/metadata chunk that can't get filled because there's not space left to create its metadata/data counterpart chunk. This is unrelated to the -ENOSPC handling and will be fixed in the future. Code: (commit)
Proper snapshot and subvolume deletion: In the last btrfs-progs version you have options that allow to delete snapshots and subvolumes without having to use rm. This is much faster because it does the deletion via btree walking. It's also now possible to rename snapshots and subvols. Work done by Yan Zheng (Oracle). Code: (commit 1), 2)
- Performance improvements: Streaming writes on very fast hardware got CPU bound at around 400MB/s, Chris Mason (Oracle) has improved the code so that now it can push over 1GB/s while using the same CPU as XFS (factoring out checksums). There are also improvements for writing large portions of extents, and other workloads. Multidevice setups are also much faster due to the per-BDI writeback changes. fsync() performance has been improved greatly as well (which fixes a severe slowdown while using yum in Fedora 11).
ATA DISCARD (aka TRIM) command support for SSD devices (disabled by default, use -o discard when mounting to enable). Code: (commit) (commit)
1.3. Kernel Samepage Merging (memory deduplication)
Recommended LWN articles: '/dev/ksm: dynamic memory sharing', 'KSM tries again'
Kernel Samepage Merging, aka KSM (also know as Kernel Shared Memory in the past) is a memory de-duplication implementation.
Modern operative systems already use memory sharing extensively, for example forked processes share initially with its parent all the memory, there are shared libraries, etc. Virtualization however can't benefit easily from memory sharing. Even when all the VMs are running the same OS with the same kernel and libraries the host kernel can't know that a lot of those pages are identical and can be shared. KSM allows to share those pages. The KSM kernel daemon, ksmd, periodically scans areas of user memory, looking for pages of identical content which can be replaced by a single write-protected page (which is automatically COW'ed if a process wants to update it). Not all the memory is scanned, the areas to look for candidates for merging are specified by userspace apps using madvise(2): madvise(addr, length, MADV_MERGEABLE).
The result is a dramatic decrease in memory usage in virtualization environments. In a virtualization server, Red Hat found that thanks to KSM, KVM can run as many as 52 Windows XP VMs with 1 GB of RAM each on a server with just 16 GB of RAM. Because KSM works transparently to userspace apps, it can be adopted very easily, and provides huge memory savings for free to current production systems. It was originally developed for use with KVM, but it can be also used with any other virtualization system - or even in non virtualization workloads, for example applications that for some reason have several processes using lots of memory that could be shared.
The KSM daemon is controlled by sysfs files in /sys/kernel/mm/ksm/, documentation can be found in Documentation/vm/ksm.txt.
Code: (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
1.4. Improvements in the graphic stack
The landing of GEM and KMS in past releases is driving a much needed renovation in the Linux graphic stack. This release adds several improvements to the graphic drivers that show the steady progress of this kernel subsystem:
- Radeon driver
r600/r700 3D + KMS support, based in the hardware specs that AMD has published (thanks for the open source support!). 3D Performance is not great and there're still a lot of things to improve, but it works well enought to be used by composited desktops, it may cause problems in games. This driver provides suppor for the fastest graphics cards available with opensource drivers. Only Nvidia is still left with the requirement of a binary driver (hopefully soon to be fixed by the Nouveau driver) (commit)
A command stream checker for rn50/r100/r200 (improves security) (commit)
MSI support (commit)
- Intel driver:
GPU reset on i965. The GPU is reset when the driver detects that the GPU has hanged (commit), (commit)
Framebuffer compression (about 0.5W power savings when idle) (commit) and pre-GM45 (commit)
Add dynamic clock frequency control: When the graphics are idle, the LVDS refresh rate and the GPU clock is reduced, and memory self refresh is enabled to go into a lower power state. All of these things are reenabled between frames when GPU activity is triggered (commit)
Improve behaviour under memory pressure. Now when the system is running out of memory, the driver can free used buffers (commit), (commit), (commit)
- 8xx works again, since the regression with GEM's introduction back in .27
VGA arbitration: For many reasons, there's currently not a proper way to arbitrate concurrent access for multiple independent processes (for example, multiple X servers in a multi-head setup) to the VGA resources of multiple cards. The VGA arbitrer Solves this problem in a generic way. Code: (commit),(commit), (commit)
KMS: Use the video= command line option to control the kms output setup at boot time. It is used to override the autodetection (commit)
1.5. CFQ low latency mode
Recommended LWN commentary from Jens Axboe
In this release, the CFQ IO scheduler (the one used by default) gets a new feature that greatly helps to reduce the impact that a writer can have on the system interactiveness. The end result is that the desktop experience should be less impacted by background IO activity, but it can cause noticeable performance issues, so people who only care about throughput (ie, servers) can try to turn it off echoing 0 to /sys/class/block/<device name>/queue/iosched/low_latency. It's worth mentioning that the 'low_latency' setting defaults to on.
1.6. Tracing improvements: perf tracepoints, perf timechart and perf sched
The perf tool is getting a lot of attention and patches. In the past few months the perfcounters subsystem has grown out its initial role of counting hardware events, and has become (and is becoming) a much broader generic event enumeration, reporting, logging, monitoring, analysis facility, so the tool has been renamed from "Performance Counters" to "Performance Events".
Tracepoints: This release includes support to probe static tracepoints which have been added by maintainers to many kernel subsystems (they can be probed from systemtap as well). It's now possible to analyze workloads easily. When debugfs is mounted, perf list will show a section with all the tracepoints available in the system, so you can do things like "perf record -e i915:i915_gem_request_wait_begin -c 1 -g" to record the stack trace for every Intel GPU stall during a run, or "perf stat -a -e ext4:* --repeat 10 ./somebenchmark" for an average stat of all the ext4 tracepoints during 10 runs of a benchmark. You also probe syscalls, for example you can do 'perf stat -e syscalls:sys_enter_blah', which is a strace-like sort of program, but more powerful in some ways. Read Documentation/trace/tracepoint-analysis.txt for a howto of how to do performance analysis with tracepoints.
Timechart: "perf timechart" is a perf-based tool designed to be a better bootchart. It generates a big SVG file which, unlike bootchart, is zoomable (inkscape is recommended), ie, if you want to know more details about some point of the graph, you can zoom and see the details. See this blog entry from the author of the feature to know more about this tool.
- perf sched: a new perf sched tool has been added to trace/measure scheduler properties.
- New tracepoints: Tracepoints in this release have been added for syscalls, module loading/unloading, skb allocation and consumption, KVM (old KVMTRACE code is removed), the page allocator, timers, hrtimers, itimers, i915 driver, some JBD2 and Ext4 statistics which were missing, and perf support in the SPARC architecture.
Code: rename (commit), perf trace (commit), syscalls (commit 1, 2, 3, 4), module (commit), skb (commit), memory allocator: (commit 1, 2, 3, 4, 5, 6, perf sched (commit 1, 2, 3, 4, 5, 6, 7, 7, 8, 9, 10), perf timechart(commit 1, 2, 3)
1.7. Soft limits in the memory controller
Control groups are a sort of virtual "containers" that are created as directories inside a special virtual filesystem (usually, with tools), and an arbitrary set of processes can be add to that control group and you can configure the control group to have a set of cpu scheduling or memory limits for the processes inside the group.
This release adds soft memory limits - the processes can surpass the soft limit as long as there is no memory contention (and they do no exceed their hard limit), but if the system needs to free memory, it will reclaim it from the groups that exceed their soft limit.
Code: (commit), (commit), (commit), (commit), (commit)
1.8. Easy local kernel configuration
Most people uses the kernel shipped by distros - and that's good. But some people like to compile their own kernels from kernel.org, or maybe they like following the Linux development and want to try it. Configuring your own kernel, however, has become a very difficult and tedious task - there're too many options, and some times userspace software will stop working if you don't enable some key option. You can use a standard distro .config file, but it takes too much time to compile all the options it enables.
To make the process of configuration easier, a new build target has been added: make localmodconfig. It runs "lsmod" to find all the modules loaded on the current running system. It will read all the Makefiles to map which CONFIG enables a module. It will read the Kconfig files to find the dependencies and selects that may be needed to support a CONFIG. Finally, it reads the .config file and removes any module "=m" that is not needed to enable the currently loaded modules. With this tool, you can strip a distro .config of all the unuseful drivers that are not needed in our machine, and it will take much less time to build the kernel. There's an additional "make localyesconfig" target, in case you don't want to use modules and/or initrds.
1.9. Virtualization improvements
This version adds a few notable improvements to the Linux virtualization subsystem, KVM:
ioeventfd is a new and faster IO mechanism for KVM. Instead of the blocking round-trip used today, which can cause a VMX/SVM synchronous "heavy-weight" exit back to userspace, ioeventfd allows host userspace to register PIO/MMIO regions to trigger an eventfd(2) signal -which is asyncrhonous- when written to by a guest, improving performance and latency (commit)
irqfd: KVM provides support for injecting virtual interrupts, but all must be injected to the guest via the KVM infrastructure. irqfd adds a new mechanism to inject a specific interrupt to a guest using a decoupled eventfd mechanism: Any legal signal on the irqfd (using eventfd semantics from either userspace or kernel) will translate into an injected interrupt in the guest at the next available interrupt window (commit)
syscall/sysenter emulation for cross-vendor migration (commit), (commit), (commit)
x2apic support, which improves SMP performance (commit), (commit)
VMX: Support Unrestricted Guest feature (improved real mode support) (commit)
1.10. Run-time Power Management
Recommended LWN article: 'Runtime power management'
This feature enables functionality allowing I/O devices to be put into energy-saving (low power) states at run time (or autosuspended) after a specified period of inactivity and woken up in response to a hardware-generated wake-up event or a driver's request. Hardware support is generally required for this functionality to work and the bus type drivers of the buses the devices are on are responsible for the actual handling of the autosuspend requests and wake-up events.
Code: Introduce core framework for run-time PM of I/O devices (rev. 17) (commit)
1.11. S+core architecture support
This release adds support for a new architecture, S+core. Score instruction set support 16bits, 32bits and 64bits instruction, Score SOCs had been used in game machine and LCD TV.
Code: (commit)
1.12. Intel Moorestown and SFI (Simple Firmware Interface) and ACPI 4.0 support
The Simple Firmware Interface (SFI) is a method for platform firmware to export static tables to the operating system (OS) - something analogous to ACPI, used in the MID devices based on the 2nd generation Intel Atom processor platform, code-named Moorestown.
SFI is used instead of ACPI in those platforms because it's more simple and lightweight. It's not intended to replace ACPI. For more information, see the web site
At the same time, this release adds support for Moorestown, Intel's Low Power Intel Architecture (LPIA) based Moblin Internet Device(MID) platform. Moorestown consists of two chips: Lincroft (CPU core, graphics, and memory controller) and Langwell IOH. Unlike standard x86 PCs, Moorestown does not have many legacy devices nor standard legacy replacement devices/features. e.g. Moorestown does not contain i8259, i8254, HPET, legacy BIOS, most of the io ports.
There're also several patches that implement ACPI 4.0 support - Linux is in fact the first platform to support it.
SFI: (commit 1, 2, 3, 4, 5, 6) Moorestown: (commit), (commit)
1.13. NAPI-like approach for block devices
Recommended LWN article: 'Interrupt mitigation in the block layer'
blk-iopoll is a NAPI like approach for block devices, it reduces the interrupt overhead. In benchmarks, blk-iopoll cut sys time by 40% in some cases.
Code: (commit)
2. Various core changes
- Process scheduler
Disable wakeup balancing (commit)
Feature to disable APERF/MPERF cpu_power (commit)
Implement a gentler fair-sleepers feature (commit)
Improve latencies and throughput (commit)
Introduce SCHED_RESET_ON_FORK scheduling policy flag (commit)
Provide iowait counters (commit)
Turn on SD_BALANCE_NEWIDLE (commit)
- RCU
Remove Classic RCU given that the combination of Tree RCU and the proposed Bloatwatch RCU do everything that Classic RCU can with fewer bugs.(commit)
Merge preemptable-RCU functionality into hierarchical RCU (commit), remove CONFIG_PREEMPT_RCU (commit)
Add CPU-offline processing for single-node configurations (commit)
Create rcutree plugins to handle hotplug CPU for multi-level trees (commit)
vt: add an event interface (commit)
sysfs: Add labeling support for sysfs (commit)
uio: add generic driver for PCI 2.3 devices (commit)
slub: add option to disable higher order debugging slabs (commit)
printk: Enable the use of more than one CON_BOOT (early console) (commit)
procfs: provide stack information for threads (commit)
cgroups: support named cgroups hierarchies (commit)
CPUFREQ: Introduce global, not per core: /sys/devices/system/cpu/cpufreq (commit), ondemand - Use global sysfs dir for tuning settings (commit)
cpuidle: fix the menu governor to boost IO performance (commit)
kconfig: add make localyesconfig option (commit)
kconfig: add streamline_config.pl to scripts (commit)
Driver Core: devtmpfs - kernel-maintained tmpfs-based /dev, read this recommended LWN article (commit)
kmemleak: add clear command support (commit)
locking: Allow arch-inlined spinlocks (commit)
mm: reinstate ZERO_PAGE (commit)
mmap: avoid unnecessary anon_vma lock acquisition in vma_adjust() (commit)
oprofile: Implement performance counter multiplexing (commit)
page-allocator: split per-cpu list into one-list-per-migrate-type (commit)
percpu: use dynamic percpu allocator as the default percpu allocator (commit)
genirq: Support nested threaded irq handling (commit)
hugetlbfs: allow the creation of files suitable for MAP_PRIVATE on the vfs internal mount (commit)
hugetlb: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions (commit), (commit), (commit)
3. Block
Enable rq CPU completion affinity by default (speeds up significantly databases) (commit)
Topology ioctls (commit)
4. Virtualization
Add MCE support (commit)
Allow PIT emulation without speaker port (commit)
PIT support for HPET legacy mode (commit)
SVM: enable nested svm by default (commit)
virtio: blk: add support for cache flush (commit), allow UFO feature to be set and advertised. (commit)
5. PCI
Support PCI Express fundamental reset (commit), (commit), (commit)
ASPM: support partial aspm enablement (commit)
ASPM: support per direction l0s management (commit)
PCI hotplug: add support for 5.0G link speed (commit)
6. MD/DM
Distribute raid processing over multiple cores (commit)
Asynchronous raid6 operations (commit), (commit), (commit), (commit), (commit), (commit), (commit)
7. Filesystems
- Ext4
Work around problems in the writeback code to force out writebacks in larger chunks than just 4mb, which is just too small. This also works around limitations in the ext4 block allocator, which can't allocate more than 2048 blocks at a time (commit)
Fix async commit mode using a barrier, fs_mark benchmark shows a 50% improvement (commit)
Async direct IO for holes and fallocate support (commit), (commit), (commit)
Add configurable run-time mballoc debugging (commit)
- OCFS2
NFS: Add a dns resolver for use with NFSv4 referrals and migration (commit)
XFS: Speed up free inode search. In big filesystems this can speed up allocation speed by 3-4x (commit)
GFS2: Add online uevent to GFS2 (commit)
QNX4: remove (broken) write support (commit)
8. Networking
- mac80211
- cfg80211
- Infiniband
macvlan: add multiqueue capability (commit)
9p: Add fscache support (commit)
UDP: Handle large incoming UDP/IPv4 and UDP/IPv6 packets and support software UFO (commit), (commit)
getsockoption: implement a SO_DOMAIN getsockoption (commit), implement a SO_PROTOCOL getsockoption (commit)
net_sched: add classful multiqueue dummy scheduler (commit)
sctp: Sysctl configuration for IPv4 Address Scoping (commit)
tun: Allow tap device to send/receive UFO packets. (commit)
vlan: multiqueue vlan device (commit)
ethtool: Add support for the ethtool feature to flash firmware image from a specified file. (commit)
Add DEVTYPE support for Ethernet based devices (commit)
IPVS: Add handling of incoming ICMPV6 messages (commit)
9. Security
Seperate lsm specific mmap_min_addr (commit)
Add selinux_kernel_module_request (commit)
Support for the new TUN LSM hooks (commit)
lsm: Add hooks to the TUN driver (commit)
KEYS: Add a keyctl to install a process's session keyring on its parent (commit)
KEYS: Add garbage collection for dead, revoked and expired keys (commit)
Add audit messages on type boundary violations (commit)
CRED: Add some configurable debugging (commit)
10. Tracing/Profiling
Lockless ring buffer, see this recommended LWN article (commit)
Remove markers (commit)
perf tools: Allow the specification of all tracepoints at once (commit)
11. Crypto
gcm - Use GHASH digest algorithm (commit)
ghash - Add GHASH digest algorithm for GCM (commit)
mv_cesa - Add support for Orion5X crypto engine (commit)
vmac - New hash algorithm for intel_txt support (commit)
12. Architecture-specific changes
- ARM
Add Thumb-2 instructino support (commit 1, 2, 3, 4, 5, 6 ,7, 8, 9, 10, 11)
Implement highpte (commit)
Complete irq tracing support for ARM (commit)
Support for Broadcom's BCMRing platform (commit 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
Add support for Atmel's AT91SAM9G45-EKES Evaluation Kit (commit), (commit), (commit)
Add support for Atmel's AT91SAM9G10-EK Evaluation Kit (commit), (commit), (commit)
Add Freescale i.MX25 family support (commit)
Add Freescale i.MX25 PDK (3ds) board support (commit)
Add support for S5PC1XX series based systems, a SoC with ARM coretex-A8 and numerous peripherals (commit 1, 2, 3, 4, 5, 6, 7, 8)
S3c6410: airgoo hmt board support (commit)
Add balloon3 support (commit)
Add support for phytec pca100 (phyCARD-s) board (commit)
Add basic MXC91231 support (commit)
- Davinci
Adding DM365 EVM board support (commit)
Adding DM365 SOC Support (commit)
Add DA850/OMAP-L138 SoC support (commit),(commit), (commit), (commit), (commit), (commit), (commit)
da8xx: Add DA830/OMAP-L137 SoC support (commit), (commit), (commit)
dm365: add EDMA support (commit), add MMC/SD support (commit), add NAND support to EVM board (commit)
EDMA: add support for dm646x (commit)
- nommu
Add S3c2410 CPU Frequency scaling support (commit), (commit), (commit)
Add S3c2440/S3c2442 CPU Frequency scaling support (commit), (commit), (commit)
S3c2412 Add cpufreq support. (commit)
Add OSIRIS cpufreq scaling support (commit)
S3C24XX: Add SPI bus 1 on GPD8 through GPD10 (commit)
Add support for ARM TCM (Tightly-Coupled Memory). This is usually just a few (4-64) KiB of RAM inside the ARM processor (commit)
Add support for ST Nomadik 8815 SoC and evaluation board (commit), (commit), (commit), (commit), (commit)
Add support for Eukrea Electromatique's CPU9260 & CPU9G20 boards (commit) and (commit)
Add support for Eukrea's CPUIMX27 (commit) and Eukrea's MBIMX27 (commit)
ep93xx: Introduce Pulse Width Modulator (PWM) driver (commit)
Platform data for CF/IDE support in AT91SAM9260 (commit)
Add static setting cpu frequence for w90p910 platform (commit)
at91: atmel_lcdfb: add at91sam9g10 support to atmel LCD driver (commit)
U300 SSP/SPI board setup and test (commit)
Add clocksource/clockevent support for w90p910 platform (commit)
Add nuc950 platform to w90x900 (commit) and add nuc960 platform to w90x900 (commit)
Add support for w90p910 mac driver (commit)
OMAP4: Add McBSP support (commit), add UART4 support (commit)
orion5x: Add Lacie NAS 2Big Network support (commit), add Lacie NAS d2Network support (commit)
Add sparsemem support for the RealView PBX platform (commit)
versatile: add PL061 gpiolib support (commit)
atmel-mci: Add support for Atmel AT91SAM9G20-EK Evaluation Kit modified for 2 MMC Slots (commit)
ep93xx video driver (commit)
OMAP1: AMS_DELTA: add modem support (commit)
OMAP2/3/4 core: create omap_device layer (commit)
OMAP2/3/4: create omap_hwmod layer (commit)
OMAP2/3 PM: create the OMAP PM interface and add a default OMAP PM no-op layer (commit)
OMAP2: add board file for Nokia N800 and N810 (commit)
OMAP3: Zoom2: Add TWL4030 support (commit)
omap4: mmc driver support on OMAP4 (commit)
omap_hsmmc: add mmc card sleep and awake support (commit), context save/restore support (commit), support for deeper power saving states (commit)
iommu: add initial debugfs support (commit)
McBSP: Add link DMA mode selection (commit)
PM debug: Add PRCM register dump support (commit)
Core generic GPIO support for Freescale Coldfire processors. (commit)
Check compiler version and EABI support when adding ARM unwind support. (commit)
- x86
HWPOISON: A high level memory handler that poisons pages that got corrupted by hardware (typically by a two bit flip in a DIMM or a cache) on the Linux level. The VM marks that a page hwpoisoned and doing the appropriate action based on the type of page it is (commit 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21)
Add specific support for Intel Atom architecture (commit)
Support for Intel Trusted Execution Technology (Intel TXT), read this recommended LWN article (commit), (commit), (commit)
Remove STACKPROTECTOR_ALL (commit)
mce: Support specifying context for software mce injection (commit), (commit)
msr: Export the register-setting MSR functions via /dev/*/msr (commit)
perf_counter, bts: Add BTS support to perfcounters (commit)
EDAC, AMD: decode bus unit MCEs (commit), decode data cache MCEs (commit), decode FR MCEs (commit), decode instruction cache MCEs (commit), decode load store MCEs (commit)
EDAC: Intel i3200 memory controller driver (commit)
- SH
Add support for SH4A SH7757 CPU subtype (commit)
Add Renesas "R0P7724LC0011/21RL (Ecovec)" board support (commit)
Add kfr2r09 board support (commit), (commit), (commit), (commit), (commit), (commit), (commit)
Add cpuidle for SuperH Mobile using hwblk (commit), (commit), (commit), (commit)
Runtime PM for SuperH Mobile platform bus devices (commit)
Add early printk support for SH770x CPUs (commit)
Add ftrace syscall tracing support (commit)
Function graph tracer support (commit)
Add sys_cacheflush() call for SH CPUs (commit)
Allow for kernel command line concatenation (commit)
Add bzip2/lzma uImage support (commit), bzip2/lzma zImage support (commit)
dwarf unwinder support (commit)
Add r8a66597 usb0 gadget to the kfr2r09 board (commit), add r8a66597 usb1 gadget to the se7724 board (commit)
LED9, LED10 and LED11 support for Solution Engine 7724 (commit)
nmi_debug support (commit)
Provide diagnostic kernel stack checks (commit)
romImage support V2 (commit)
- PowerPC
Add support for "Book 3E" variants (commit), (commit), (commit), (commit), (commit), (commit), (commit)
40x: Add support for the ESTeem 195E (PPC405EP) SBC (commit)
83xx: Add support for MPC8377E-WLAN boards (commit),add eSDHC support for MPC837xE-RDB/WLAN boards (commit)
85xx: Add support for P2020RDB board (commit), add support for I2C EEPROMs on MPC8548CDS boards (commit)
Enable GCOV (commit)
Add CONFIG_DMA_API_DEBUG support (commit)
fsldma: Add DMA_SLAVE support (commit)
Add perf callchain support (commit)
- SPARC
Add support for SPARC-LEON, a synthesizable VHDL model of the SPARC-v8 standard. LEON is part of the GRLIB collection of IP cores that are distributed under GPL. GRLIB can be downloaded from www.gaisler.com. You can download a sparc-linux cross-compilation toolchain at www.gaisler.com (commit), (commit), (commit), (commit), (commit)
Add CONFIG_DMA_API_DEBUG support (commit)
Kill PROM console driver. (commit)
- MIPS
- S390
Add call home support (commit)
Add efficient atomic64 support for 31 bit (commit)
Enable kmemleak on s390 (commit)
64-bit register support for 31-bit processes [http://git.kernel.org/linus/ea2a4d3a3a929ef494952bba57a0ef1a8a877881
- IA64
Implement ticket locks for Itanium (commit)
13. Drivers
13.1. Graphics
- i915:
- Radeon
Add support for "Surround View" (commit)
- AGP
- fb
omapfb: add support for MIPI-DCS compatible LCDs (commit), add support for rotation on the Blizzard LCD ctrl (commit), add support for the 2430SDP LCD (commit), add support for the 3430SDP LCD (commit), add support for the Amstrad Delta LCD (commit), add support for the Apollon LCD (commit), add support for the Gumstix Overo LCD (commit), add support for the OMAP2EVM LCD (commit), add support for the OMAP3 Beagle DVI output (commit), add support for the OMAP3 EVM LCD (commit), add support for the ZOOM MDK LCD (commit)
Framebuffer support for HTC Dream (commit)
Frame Buffer driver for TI DA8xx/OMAP-L1xx (commit)
davinci driver for ti da8xx omap (commit)
viafb: add support for the VX855 chipset (commit)
Add more correct 8/16/24/32 bpp fb support (commit)
13.2. Storage
- SATA/PATA
- SCSI
be2iscsi: add 10Gbps iSCSI - BladeEngine 2 driver (commit)
Add PMC-Sierra MaxRAID driver to support 6Gb/s SAS RAID controller (commit)
bfa: Add Brocade BFA FC SCSI driver (commit)
fcoe, libfc: adds exchange manager(EM) anchor list per lport and related APIs (commit)
lpfc 8.3.4: Add bsg (SGIOv4) support for ELS/CT support (commit)
mvsas: Support Areca SAS/SATA HBA, ARC-1300/1320 (commit)
hptiop: Add RR44xx adapter support (commit)
mpt2sas: Added SCSIIO, Internal and high priority memory pools to support multiple TM (commit)
qla2xxx: Add asynchronous-login support. (commit)
scsi_dh_rdac: add support for next generation of Dell PV array (commit), add support for Sun Storagetek ST2500, ST2510 and ST2530 (commit)
ses: add support for enclosure component hot removal (commit)
sd: Support disks formatted with DIF Type 2 http://git.kernel.org/linus/4e7392ec582cf06753b0969ca9ab959923e38493 (commit)]
13.3. Networking devices
Add VMware virtual Ethernet NIC driver: vmxnet3 (commit)
Add ks8851_mll ethernet network driver (commit)
Add Xilinx emac lite device driver (commit)
Add support for STMicroelectronics Ethernet controllers (commit)
ath9k: Add support for AR9287 based chipsets (commit), (commit), (commit), add initial hardware support for ar9271 (commit), (commit), (commit), add debug counters for TX (commit), enable LEDs for AR9287 chipsets. (commit), add Bluetooth Coexistence 3-wire support (commit), add infrastructure for generic hw timers (commit), add open loop power control support for AR9287. (commit)
b43: use a threaded IRQ handler (commit), implement LP-PHY baseband table initialization (commit), LP-PHY: Implement channel switching for rev0/1/B2062 radio (commit), LP-PHY: Implement channel switching for rev2+/B2063 radio (commit), add LP-PHY firmware loading support (commit), add hardware tkip (commit), add Soft-MAC SDIO device support (commit), add LP PHY Analog Switch Support (commit)
iwlwifi: Thermal Throttling Management - Part 1 (commit), (commit), debugging features(commit), (commit), (commit), (commit), (commit), (commit), add thermal throttling support to 5150 (commit)
tg3: Add MSI-X support (commit), add RSS support (commit), add TSS support (commit), add 5717 asic rev (commit), add 5717 NVRAM detection routines (commit), add support for 57788 and remove support for 57720 which was never released (commit), add new 5785 10/100 only device ID (commit)
netxen: add hardware LRO support (commit), add vlan tx acceleration support (commit), enable ip addr hashing (commit), ethtool statistics and control for LRO (commit), firmware hang detection (commit), support for ethtool set ringparam (commit)
be2net: Add GRO support to the be2net driver. LRO is not supported anymore. (commit), changes to support flashing of the be2 network adapter (commit)
bnx2x: Supporting BCM8727 PHY (commit), supporting Device Control Channel (commit), adding XAUI CL73 autoneg support (commit), MDC/MDIO CL45 IOCTLs (commit)
ixgbe: Add device support for a new copper 82598 device (commit), add support for multiple Tx queues for FCoE in 82599 (commit), add support for using FCoE DDP in 82599 as FCoE targets (commit)
p54: re-enable power save feature (commit), add Zcomax XG-705A usbid (commit), (commit)
wl1271: Add driver for devices based in the TI wl1271 chipset (commit), (commit)
can: sja1000: legacy SJA1000 ISA bus driver (commit), sja1000: Add support for the new 4 channel EMS CPC-PCI cards (commit)
wl12xx: add support for new WL1271 chip revision (commit), enable ELP mode (commit)
broadcom: Add AC131 phy support (commit), add BCM50610M support (commit)
ath5k: add hardware CCMP encyption support (commit)
ucc_geth: Implement suspend/resume and Wake-On-LAN support (commit)
cxgb3: AEL2020 phy support update (commit)
dm9000: add checksum offload support (commit)
e1000: drop dead pcie code from e1000 (commit)
libertas: Add support for Marvell Libertas CF8305 (commit)
enic: add support for multiple BARs (commit)
iwmc3200wifi: cfg80211 key hooks implemetation (commit)
rt2x00: Add support for retry rates (commit)
rtl8187: Implement rfkill support (commit)
smsc95xx: add additional USB product IDs (commit)
igb: add support for 82576 mezzanine card (commit)
zd1211rw: adding Accton Technology Corp (083a:e501) as a ZD1211B device (commit)
wl1251: add sdio support (commit)
ar9170: implement transmit aggregation (commit)
ems_usb: Added support for EMS CPC-USB/ARM7 CAN/USB interface (commit)
13.4. USB
Add nuvoton Ehci driver for w90p910 platform (commit)
at91: Add USB EHCI driver for at91sam9g45 series (commit), add USB gadget driver selection for at91sam9g45 series (commit)
gadget: Add EEM gadget driver (commit)
EHCI: Add Intel Moorestown EHCI controller HOSTPCx extensions and support phy low power mode (commit)
xhci: Support USB hubs (commit)
Add API for userspace drivers to "claim" ports (commit)
Add PIDs for FTDI based OpenDCC hardware (commit)
ark3116: add IrDA support for Gembird UIR-22 (commit)
Add break support for Winchiphead CH341 340 USB->Serial "chip" (commit)
Add full autosuspend and power management support for usbsevseg (commit)
Add full power management support for the idmouse driver (commit)
gadget: R8a66597 peripheral controller support. (commit)
NXP ISP1362 USB host driver (commit)
option: Add support for ZTE AC2726 EVDO modem (commit), add TELIT UC864G support (commit)
serial: full autosuspend support for the option driver (commit), pl2303: new hardware support - sanwa multimeter (commit), ftdi_sio: new hardware support - hameg power supply (commit)
Support for autosuspend in sierra while online (commit)
Suspend/resume support for usbtmc (commit)
13.5. FireWire
Fix isochronous I/O features which are required by FFADO (FireWire audio drivers in userspace) (commit), (commit)
Also see release notes at ieee1394.wiki.kernel.org
13.6. Input
Add a driver for the Winbond WPCD376I Consumer IR hardware (commit)
Add Blackfin rotary input driver (commit)
Add driver for ADP5588 QWERTY I2C Keypad (commit)
Add driver for Atmel AT42QT2160 Sensor Chip (commit)
Add driver for Maxim MAX7359 key switch controller (commit)
Add driver for Opencores Keyboard Controller (commit)
Add keypad driver for w90p910 (commit)
Add new driver for Sentelic Finger Sensing Pad (commit)
Add support for the WM831x ON pin (commit)
Add touchscreen driver for MELFAS MCS-5000 controller (commit)
Add twl4030_keypad driver (commit)
Add generic suspend and resume for input devices (commit)
ad7879 - add support for AD7889 (commit)
PCAP2 based touchscreen driver (commit), PCAP2 misc input driver (commit)
usbtouchscreen - add support for e2i touchscreen controller (commit), support for JASTEC/Digitech DTR-02U USB touch controllers (commit)
wistron_btns: add keymap for AOpen 1557 (commit)
wm97xx: add Palm support to Mainstone accelerated touch (commit)
xpad: add USB ID for the drumkit controller from Rock Band (commit)
13.7. Sound
ctxfi - Native timer support for emu20k2 (commit)
dummy - Support high-res timer mode (commit)
HDA: add 2-channel mode to Intel ALC889/ALC889A models (commit), add better Intel Ibexpeak platform support (commit), add Cirrus Logic CS420x support (commit), add CX20582 and OLPC XO-1.5 support (commit), added quirk to enable sound on Toshiba NB200 (commit), add full audio support on Acer Aspire 7730G notebook (commit), add patch module option (commit), add support for new AMD HD audio devices (commit), add support of Alienware M17x laptop (commit), add support of docking auto-mute/mic for AD1984A laptop model (commit), analog Devices AD1984A add HP Touchsmart model (commit), added support for CLEVO M540R subsystem, 6 channel + digital (commit)
ice1724 - Patch for suspend/resume for Audiotrak Prodigy HD2 (commit)
cmi8330: Add basic CMI8329 support (commit)
Add new ad1836 codec driver based on asoc (commit)
Make OSS device number claiming optional and schedule its removal (commit)
- ASoC
Add ak4642/ak4643 codec support (commit)
Add DAI platform ssi driver for MXC (commit)
Add DMA platform driver for MX1x and MX2x (commit)
Add FSI-AK4642 sound support for SuperH (commit)
Add machine driver for i.mx27_visstrim_m10 board (commit)
Add machine driver support for DM646x (commit)
Add mcasp support for DM646x (commit)
Add Openmoko Neo Freerunner (GTA02) audio driver (commit)
Add SuperH FSI driver support for ALSA (commit)
Add support for Amstrad E3 (Delta) machine (commit)
Add support for Conexant CX20442-11 voice modem codec (commit)
Add WM8523 CODEC driver (commit)
Add WM8776 CODEC driver (commit)
Add WM8961 driver (commit)
Add WM8974 CODEC driver (commit)
Add WM8993 CODEC driver (commit)
blackfin I2S(TDM mode) CPU DAI driver (commit)
board driver to connect bf5xx with ad1938 (commit)
Davinci: Support Audio on DA830 EVM (commit)
MAX9877: add MAX9877 amp driver (commit)
new ad1938 codec driver based on asoc (commit)
new board driver to connect bfin-5xx with ad1836 codec (commit)
Regulator support for WM8580 (commit)
S3C24XX: Add audio core and tlv320aic23 for Simtec boards (commit)
S3C24XX: Support for Simtec Hermes boards (commit)
Zoom2: Add machine driver for Zoom2 board (commit)
13.8. Staging Drivers
Add Realtek 8192 PCI wireless driver (commit)
Add rt3090 wireless driver (commit)
Add Support for Quatech ESU2-100 USB 2.0 8-port serial adaptor (commit)
HTC Dream (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit)
Hyper-V (commit), (commit), (commit), (commit), (commit), (commit), (commit)
IIO: Industrial I/O support (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit), (commit)
meilhaus: remove the drivers (commit)
pata_rdc: remove the driver from the staging tree (commit)
quatech_usb2: implement open functionality (commit), close, read, and some ioctl support (commit)
rspiusb: remove the driver (commit)
rt2870: add Antenna Diversity support (commit)
rt3070: add support for Linksys WUSB54GC-EU v3 (commit)
rtxx70: merge rt3070 with rt2870 (commit)
sep: Move the RAR support into staging where it is supposed to be (commit), upstream revision 3 of the security processor kernel driver (commit)
VME Framework for the Linux Kernel (commit), (commit), (commit), (commit)
remove at76_usb wireless driver. (commit)
remove epl driver (commit)
remove heci driver (commit)
remove me4000 driver. (commit)
remove no longer needed rt3070 driver (commit)
remove sxg driver (commit)
cpc-usb: Removed driver from staging tree (commit)
remove agnx driver (commit)
remove stlc45xx driver (commit)
13.9. V4L/DVB
Add driver for Earthsoft PT1 (commit)
Add driver for 774 Friio White USB ISDB-T receiver (commit)
Add vpif capture driver for DM6467 (commit)
Add driver for the DMXXXX VPFE based frame grabber (commit), (commit), (commit), (commit), (commit), (commit), (commit)
Add I2C driver for Silicon Labs Si4713 device (commit), (commit), (commit)
Add conexant cx25821 driver (commit)
radio-si470x: Add suport for RDS endpoint interrupt mode (commit)
davinci/vpif: Add Video Port Interface (VPIF) driver (commit), add VPIF display driver (commit)
em28xx: Add support for Gadmei UTV330+ (commit)
firedtv: Fix retuning after antenna signal noise of DVB-T devices (commit), fix Conditional Access Module usage (commit)
ivtv: Add card entry for Avermedia UltraTV 1500 MCE (M113 variant) (commit)
lgs8gxx: add lgs8g75 support (commit)
cx23885: add card Magic-Pro ProHDTV Extreme 2 (commit)
dvb-pll: Add Samsung TDTC9251DH0 DVB-T NIM (commit), add support for Samsung TBDU18132 DVB-S NIM (commit), add support for Samsung TBMU24112 DVB-S NIM (commit), add support for Alps TDEE4 DVB-C NIM (commit)
cx23885: Add support for ATSC/QAM on Hauppauge HVR-1850 (commit)
ir-kbd-i2c: Add support for Z8f0811/Hauppage IR transceivers (commit)
Added Support for STK7700D (DVB) (commit)
cx88: add support for Winfast DTV2000H rev. J (commit)
em28xx: add support for Terratec Cinergy Hybrid T USB XS remote control (commit)
Davinci: DM646x: Update the structure name as per header file changes (commit)
Add ce5039(zl10039) tuner support. (commit)
Add Tevii S630 USB DVB-S card support. (commit)
Add support for Compro Videomate S350 DVB-S PCI card. (commit)
Add support for Humax/Coex DVB-T USB Stick 2.0 High Speed (commit)
FM1216MK5 FM radio (commit)
Add support Avermedia Studio 505 (commit)
Add support for Kaiser Baas Expresscard Dual HD Tuner (commit)
Add remote support to cph03x bttv card (commit)
Add support BeholdTV X7 card (commit)
Add support for Rovermedia TV Link Pro FM (commit)
Added new Pinnacle USB devices (commit)
DVB-API: add support for ISDB-T and ISDB-Tsb (version 5.1) (commit)
Dib8000: added support for Dibcom ISDB-T/ISDB-Tsb demodulator Dib8000 (commit)
Dib0700: add support for STK807XP and STK807XPVR (commit), add support for Prolink SBTVD (commit)
SAA7164: Add support for the NXP SAA7164 silicon (commit)
em28xx: add Reddo DVB-C USB TV Box (commit)
gspca: jeilinj: New subdriver for Jeilin chip. (commit), pac7311: Webcam 093a:2629 added. (commit), vc032x: Webcam 0ac8:c301 added. (commit), sunplus: Webcam 052b:1803 added. (commit), gl860: Addition of GL860 based webcams (commit), pac7311: Webcam 06f8:3009 added. (commit), sonixj: Webcam 0c45:6148 added (commit)
Initial support for ADV7180 (commit)
13.10. Bluetooth
Add btmrvl driver for Marvell Bluetooth devices (commit)
Add Marvell BT-over-SDIO driver (commit)
Add initial support for ERTM packets transfers (commit)
Add configuration support for ERTM and Streaming mode (commit)
Add proper shutdown support to SCO sockets (commit)
Add support for Retransmission and Monitor Timers (commit)
Add support for Segmentation and Reassembly of SDUs (commit)
Add USB autosuspend support to btusb driver (commit)
Allow setting of L2CAP ERTM via socket option (commit)
Enable Streaming Mode for L2CAP (commit)
Improve USB driver throughput by increasing the frame size (commit)
Initial support for retransmission of packets with REJ frames (commit)
13.11. MTD
SST25L (non JEDEC) SPI Flash driver (commit)
Add driver for Nomadik 8815 SoC (on NHK8815 board) (commit)
Add nand support for w90p910 (commit)
davinci: Add 4-bit ECC support for large page NAND chips (commit)
omap: adding DMA mode support in nand prefetch/post-write (commit)
omap: add support for nand prefetch-read and post-write (commit)
Onenand support for Nomadik 8815 SoC (on NHK8815 board) (commit)
13.12. HWMON
Add driver for Texas Instruments TMP421/422/423 sensor chips (commit)
Add WM835x PMIC hardware monitoring driver (commit)
Add WM831x PMIC hardware monitoring driver (commit)
Add driver for ACPI 4.0 power meters (commit)
Add S3C24XX series ADC driver (commit)
coretemp: Add Lynnfield CPU (commit), add support for Penryn mobile CPUs (commit)
adm1021: support high precision ADM1023 remote sensor (commit)
Delete deprecated FSC drivers (commit)
13.13. ACPI
Add support for module-level executable AML code (commit)
create Processor Aggregator Device driver (commit)
thinkpad-acpi: hotkey event driver update (commit)
topstar-laptop: add new driver for hotkeys support on Topstar N01 (commit)
asus-laptop: Add support for Keyboard backlight (commit)
13.14. Various
- RTC
Add driver for MXC's internal RTC module (commit)
Add Freescale stmp37xx/378x driver (commit)
Add driver for PCAP2 PMIC (commit)
Add Philips PCF2123 RTC SPI driver (commit)
Add U300 COH 901 331 RTC driver v3 (commit)
AB3100 RTC support (commit)
Add support for RTCs on Wolfson WM831x devices (commit)
- Regulator
Add Freescale MC13783 driver (commit)
Add pcap driver (commit)
Add TPS65023 regulator driver (commit)
Add TPS6507x regulator driver (commit)
Provide mode to status conversion function (commit)
Add WM831x DC-DC buck convertor support (commit), add WM831x LDO support (commit), add WM831x EPE support (commit), add WM831x DC-DC boost convertor support (commit), add WM831x ISINK support (commit)
- MFD
Initial core support for WM831x series devices (commit)
Add Freescale MC13783 driver (commit)
Add support for TWL4030/5030 dynamic power switching (commit)
Add WM831x AUXADC support (commit)
Add WM831x interrupt support (commit)
Add a GPIO interface to the UCB1400 MFD chip driver via gpiolib (commit)
AB3100 OTP readout (commit)
Add basic WM831x OTP support (commit)
- Backlight
- HID
- SPI
- WATCHDOG
- ISDN
- I2C
- MMC
- ioat3
- gpio
- dmaengine
ssb: Implement PMU LDO control and use it in b43 (commit), implement SDIO host bus support (commit)
bfin-otp: add writing support (commit)
sdio: add CD disable support (commit)
s3cmci: add SDIO IRQ support (commit)
power_supply: Add driver for the PMU on WM831x PMICs (commit)
leds: Add WM831x status LED driver (commit)
ioat: add 'ioat' sysfs attributes (commit)
ioat2+: add fence support (commit)
async_tx: add support for asynchronous GF multiplication (commit), add support for asynchronous RAID6 recovery operations (commit)
13.15. Other news sources tracking the kernel changes
- LWN
H Open: 2.6.32 Tracking
CIO: Linux kernel 2.6.32: virtualization, power management and more drivers
The Reg: Red Hat pitches x64 virtualization with KVM rollout