• Immutable Page
  • Info
  • Attachments

Linux 3.19

Linux 3.19 has been released on Sun, 8 Feb 2015

Summary: This release adds support for Btrfs scrubbing and fast device replacement with RAID 5 and 6, support for the Intel Memory Protection Extensions that help to stop buffer overflows, support for the AMD HSA architecture, support for the debugging ARM Coresight subsystem, support for the Altera Nios II CPU architecture, networking infrastructure for routing and switching offloading, Device Tree Overlays that help to support expansion busses found on consumer development boards like the Beaglebone or Raspberry Pi, support for hole punching and preallocation in NFSv4.2, and the Android binder has been moved from the staging area to stable. There are also new drivers and many other small improvements.

  1. Prominent features
    1. Btrfs: support scrubbing and fast device replacement in RAID 5 and 6
    2. Support for the Intel Memory Protection Extensions
    3. HSA driver for AMD GPU devices
    4. Android binder moved to stable
    5. ARM Coresight support
    6. New architecture: Altera Nios II processors
    7. Device Tree overlays
    8. Networking: support for routing and switching offloading
    9. NFSv4.2 support for hole punching and preallocation
  2. Drivers and architectures
  3. File systems
  4. Memory management
  5. Block
  6. Core (various)
  7. Cryptography
  8. Virtualization
  9. Security
  10. Tracing & perf
  11. Networking
  12. List of merges
  13. Other news sites

1. Prominent features

1.1. Btrfs: support scrubbing and fast device replacement in RAID 5 and 6

Btrfs added support for fast & live device replacement in Linux 3.8 (see btrfs-replace(8)), much faster and more efficient than adding the new device and removing the old one in separated commands (see btrfs-device(8)). This feature could not fast-replace devices from filesystems using RAID 5 & 6, this release has removed that limitation.

The process of scrubbing a Btrfs filesystem (see btrfs-scrub(8)) was also not available in RAID 5 and 6 filesystems, this limitation has also been removed in this release

Code: commit, commit, commit, commit, commit

1.2. Support for the Intel Memory Protection Extensions

Intel's Memory Protection Extension (MPX) is a set of CPU instructions which brings increased robustness to software by checking pointer references usurped maliciously at runtime by buffer overflows. Intel MPX introduces new registers and new CPU instructions that operate on these registers. Modified compiler, runtime libraries and kernels can make use of these instructions to allow MPX hardware to prevent buffer overflow exploitation. This Linux release adds support in the Linux kernel. Note: CPUs with MPX support are not in the market and will be introduced with the Intel Skylake and Goldmont microarchitectures.

Recommended LWN article: Supporting Intel MPX in Linux

Recommended Intel article: Introduction to Intel Memory Protection Extensions

Code: commit, commit, commit, commit, commit, commit, commit

1.3. HSA driver for AMD GPU devices

HSA, or Heterogeneous System Architecture, is a type of computer processor architecture that integrates central processing units and graphics processors on the same bus, with shared memory and tasks. HSA allows different processor types (CPUs, DSPs, GPUs, etc..) to share system resources more effectively via HW features including shared pageable memory, userspace-accessible work queues, and platform-level atomics.

This release includes HSA support for radeon-family processors, and offers an API that is used by a HSA open-source library developed by AMD. For more details about the HSA library and possibilities that HSA offers to userspace apps, see the previous link.

Code: drivers/gpu/drm/amd/amdkfd

1.4. Android binder moved to stable

The Android binder code has been placed in the "staging" are of the kernel for a long time. The code, however, has been stable for many years now and it has been shipped in millions of phones. There has been reticences over binder, but no matter what comes in the future, Linux is going to have to support this API anyway, so might as well move it to the "real" part of the kernel.

Code: commit

1.5. ARM Coresight support

Coresight is an umbrella of technologies allowing for the debugging of ARM-based SoC. ARM has developed a HW assisted tracing solution by means of different components, each being added to a design at synthesis time to cater to specific tracing needs. Components are generally categorised as source, link and sinks and are (usually) discovered using the AMBA bus. "Sources" generate a compressed stream representing the processor instruction path based on tracing scenarios as configured by users. From there the stream flows through the Coresight system (via ATB bus) using links that are connecting the emanating source to a sink(s). Sinks serve as endpoints to the Coresight implementation, either storing the compressed stream in a memory buffer or creating an interface to the outside world where data can be transferred to a host

The Linux Coresight framework provides a kernel interface for the Coresight debug and trace drivers to register themselves with. It's intended to build a topological view of the Coresight components based on a DT specification and configure the right series of components when a trace source gets enabled.

For more details about the Linux Coresight framework: see Documentation/trace/coresight.txt

For details about ARM Coresight: http://www.arm.com/products/system-ip/debug-trace/

Code: drivers/coresight/

1.6. New architecture: Altera Nios II processors

This release adds support for Altera Nios II processors. Nios II is a 32-bit embedded-processor architecture designed specifically for the Altera family of FPGAs. Nios II incorporates many enhancements over the original Nios architecture, making it more suitable for a wider range of embedded computing applications, from DSP to system-control.

For more information about the Nios II processors see http://www.altera.com/literature/lit-nio2.jsp

For more information on how compiling and booting software for the Nios II platform: http://www.rocketboards.org/foswiki/Documentation/NiosIILinuxUserManual

Code: arch/nios2

1.7. Device Tree overlays

The Device Tree is a data structure for describing hardware that is passed to the operating system at boot time, rather than hard coding every detail of a device into an operating system. It is used most often in architectures like powerpc and ARM. The Device Tree is designed with static systems in mind, and has troubles adapting to custom expansion busses commonly found on consumer development boards like the BeagleBone or Raspberry Pi.

This release introduces Device Tree overlay support. Overlays are a method to dynamically modify part of the kernel's device tree and make changes to properties in a existing tree. This makes easier to support devices such as the BeagleBone or Raspberry Pi.

Recommended LWN article: Device tree overlays

Code: commit

1.8. Networking: support for routing and switching offloading

This release includes infrastructure to support hardware switch chips (in very generic meaning of the word "switch"). This include devices supporting L2/L3 but also various flow offloading chips, including switches embedded into SR-IOV NICs.

Also included is the first driver to benefit from this new switchdev infrastructure, it is a "rocker" driver for emulated switch chip implemented in qemu.

Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

1.9. NFSv4.2 support for hole punching and preallocation

This release adds support for hole punching and preallocation in NFSv4.2 setups

Code: commit, commit, commit, commit

2. Drivers and architectures

All the driver and architecture-specific changes can be found in the Linux_3.19-DriversArch page

3. File systems

  • ext4

    • Create nojournal_checksum mount option to disable journal checksumming (because the metadata_csum feature turns it on by default now) commit

    • Prevent online resize while using backup superblock commit

  • F2FS

    • Introduce "fastboot" mount option for reducing mount time as much as possible, even though normal performance can be sacrificed commit

    • Support storing directory entries inside inode page, can be enabled with "inline_dentry" mount option commit, commit, commit, commit

    • Add "dirsync" to allow sync operation on directory operations commit

  • AFFS

    • Add support to O_DIRECT commit

  • SquashFS

    • Add LZ4 compression support commit

  • Ceph

    • Support inline data feature commit

    • Add CREATE osd operation support commit

    • Add SETXATTR/CMPXATTR osd operations support commit

    • Message signature support commit

4. Memory management

  • Make debug-pagealloc boottime configurable with kernel parameter debug_pagealloc commit

  • Resurrect struct page extending code for debugging commit

  • memcontrol: lockless page counters commit

5. Block

  • dm cache: improve discard performance and memory usage commit

  • dm thin: performance improvement to discard processing. Discarding a fully provisioned 100G thin volume with 64k block size goes from 860s to 95s with this change commit

  • dm thin: throttle incoming IO, which helps dm-thinp perform better under heavy IO load commit

  • Remove artificial max_hw_sectors cap commit

6. Core (various)

  • Conversion of i_mmap_mutex to a rwsem The i_mmap_mutex is an important lock that is used to protect file backed pages. In this release it has been turned from a mutex to a read-write semaphore, improving performance in many cases. For benchmarks, see the first commit commit, commit, commit, commit, commit, commit, commit, commit

  • RCU locking: Remove CONFIG_RCU_CPU_STALL_VERBOSE, future kernel builds will always act as if CONFIG_RCU_CPU_STALL_VERBOSE=y commit

  • RCU locking: PREEMPT_RCU and TREE_PREEMPT_RCU serve the same function after TINY_PREEMPT_RCU has been removed, this release removes redundant TREE_PREEMPT_RCU config option commit

  • RCU: Rename CONFIG_RCU_BOOST_PRIO to CONFIG_RCU_KTHREAD_PRIO and use this value for both the per-CPU kthreads (rcuc/N) and the rcu boosting threads (rcub/n). Also add rcutree.kthread_prio boot option that sets the SCHED_FIFO priority of the RCU per-CPU and rcu boosting kthreads commit

  • IPC: increase SEMMSL, SEMMNI, SEMOPM commit

fault-inject: add ratelimit option commit

  • Introduce new interfaces to support hierarchy irqdomains commit

  • PCI/MSI: Support hierarchy irqdomain commit

  • PCI: Remove PCI ioapic driver: it is plannedto reimplement IOAPIC driver as an ACPI instead of PCI driver commit

  • Implement execveat() system call commit

  • Openfirmware: export Flattened Device Tree blob as /sys/firmware/fdt commit

  • Openfirmware: Move platform devices under /sys/devices/platform commit

7. Cryptography

  • Add user space interface for AEAD commit

  • crc32: Add ARM64 CRC-32 hardware accelerated module commit

  • sahara: add support for SHA-1/256 commit

  • caam: add support for AES working in Galois Counter Mode (commit), add support for AES in Galois/Counter Mode as an IPsec Encapsulating Security Payload mechanism (commit), add support for AES working in Counter mode (commit), add support for AES Counter Mode compliant with RFC3686 to be used along with authenc algorithms (md5, sha1, sha224, sha256, sha384, sha512) as one-shot aead algorithms (commit), add support for one-shot given crypt algorithms (commit), add support for Advanced Encryption Standard in Counter Mode as provided in IPsec implementation standard RFC3686 (commit), add support for AES-GMAC as an IPSec ESP mechanism to provide data origin authentication, but not confidentiality (commit)

8. Virtualization

  • virtio_scsi: support multi hw queue of blk-mq commit

  • tools: hv: introduce -n/--no-daemon option commit

  • hyperv: Add support for vNIC hot removal commit

  • KVM: remove unsupported and unused itanium support commit

9. Security

  • IMA

    • Added support for new kernel cmdline parameter ima_template_fmt, it allows users to provide a custom template format commit

    • Load X.509 certificate from the kernel commit

    • Require signature based appraisal commit

10. Tracing & perf

  • tracing: Allow NOT (!) to filter AND (&&) and OR (||) clauses commit

  • perf annotate: Support source line numbers in annotate commit

  • perf callchain: Support handling complete branch stacks as histograms commit, commit

  • perf probe: Add --quiet option to suppress output result message commit

  • perf record: Add new -I option to capture machine state registers at interrupt commit, commit

  • perf script: Add Python script to export to postgresql commit

  • perf tools: Add --buildid-dir option to set cache directory commit

  • perf tools: Add gzip decompression support for kernel module commit

11. Networking

  • net: allow setting ECN via routing table commit

  • IPv6: Add a sysctl (use_optimistic and optimistic_dad) that causes an interface's optimistic addresses to be considered equivalent to other non-deprecated addresses for source address selection purposes. Preferred addresses will still take precedence over optimistic addresses, subject to other ranking in the source address selection algorithm. This is useful where different interfaces are connected to different networks from different ISPs (e.g., a cell network and a home Wi-Fi network) commit

  • Generic receive offload: add a per device gro flush timer. This new mechanism is off by default, and shall be enabled by setting /sys/class/net/ethX/gro_flush_timeout to a value in nanosecond commit

  • Add SO_INCOMING_CPU socket option, which allows userspace to ask for the CPU upon what a packet was received/steered commit

  • Allow eBPF programs to be attached to sockets. See related LWN article commit

  • Add support for remote checksum offload for Generic UDP Encapsulation (GUE), which is a mechanism that provides checksum offload of encapsulated packets using rudimentary offload capabilities found in most network devices. The outer header checksum for UDP is enabled in packets and, with some additional meta information in the GUE header, a receiver is able to deduce the checksum to be set for an inner encapsulated packet. Effectively this offloads the computation of the inner checksum. Remote checksum offload is described in http://tools.ietf.org/html/draft-herbert-remotecsumoffload-00 . For more details and benchmarks, see the merge commit. Code: commit, commit, commit, commit, commit, commit

  • Netfilter nft_meta: add cgroup support commit

  • ipvlan: New IPVLAN driver. It is conceptually very similar to the macvlan driver with one major exception of using L3 for mux-ing /demux-ing among slaves. This property makes the master device share the L2 with it's slave devices. It allows to create virtual devices off of a main interface and packets will be delivered based on the dest L3 (IPv6/IPv4 address) on packets. All interfaces (including the main interface) share L2 making it transparent to the connected L2 switch. For more details see the Documentation commit

  • ip6_tunnel: Add support for tunnels with local or remote wildcard endpoints. With this we get a NBMA tunnel mode like we have it for IPv4 and sit tunnels commit

  • ip6_tunnel: allow to change mode for the fallback tunnel device, ip6tnl0 commit

  • ipv6: Allow sending packets through tunnels with wildcard endpoints commit

  • bpf: reduce verifier memory consumption commit

  • bridge: Add support for IEEE 802.11 Proxy ARP. This feature is defined in IEEE Std 802.11-2012, 10.23.13. It allows the AP devices to keep track of the hardware-address-to-IP-address mapping of the mobile devices within the WLAN network commit

  • tcp_cubic: add SNMP counters to track how effective is Hystart commit

  • sunrpc: add a debugfs rpc_xprt directory with an info file in it commit, add debugfs file for displaying client rpc_task queue commit

  • TIPC protocol: New netlink API, for detail see the merge commit. Code: commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • ethtool: Support for configurable RSS hash function commit

  • Infiniband: On-demand paging support for Infiniband. This lets userspace create non-pinned memory regions and have the adapter HW trigger page faults commit

  • NFC digital improvements for DEP support: Chaining, NACK and ATN support added commit, commit, commit, commit, commit, commit

  • Wireless

    • Add a new WoWLAN API to enable net-detect as a wake up trigger. Net-detect allows the device to scan in the background while the host is asleep to wake up the host system when a matching network is found commit

    • Allow scanning with random MAC addresses commit

    • Support creating wiphy devices with an optional name. This will be used by hwsim to have better automated control over virtual radio creation/deletion commit, commit

    • Allow channel switch with multiple channel contexts commit

    • Support creating vifs with specified mac address commit

    • Support creating wiphy w/out creating wlanX commit

    • Add support for driver tx power reporting commit

    • Add support for 802.11p OCB (Outside the Context of a BSS) mode commit

    • Allow to query mesh proxy path table commit, commit

    • Add WMM admission control support commit

    • minstrel rate control algorithm: add basic support for VHT rates <= 3SS@80MHz commit

    • Add extended channel switching capability if the driver supports CSA commit

    • Add TDLS channel switch commit, commit, commit

    • Allow any interface to send NL80211_CMD_CH_SWITCH_NOTIFY channel switch notifications to the userspace to let it decide whether other interfaces need to be moved as well. This is needed when we want a P2P GO interface to follow the channel of a station, for example commit

    • Send channel switch started notifications commit

    • mac80211-hwsim: Add HWSIM_CMD_GET_RADIO command commit, add ethtool stats support commit, support SGI-20 commit, support creating radios with specific name commit, support creating wiphy w/out creating wlanX commit, support destroying radio by name commit, support scanning with random MAC address commit

  • openvswitch

    • Add basic MPLS support to kernel: Allow datapath to recognize and extract MPLS labels into flow keys and execute actions which push, pop, and set labels on packets commit

    • Add support for OVS_FLOW_ATTR_PROBE. This new flag is useful for suppressing error logging while probing for datapath features using flow commands commit

    • Extend packet attribute for exporting egress tunnel info to userspace commit

  • IEEE 802.15.4

  • Bluetooth

    • Support for the Low Energy Secure Connections feature that's part of the Bluetooth 4.2 specification commit

    • Add logic for UUID filter handling commit

    • Add support for enabling Extended Scanner Filter Policies commit

    • Add support for Start Service Discovery command commit

  • mac802154

    • Add basic support for monitor mode commit

    • Add support for promiscuous mode commit

12. List of merges

13. Other news sites

Tell others about this page:

last edited 2015-02-12 16:32:14 by diegocalleja