|
|
Subscribe / Log in / New account

3.15 Merge window, part 1

By Jonathan Corbet
April 9, 2014
As of this writing, 11,321 non-merge changesets have been pulled into the mainline repository during the 3.15 merge window. That makes 3.15 one of the busiest development cycles ever, though it has not yet surpassed 3.10, which saw 11,963 changes pulled during the merge window. Despite all these changes, the list of new features is not as big or as impressive as one might expect; much of the work being merged is under-the-covers cleanup and restructuring.

That said, there is still a lot of interesting stuff brewing for 3.15. User-visible changes in this release will include:

  • The latency tolerance patches have been added to the power-management quality-of-service subsystem. This code allows the kernel (or user space) to communicate latency requirements to peripheral devices, which should use that information to avoid going into overly deep sleep states.

  • The active/inactive list balancing patch set has found its way into the memory management subsystem at last. This work tries to detect situations where the kernel is pushing pages out of memory, only to fault them back in shortly thereafter; when that happens, the sizes of the LRU lists are adjusted in an attempt to improve the situation. The result should be improved performance for workloads with large working sets.

  • The new renameat2() system call adds the ability to atomically exchange two files. There is also a RENAME_NOREPLACE flag that prevents a rename operation from replacing an existing file.

  • The file-private POSIX locks feature has been merged.

  • The FUSE (filesystems in user space) subsystem can now perform writeback caching, improving performance on write-heavy workloads.

  • The UBI flash translation layer has gained a driver that can make a flash device appear to be a (read-only, for now) block device. That enables the use of any filesystem on top of a raw flash device.

  • The ext4 and XFS filesystems now support the new FALLOC_FL_ZERO_RANGE and FALLOC_FL_COLLAPSE_RANGE operations. XFS also has added support for the O_TMPFILE flag.

  • The device mapper has a new "dm-era" target that can maintain a list of blocks changed during a user-defined period of time. See Documentation/device-mapper/era.txt for more information.

  • The device tree information found in /proc/device-tree has been removed. That same information is available in sysfs under /sys/firmware/devicetree/base, so /proc/device-tree is now a symbolic link to that location.

  • The ipset packet filtering interface has a new "hash:ip,mark" set type for matching packets with specific marks added by higher-level filtering tools.

  • The just-in-time compiler for BPF-based packet filtering code has been extensively reworked, with a different instruction set. See the "kernel internals" section of Documentation/networking/filter.txt for details.

  • The function tracer can now be used within multi-buffer trace instances, allowing each instance to trace a different set of function calls.

  • User-space probing with uprobes is now supported on the ARM architecture.

  • The per-thread VMA caching patch set has been merged; it should improve memory management performance for a number of workloads.

  • The zram compressed in-memory swap mechanism can now optionally use LZ4 compression.

  • The Tile architecture now supports the perf events subsystem.

  • Support for the ancient Unisys ES7000, IBM Summit/EXA, SGI Visual Workstation, and NUMAQ x86 subarchitectures has been removed, as has support for PowerPC-based Motorola PrPMC2800 boards.

  • New hardware support includes:

    • Processors and systems: MIPS systems using the Coherent Processing System architecture, Loongson 3 processors, Marvell Armada 375, 380, and 385 systems, and Broadcom BCM470X and BCM5301X systems. Note that support for numerous ARM-based boards has also been added, but that support consists entirely of device tree changes. Plans to move the device tree data out of the kernel tree still exist, but keep getting pushed back.

    • Audio: Texas Instruments tlv320aic31xx codecs, TI PCM512x codecs, Analog Devices ADAU1977, ADAU1978 and ADAU1979 audio codecs, Cirrus Logic CS42448/CS42888 codecs, Intel "Smart Sound Technology" devices, Intel Haswell Lynxpoint DSPs, Intel Baytrail/RT5640 codecs, and SiRF internal codecs.

    • Block: Allwinner A10/A20 AHCI SATA controllers, APM X-Gene AHCI SATA controllers, and DaVinci DA850 AHCI SATA controllers.

    • Graphics: NXP PTN3460 DisplayPort-to-LVDS bridges, Samsung EXYNOS DRM MIPI-DSI devices, LD9040 RGB/SPI panels, and S6E8AA0 DSI video mode panels.

    • Hardware monitoring: Linear Technology LTC2945 I2C system monitors, Linear Technology LTC4261 positive voltage hot swap controller I2C interfaces, Linear Technology LTC4222 dual hot swap controller I2C interfaces, and Texas Instruments ADC128D818 system monitors.

    • Input: Cirrus Logic CLPS711X matrix keypads and GPIO buttons on Intel Bay Trail-based tablets.

    • Miscellaneous: NVIDIA Tegra watchdog timers, devices connected via the MEN Chameleon Bus including MEN 16z188 analog-to-digital converters, TI Asynchronous External Memory Interface controllers, Silabs Si7005 relative humidity and temperature sensors, Lite-On LTR-501ALS-01 ambient light and proximity sensors, Freescale vf610 analog-to-digital converters, Xilinx analog-to-digital converters, Keithley Metrabyte DAC02 compatible ISA cards, Silicon Labs CP2112 HID USB-to-SMBus bridges, Dallas/Maxim DS1347 realtime clocks, LSI ZEVIO SoC memory mapped GPIO controllers, Synopsys DesignWare APB GPIO controllers, ARM Cirrus Logic CLPS711X SYSFLG1 MCTRL GPIO controllers, Freescale FlexTimer Module PWM controllers, Cirris Logic CLPS711X PWM controllers, Intel LPSS PWM controllers, and Realtek USB 2.0 card readers.

    • Networking: Bluetooth HCI controllers with Nokia H4 extensions, Broadcom 7xxx SOCs internal PHYs, Broadcom GENET internal MACs, Realtek RTL8723BE PCIe wireless network adapters, Texas Instruments TRF7970a NFC controllers, Redpine Signals 91x WLAN adapters, Altera Triple-Speed Ethernet MACs, Samsung SXGBE 10G Ethernet controllers, and Altera SOCFPGA Ethernet controllers.

    • Power: Broadcom BCM590xx PMU regulators, Samsung S2MPA01 and S2MPS14 voltage regulators, TI TPS65218 power management chips, Broadcom BCM590xx power management units, and devices connected via the System Power Management Interface spec, including Qualcomm MSM SPMI controllers.

    • SPI: Qualcomm QUP SPI controllers, Allwinner A10 and A31 SPI controllers, and Xtensa xtfpga SPI controllers.

    • USB: Exynos5250 Sata SerDes PHYs, Samsung USB 2.0 PHYs, Allwinner sunxi SoC USB PHYs, and Realtek RTL8723AU USB wireless network adapters.

    • Video4Linux: Micronas DRX-J demodulators, TI LM3646 dual flash devices, ImgTec infrared decoders, Mirics MSi001 silicon tuners, Realtek RTL2832 silicon tuners, Samsung S5K6A3 sensors, and EXYNOS4x12 FIMC-IS ISP direct DMA capture interfaces.

Changes visible to kernel developers include:

  • Rather later than anybody might have expected, the sleep_on() family of functions has been removed from the kernel.

  • There is a new "locktorture" module which performs various types of stress testing on kernel locking primitives.

  • The kernel address-space layout randomization code has been extended to randomize the base address for loadable modules. A single random offset is chosen once by the kernel and used with each module as it is loaded.

  • The arm64 architecture now has support for the KGDB kernel debugger.

  • Basic CPU topology support has been added to the arm64 architecture, allowing the kernel to represent the system's architecture as described by the firmware.

  • The PREPARE_WORK() and DELAYED_WORK() workqueue macros have been removed. The interface was prone to subtle errors and was never used widely within the kernel.

  • The timer broadcast patches have been merged, allowing the delivery of timer events to a sleeping CPU even if that CPU's timers stop while it is in the sleep state.

  • The rewriting of the core control group code continues. Changes merged this time around include a full transition to the new "kernfs" virtual filesystem for control files, some steps toward the unified hierarchy model, and the removal of the ability to build controllers as modules.

  • There is a new method (map_pages()) in struct vm_operations_struct; its job is to perform opportunistic "fault around" mapping of pages, hopefully reducing page faults and improving performance. Note that map_pages() is not allowed to block. The page cache uses this function to map surrounding pages on page faults. A new debugfs knob (fault_around_order) enables playing with and tuning this functionality.

The merge window can be expected to remain open until around April 13. At this point, though, most of the major trees have been pulled, so there probably will not be a lot of changes showing up in the last few days. Perhaps the biggest remaining question mark is the support for link-time optimization (LTO). This toolchain feature has the potential to improve kernel performance while reducing its total size; this happens at the cost of an increased build time. Linus is unconvinced by the merits of this patch set and is asking for more information. A number of other developers have asked for its inclusion, but it is not yet clear whether that will be enough to turn the tide.

Tune in next week for a summary of the final changes merged for this development cycle.

Index entries for this article
KernelReleases/3.15


to post comments


Copyright © 2014, Eklektix, Inc.
This article may be redistributed under the terms of the Creative Commons CC BY-SA 4.0 license
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds