|
|
Subscribe / Log in / New account

The 6.12 merge window begins

By Jonathan Corbet
September 20, 2024
As of this writing, 6,778 non-merge changesets have been pulled into the mainline kernel for the 6.12 release — over half of the work that had been staged in linux-next prior to the opening of the merge window. There has been a lot of refactoring and cleanup work this time around, but also some significant changes. Read on for a summary of the first half of the 6.12 merge window.

The most significant changes pulled to date include:

Architecture-specific

  • The Arm "permission overlay extension" feature is now supported, making memory protection keys available on that architecture.
  • There are now separate configuration options for each x86 Spectre mitigation technique, allowing kernels to be customized to specific processor models.
  • The Loongarch, 64-bit Arm, PowerPC, and s390 architectures have all gained support for the vDSO implementation of the getrandom() system call.

Core kernel

  • Io_uring operations can now have absolute timeouts, along with the relative timeouts that were already supported.
  • The remaining pieces of the deadline server mechanism have been merged. Deadline servers replace realtime throttling with a special server task running under the deadline scheduler; it ensures that normal-priority tasks get a small chance to run even if a realtime task is monopolizing the CPUs.
  • Also completed in this cycle was the EEVDF scheduler, which replaces the completely fair scheduler and, with luck, provides better response times.
  • Some of the preliminary work needed for the merging of the extensible scheduling class (sched_ext) has landed. The pull request for sched_ext itself has also been sent, but has not been acted upon as of this writing; it seems likely to be pulled before the merge window closes.
  • A simple series allowing realtime preemption to be configured in mainline kernels has been merged. This change marks a milestone in a 20-year development effort to bring realtime response to a general-purpose kernel.

Filesystems and block I/O

  • There is a new fcntl() operation (F_CREATED_QUERY) that allows an application to determine whether a file opened with O_CREAT was actually created (rather than already existing).
  • The name_to_handle_at() system call has gained the ability to provide unique, 64-bit mount IDs, eliminating a racy workaround needed until now; see this commit for some more information.
  • The size of struct file within the kernel has been reduced from 232 bytes to 184; that will provide significant memory savings on systems running file-heavy workloads. See this commit for a description of how that reduction was accomplished.
  • It is no longer possible to mount a filesystem on top of any of the ephemeral files in /proc — the files under /proc/PID/fd, for example. Allowing such mounts makes little sense and can be a security problem, so it was removed as a bug; see this commit for more information.
  • The namespace filesystem (nsfs) has gained the ability to provide more information about mount namespaces; see this commit for details.
  • The EROFS filesystem can now mount filesystems directly from images stored in files; see this commit for more details.
  • The XFS filesystem has gained two ioctl() commands that will exchange the contents of two files. XFS_IOC_START_COMMIT sets up the exchange, while XFS_IOC_COMMIT_RANGE actually effects the exchange, but only if the second file has not changed in the meantime. This commit contains a man page for these operations.

Hardware support

  • GPIO and pin control: Analog Devices ADP5585 GPIO controllers.
  • Input: Goodix GT7986U SPI HID touchscreens.
  • Miscellaneous: Rockchip true random number generators, Arm NI-700 performance-monitoring units, Mobileye EyeQ reset controllers, Nuvoton MA35D1 SDHCI controllers, Analog Devices ADP5585 pulse-width modulators, and Microsoft Surface thermal sensors.
  • Networking: AMCC QT2025 PHYs (implemented in Rust), Rockchip CAN-FD controllers, Realtek Automotive Switch 9054/9068/9072/9075/9068/9071 PCIe Interfaces, OPEN Alliance TC6 10BASE-T1x MAC-PHYs, and Microchip LAN8650/1 Rev.B0/B1 MACPHY Ethernet chips.
  • Sound: MediaTek MT6357 codecs.

Networking

  • The device memory TCP patch set has been merged. It provides an optimized data-transfer path for applications that are transferring data between the network and a peripheral device without the need to go through the CPU.

Security-related

  • The FOLL_FORCE removal patch has been merged. This internal kernel flag had been used by /proc/PID/mem, making it an attractive target for attackers. Its removal can break some systems, so it is not effective by default; the proc_mem.force_override= command-line parameter can be used to change it. See this commit for a bit more information.
  • The security-module subsystem now uses static calls for almost all callbacks, improving both performance and security.
  • The Integrity Policy Enforcement security module has been added. According to the merge message: "the basic motivation behind IPE is to provide a mechanism such that administrators can restrict execution to only those binaries which come from integrity protected storage". See this documentation commit for more information.

Virtualization and containers

  • 64-Bit Arm kernels can now run as a guest on protected KVM systems.

Internal kernel changes

  • msleep() has long added an extra jiffy (scheduler clock tick) to the requested sleep time to ensure that the caller did not wake too soon. That padding has not been necessary to meet that requirement for some time, so it has been removed in 6.12.
  • The final set of printk() improvements has been merged. This was the last significant piece of the realtime preemption patch set that remained out of tree.
  • The interface to kmem_cache_create() has changed significantly. It now accepts a pointer to a kmem_cache_args structure describing how the cache should be created; at this time, that structure can be best seen in this commit. Thanks to some macro magic, calls to the older API still work as expected, but those calls can be expected to be migrated to the new API over time.

The 6.12 merge window will likely remain open through September 29. Once it closes, LWN will be back with a summary of the rest of the changes merged for the next major kernel release.

Index entries for this article
KernelReleases/6.12


to post comments


Copyright © 2024, 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