3.15 Merge window, part 1
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.
- 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.
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 | |
---|---|
Kernel | Releases/3.15 |