Linux 3.9 was released on April 28, 2013.

This Linux release includes support for experimental RAID5/6 modes and better defragmentation in files shared by snapshots in Btrfs; support for the "goldfish" emulator used by the Android SDK, ability to SSD storage as cache device; two new architecture ports: Synopsys ARC 700 and Meta Imagination processors; KVM virtualization support in the ARM architecture, a Intel driver that "injects" idle states to improve performance-per-watt, support for Chrome OS laptops, a new suspend power state, and the removal of the obsolete CONFIG_EXPERIMENTAL configuration option. Many small features and new drivers and fixes are also available.

1. Prominent features in Linux 3.9

1.1. Experimental RAID 5/6 support and snapshot-aware defragmentation in Btrfs

1.2. Android "goldfish" emulator

The Android development environment provides a QEMU-based ARM virtualized platform called "goldfish". This platform provides a virtual CPU and drivers for battery, MMC, audio, graphics, etc. This release includes support for the Goldfish platform, which makes possible to develop for Android with out-of-the-box kernels.

Code: (commit 1, 2, 3, 4, 5, 6, 7, 8)

1.3. SSD cache devices

The device mapper has added a target (dm-cache) that allows a fast device such as an SSD to be used as a cache for a slower device such as a rotating disk. Different 'policy' plugins can be used to change the algorithms used to select which blocks are promoted, demoted, cleaned etc. It supports writeback and writethrough modes.

Documentation: Documentation/device-mapper/cache.txt

Code: (commit 1, 2, 3)

1.4. New architecture: Synopsys ARC 700 processors

This release introduces the Linux kernel port to the ARC700 processor family (750D and 770D) from Synopsys.

ARC700 is highly configurable and power-efficient 32-bit RISC core with MMU. It is embedded in SoCs deployed in TV set top boxes, digital media players, all the way to network-on-chips. More information is available here. More info about the kernel port can also be found in the ELCE-Barclone '12 talk on the same topic.

The GNU toolchain, based off of GCC 4.4 + uClibc is also available at GitHub

Code: arch/arc/

1.5. New architecture: Meta Imagination processors

This release introduces the Linux kernel port to the Meta ATP (Meta 1) and HTP (Meta 2) processor cores from Imagination Technologies.

Meta cores are 32-bit, hardware multithreaded, general purpose, embedded processors which also feature a DSP instruction set, and can be found in many digital radios. They are capable of running different operating systems on different hardware threads, for example a digital radio might run RTOSes for DAB decoding and audio decoding on three hardware threads, and run Linux on the fourth hardware thread to manage the user interface, networking etc. HTPs are also capable of running SMP Linux on multiple hardware threads.

Instruction set and architecture overview documents can be found here.

Code: arch/metag/

1.6. KVM support in ARM architectures

The ARM architecture port now supports the KVM virtualization system. This brings virtualization capabilities to the Linux ARM ecosystem.

Code: (commit)

1.7. Intel PowerClamp idle injection for improved power efficiency

Related LWN article: The PowerClamp driver

The Intel Powerclamp driver performs synchronized idle injection across all online CPUs. The goal is to maintain a given package level C-state ratio. Compared to other throttling methods already exist in the kernel, such as ACPI PAD (taking CPUs offline) and clock modulation, this is often more efficient in terms of performance per watt.

Documentation: Documentation/thermal/intel_powerclamp.txt

Code: (commit)

1.8. New "suspend-freeze" suspend state:

This release includes a new suspend mode, suspend-freeze. It equals to frozen processes + suspended devices + idle processors. This state is useful for 1) platforms that do not have STR, or have a broken STR 2) platforms that have an extremely low power idle state which can be used to replace STR

Compared with memory suspend, suspend-freeze saves less power because the system is still in a running state, but has less resume latency because it does not touch BIOS and the processors are in idle state. Compared with RTPM/idle, suspend-freeze saves more power because the processor has longer sleep time once the processes are frozen, and it can get more power saving from the devices that does not have good RTPM support.

To enable this suspend mode, echo freeze > /sys/power/state

Code: (commit)

1.9. Chrome OS laptop support

Complete support for all the devices present in the Chrome laptops sold by many companies has been added in this release. Code (commit), (commit), (commit), (commit), (commit)


CONFIG_EXPERIMENTAL was a configuration option which was supposed to be used to enable experimental features that normal people shouldn't use. But the changes in the development model and the staging directory have made it obsolete, these days almost all distros enable it by default, so it has been removed. Developers will now add a "(EXPERIMENTAL)" tag in the title of their configuration option to warn users.

Code: (commit)

2. Driver and architecture-specific changes

All the driver and architecture-specific changes can be found in the Linux_3.9_DriverArch page

3. Various core changes

4. Filesystems

5. Block layer

6. Networking

xfrm: Add a state resolution packet queue (commit) mcast: add multicast proxy support (IPv4 and IPv6) (commit)

7. Virtualization

VMCI: Some header and config files. Code: drivers/misc/vmw_vmci/

8. perf

9. Other news sites that track the changes of this release

KernelNewbies: Linux_3.9 (last edited 2017-12-30 01:29:54 by localhost)