The second half of the 4.17 merge window
Core kernel
- The CLOCK_MONOTONIC and CLOCK_BOOTTIME clocks used
to differ only in that the latter is fast-forwarded after a
suspend-and-resume cycle. As of 4.17, CLOCK_MONOTONIC is
also moved
forward to reflect the time that the system spent suspended. As a
result, the two timers are now identical and have been unified within
the kernel. Among other things, that change eliminates a potentially
surprising behavior wherein the offset between the monotonic and
realtime clocks would change after a resume.
Thomas Gleixner noted:
"
There might be side effects in applications, which rely on the (unfortunately) well documented behaviour of the MONOTONIC clock, but the downsides of the existing behaviour are probably worse.
"If applications do break, this change may have to be reverted. Meanwhile, there is a new clock (CLOCK_MONOTONIC_ACTIVE) that only advances when the system is actually running.
- The new INOTIFY_IOC_SETNEXTWD ioctl() command allows inotify users to specify the number of the descriptor they would like to see returned for the next watch descriptor they create. This is used for checkpoint/restart.
- After a few years of waiting, the histogram trigger feature was added to the tracing subsystem. This mechanism enables the easy creation, in kernel space, of histograms from tracing data.
- The mmap() system call supports a new MAP_FIXED_NOREPLACE option. Like MAP_FIXED, it tries to place the new memory region at a user-supplied address. Unlike MAP_FIXED, though, it will not replace an existing mapping at that address; instead, it will fail with EEXIST if such a mapping exists. This is the change that was discussed last year as MAP_FIXED_SAFE; it seems that the battle over the proper name for the feature has finally been resolved.
Architecture-specific
- The ARM architecture has gained support for the "system control and management interface", or SCMI. It is a set of standards for system management and, in particular power management.
- 64-Bit PowerPC systems now have the ability to address up to 4PB of memory.
- Support for POWER4 processors was accidentally (they swear) broken in 2016, and nobody complained. So support for those processors has been removed entirely on the assumption that nobody is using them anymore.
Filesystems
- The overlayfs filesystem can, at times, present different inode numbers for the same file at different times, potentially confusing applications that use those numbers. The "xino" option added for 4.17 will store the filesystem ID in the upper part of the inode number, which allows it to present inode numbers that will not change over time. Some information can be found in Documentation/filesystems/overlayfs.txt.
Security-related
- The kernel now supports the Speck cipher, a block cipher that is said to outperform AES on systems without hardware AES support.
- AES encryption in Cipher Feedback Mode is now supported; this is required for TPM2 cryptography.
- The SM4 symmetric cipher algorithm is supported; it is "
an authorized cryptographic algorithm for use within China
" according to commit. - The SCTP protocol now has complete SELinux support; see Documentation/security/SELinux-sctp.rst for details.
- The AppArmor security module has gained basic support for the control of socket use. See this commit for a little bit of documentation.
Hardware support
- Audio: Texas Instruments PCM1789 codecs, AKM AK4458 and AK5558 codecs, Rohm BD28623 codecs, Motorola CPCAP codecs, Maxim MAX9759 speaker amplifiers, ST TDA7419 audio processors, and UniPhier AIO audio subsystems,
- Cryptographic: ARM TrustZone CryptoCell security processors and TI Keystone NETCP SA hardware random-number generators.
- Industrial I/O: Melexis MLX90632 infrared sensors, Analog Devices AD5272 digital potentiometers, On Semiconductor LV0104CS ambient light sensors, and Microchip MCP4017/18/19 digital potentiometers.
- USB: HiSilicon STB SoCs COMB PHYs, AMLogic Meson GXL and GXM USB3 PHYs, STMicroelectronics STM32 USB HS PHY controllers, HiSilicon INNO USB2 PHYs, Motorola Mapphone MDM6600 USB PHYs, Pericom PI3USB30532 Type-C cross switches, ELAN USB touchpads, and devices supporting USB class 3 audio.
- Miscellaneous: QCOM on-chip GENI based serial ports, MediaTek SoC gigabit Ethernet controllers, Raspberry Pi 3 GPIO expanders, Nintendo Wii GPIO controllers, Spreadtrum SC9860 platform GPIO controllers, RAVE SP power buttons, PhoenixRC flight controller adapters, HiSilicon hi3660 mailbox controllers, Socionext SynQuacer I2C controllers, Intersil ISL12026 realtime clocks, Nuvoton NPCM750 watchdog timers, Mediatek MT2701 audsys clocks, Allwinner H6 clock controllers, Silicon Labs 544 I2C clock generators, Synopsys DesignWare AXI DMA controllers, and MediaTek High-Speed DMA controllers.
Other
- The ABI for 32-bit RDMA users has changed in incompatible ways. The changes are justified with the claim that there are no actual users of the 32-bit mode now, but some may be coming in the future.
Internal kernel changes
- The way that system calls are invoked on the x86-64 architecture has been reworked to make it more uniform and flexible. The new scheme has also been designed to prevent unused (but caller-controlled) data from getting onto the call stack — where it could perhaps be used in a speculative-execution attack.
- The lexer and parser modules used by the kernel build process are now themselves built on the target system (requiring flex and bison) rather than being shipped in the kernel repository.
As expected, the final diffstat for this merge window shows that more lines of code were deleted than added — 191,000 more. This is only the third time in the kernel's history that a release has been smaller than its predecessor.
Also possibly worthy of note is that the final
SCSI pull pushed the kernel repository to over six-million objects.
Linus added: "I was joking around that that's when I should switch to
5.0, because 3.0 happened at the 2M mark, and 4.0 happened at 4M
objects. But probably not, even if numerology is about as good a reason as
any.
"
This kernel now enters the stabilization process, which will culminate
in the final 4.17 (or maybe 5.0?) release in early June.
| Index entries for this article | |
|---|---|
| Kernel | Releases/4.17 |