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.
Contents
-
Prominent features in Linux 3.9
- Experimental RAID 5/6 support and snapshot-aware defragmentation in Btrfs
- Android "goldfish" emulator
- SSD cache devices
- New architecture: Synopsys ARC 700 processors
- New architecture: Meta Imagination processors
- KVM support in ARM architectures
- Intel PowerClamp idle injection for improved power efficiency
- New "suspend-freeze" suspend state:
- Chrome OS laptop support
- Removal of CONFIG_EXPERIMENTAL
- Driver and architecture-specific changes
- Various core changes
- Filesystems
- Block layer
- Networking
- Virtualization
- perf
- Other news sites that track the changes of this release
1. Prominent features in Linux 3.9
1.1. Experimental RAID 5/6 support and snapshot-aware defragmentation in Btrfs
Btrfs has got RAID 5 and RAID 6 support. The support is experimental and it's still no crash-safe, so it's only intented for testing. Code: (commit 1, 2, 3)
Snapshot-aware defragmentation: Due to the copy-on-write design of Btrfs varios snapshots can share the same data blocks. This sharing could be undone by defragmentation, in this release defragmentation no longer breaks. Code: (commit)
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
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 0.9.30.3 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)
1.10. Removal of CONFIG_EXPERIMENTAL
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
Add a CONFIG_TTY option to allow removal of the TTY layer (commit)
- Module signing
PCI-Express Non-Transparent Bridge Support (commit)
Remove deprecated power trace API (commit)
Dynamic ticks full CPU time accounting. This is infrastructure used by the full dynticks that will be implemented in future kernels (commit), (commit)
NTP: Add a CONFIG_RTC_SYSTOHC configuration that allow ARM/etc systems that rely on the class RTC subsystem to have the same kind of automatic NTP based synchronization that we have on PC platforms (commit)
Make madvise(MADV_WILLNEED) support swap file prefetch (commit)
cpufreq / highbank: add support for highbank cpufreq (commit)
kdb: Remove the ll command (commit), and the ssb command (commit)
ksm: allow trees per NUMA node (commit)
ksm: make KSM page migration possible (commit)
ima: add policy support for file system uuid (commit), added policy support for 'security.ima' type (commit), digital signature verification using asymmetric keys (commit), per hook cache integrity appraisal status (commit)
rwsem-spinlock: Implement writer lock-stealing for better scalability (commit)
rwsem: Implement writer lock-stealing for better scalability (commit)
sched: Add a tuning knob to allow changing SCHED_RR timeslice (commit)
smp: make smp_call_function_many() use logic similar to smp_call_function_single() (commit)
softirq: reduce latencies (commit)
suspend: enable freeze timeout configuration through sys (commit)
tools/power turbostat: support Haswell (commit)
userns: Allow the unprivileged users to mount mqueue fs (commit)
userns: Allow the userns root to mount of devpts (commit)
userns: Allow the userns root to mount ramfs. (commit)
userns: Allow the userns root to mount tmpfs. (commit)
userns: Allow unprivileged reboot (commit)
memory-hotplug: remove /sys/firmware/memmap/X sysfs (commit)
page_alloc: add movable_memmap kernel parameter (commit)
firmware: Make user-mode helper optional (commit)
evm: add file system uuid to EVM hmac (commit)
crypto: omap-sham - Add OMAP4/AM33XX SHAM Support (commit)
crypto: omap-sham - Add SHA224 and SHA256 Support (commit)
4. Filesystems
- Btrfs
Add a new ioctl to get the label of a mounted file system (commit) and set/change it (commit)
add cancellation points to defrag (commit)
Implement unlocked direct-io write (commit)
Reduce CPU contention while waiting for delayed extent operations (commit)
Reduce lock contention on extent buffer locks (commit)
- XFS
- Ext4
Add punching hole support for non-extent-mapped files [http://git.kernel.org/linus
Track the delay between when we first request that the commit begin and when it actually begins, so we can see how much of a gap exists (commit), (commit)
f2fs: add un/freeze_fs into super_operations (commit)
fuse: implement NFS-like readdirplus support (commit)
hfsplus: add support of manipulation by attributes file (commit)
5. Block layer
Enable full blkcg hierarchy support in the CFQ IO scheduler (commit)
Fix the performance regressions introduced by the "stable pages" work. Related LWN article (commit)
MD RAID10: Improve redundancy for 'far' and 'offset' algorithms (commit), (commit)
DM: allows the administrator to reduce the rate at which kcopyd issues I/O. The parameter can be set in /sys/module/*/parameters (commit)
DM: Add support for MD's RAID10 "far" and "offset" algorithms (commit)
Remove CONFIG_MULTICORE_RAID456 (commit)
6. Networking
- TCP
team: add ethtool support (commit)
- bridge
Add netlink interface to configure vlans on bridge ports (commit)
Add the ability to configure pvid (commit)
Add vlan filtering infrastructure (commit)
Add vlan id to multicast groups (commit)
Add vlan support for local fdb entries (commit)
Add vlan support to static neighbors (commit)
Add vlan to unicast fdb entries (commit)
Dump vlan information from a bridge port (commit)
Implement vlan ingress/egress policy with PVID. (commit)
can: add tx/rx LED trigger support (commit)
cfg80211: configuration for WoWLAN over TCP (commit)
mac80211: add radar detection command/event (commit)
mac80211: improve latency and throughput while software scanning (commit)
mac80211: mesh power save basics (commit)
macvlan: add multicast filter (commit)
8021q: Implement Multiple VLAN Registration Protocol (MVRP) (commit)
802: Implement Multiple Registration Protocol (MRP) (commit)
vxlan: Add ethtool drvinfo (commit)
Allow to change carrier via sysfs (commit)
netfilter: add connlabel conntrack extension (commit)
netfilter: ctnetlink: deliver labels to userspace (commit)
netfilter: nf_ct_sip: support Cisco 7941/7945 IP phones (commit)
netfilter: xt_CT: add alias flag (commit)
netpoll: add IPv6 support (commit)
nl80211/cfg80211: add radar detection command/event (commit)
nl80211: allow user-space to set address for P2P_DEVICE (commit)
ipv4: introduce address lifetime (commit)
soreuseport: infrastructure (commit), TCP/IPv4 implementation (commit), TCP/IPv6 implementation (commit), UDP/IPv4 implementation (commit), UDP/IPv6 implementation (commit),
Add TCP segmentation offload for GRE (commit)
xfrm: Add a state resolution packet queue (commit) mcast: add multicast proxy support (IPv4 and IPv6) (commit)
7. Virtualization
- VMware VMCI (Virtual Machine Communication Interface). It enables high-speed communication between host and guest in a virtual environment via the VMCI virtual device.
VMCI: Some header and config files. Code: drivers/misc/vmw_vmci/
VMware VM sockets. VM Sockets allows communication between virtual machines and the hypervisor and are designed to work on top of the VMCI transport. A socket address family, "AF_VSOCK", is provided. Today, VM Sockets is used by various VMware Tools and various applications. For additional information about the use of VM Sockets, please refer to the VM Sockets Programming Guide (commit)
KVM: add virtual x2apic support (commit)
- Xen
tcm_vhost: Multi-queue support (commit), multi-target support (commit)
8. perf
perf buildid-cache: Add --update option (commit)
perf evlist: Add --group option (commit)
perf hists browser: Add option for runtime switching perf data file (commit)
perf hists browser: Add support to display whole group data for raw columns (commit)
perf report: Add --group option (commit)
perf report: Add report.group config option (commit)
perf stat: Add per processor socket count aggregation (commit)
perf tools: Add support for wildcard in tracepoint system name (commit)
perf ui/gtk: Implement basic GTK2 annotation browser (commit)
perf/POWER7: Make generic event translations available in sysfs (commit)
perf/POWER7: Make some POWER7 events available in sysfs (commit)
perf/x86/amd: Enable northbridge performance counters on AMD family 15h (commit)
perf/x86: Add Intel IvyBridge event scheduling constraints (commit)
perf: Add 'perf bench numa mem' NUMA performance measurement suite (commit)