6.18 merge window, part 1
At the time of writing, there have been 9,099 commits in the 6.18 merge window, 8,475 non-merges and 624 merges. The changes so far include core-kernel, graphics, and networking work, among others. There are no big surprises, but several items that were discussed at this year's LFSMM+BPF Summit have now been merged.
The most significant changes merged so far include:
Architecture-specific
- The Spectre mitigations for Arm Cortex-A720 CPUs now also apply to Cortex-A720AE CPUs.
- PowerPC now supports BPF arenas and some associated atomic instructions, as does RISC-V. These instructions allow BPF programs to atomically load and store values in BPF arenas for, among other purposes, asynchronous communication with user space.
- x86 has gained a microcode= command-line option to control the behavior of the microcode loader. The new option replaces microcode.force_minrev, although it will also cover broader microcode-loader options in the future.
- The kernel can now use more than 255 CPUs as an x86 guest on FreeBSD version 15.0 or later.
- The nios2 architecture now supports the clone3() system call.
Core kernel
- Kernel namespaces (such as network namespaces) can now be referred to using file handles. The use of file handles to refer to pidfds was previously supported; this change extends that support to namespaces.
- Zswap now uses zsmalloc directly, so the zpool compression-configuration mechanism has been removed.
- Mixed completion queue event (CQE) sizes are now supported in the same ring buffer. With io_uring's growing complexity, users may want to query for the presence of different capabilities; that is also now supported.
Filesystems and block I/O
- The bcachefs filesystem has been removed in its entirety.
- pwritev2() calls can now pass RWF_NOSIGNAL to suppress SIGPIPE signals when writing to disconnected pipes or sockets.
- Procfs now takes an option to specify the associated PID namespace.
- Errors about a mounted filesystem exposing data from a different user namespace will soon be visible to users with a recent version of mount.
- A set of deprecated XFS options has been disabled by default. Several obsolete mount options have also been removed, but online fsck is now enabled by default. Online fsck is no longer considered experimental, and so should be generally usable.
- A new set of lockless bitmaps will improve the performance of the filesystems that use them.
Hardware support
- GPIO and pin control: Nuvoton NCT6694 GPIO controllers, Maxim MAX7360 GPIO and pin controllers, AAeon UP board FPGA pin controllers, NVIDIA Tegra186 pin controllers, Renesas RZ/T2H and RZ/N2H controllers, Broadcom STB pin controllers, Qualcomm Glymur pin controllers, and Qualcomm SDM660 LPASS LPI pin controllers.
- Graphics: Solomon SSD2825 MIPI bridges, Waveshare DSI2DPI bridges, Radxa Ra620 bridges, Realtek RTD2171 bridges, MT8189 Chromebook panels, BOE NV140WUM-N64 panels, SHP LQ134Z1 panels for Dell XPS 9345s, Olimex LCD-OLinuXino-5CTS panels, Samsung AMS561RA01 panels, Hydis HV101HD1 panels, Bestar BSD1218-A101KL68 LCD panels, Ampire AMP19201200B5TZQW-T03 panels, EDT ETML0700Z8DHA panels, Mali G710, G510, G310, Gx15, Gx20, and Gx25 GPUs, Rockchip NPU neural processors, Rockchip RK3576 SoCs, Mayqueen Pixpaper eInk displays, T-HEAD TH1520 GPUs, and Arm Mali CSF-based GPUs (driver written in Rust).
- Hardware monitoring: Kontron SMARC-sAM67 SoCs, GPD device sensors, Monolithic Power Systems MP29502, MP2869, MP29608, MP5998, MP29612, and MP29816 PWM controllers, various ASUS GAMING WIFI motherboard sensors, Texas Instruments INA700 and INA780 power monitors, NXP P3T1750 temperature sensors, Analog Devices sq24905c hotswap controllers, Renesas RAA228244 and RAA228246 PWM controllers, and Sensirion SHT20 and SHT25 humidity and temperature sensors.
- Industrial I/O: Tegra 256 GPIO controllers, Loongson-2K0300 GPIO controllers, Amlogic AL113L2 SPI controllers, Atmel SAMA7D65 SPI controllers, and Atmel SAM9x7 SPI controllers.
- Input: Maxim MAX7360 key switch controllers.
- Interrupt controllers: Aspeed AST2700 SCU interrupt controllers.
- Media: OmniVision OV6211 and OG0VE1B sensors.
- Memory: AMD 0x1a EDAC memory, AMD VersalNET memory controller, and EDAC on ADM Cortex A72 cores.
- Miscellaneous: Loongson Security Engine, RNG, and TPMs, TI TPS6594 power buttons, TI BQ257xx charger ICs, Lumissil Microsystems IS31FL3236A LED drivers, QNAP MCU status LEDs, Loongson-2K BMC IPMI devices, Nuvoton NCT6694 I2C adapters, Nuvoton NCT6694 socket CANfd controllers, Nuvoton NCT6694 watchdog timers, Nuvoton NCT6694 hardware monitors, Maxim MAX7360 pulse-width modulators, Maxim MAX7360 rotary encoders, Amlogic A4 SPI flash controllers, Intel Bay / Cherry Trail Dollar Cove TI batteries, Analog Devices I3C controllers, Aspeed AST2700 reset controllers, and Qualcomm trusted execution environment controllers.
- Networking: Huawei 3rd gen NICs, SpacemiT K1 Ethernet MACs, and Qualcomm packet-process engines, Skyworks Si3474 power-sourcing equipment, NXP NETC V4 timer-based PTP clocks, TI PRU ICSSM Ethernet ports, and Allwinner sun55i GMAC200 Ethernet controllers.
- Power: Maxim MAX77838 power controllers, NXP PF0900 and PF5300 power controllers, Richtek RT5133 power controllers, SpacemiT P1 power controllers, Amlogic S6/S7/S7D power-domain controllers, IMX i.MX91 power-domain controllers, PXA1908 power-domain controllers, AN7583 SoCs, ipq5424 frequency controllers, MT8196 frequency controllers, and AM62D2 frequency controllers.
- Regulator: NXP PF0900/PF0901/PF09XX regulators, NXP PF5300/PF5301/PF5302 regulators, Richtek RT5133 PMIC regulators, Maxim 77838 regulators, and SpacemiT P1 regulators.
- SoCs: ESWIN EIC7700 SOCs and Renesas RZ/T2H, RZ/N2H, RZ/T2H, and RZ/N2H SoCs.
- Sound: Qualcomm PM4125 codecs, TI PCM1754 digital-to-analog converters, TI TAS2783A audio amplifiers, Realtek RT1321, Shanghai FourSemi FS2104/5S auioo amplifiers, Tascam US-144mkII USB sound devices, and Presonus S1824 USB sound devices.
- Thermal: Renesas RZ/G3S and Renesas RZ/G3E SoCs.
Networking
- The work on AccECN, for accurate TCP congestion notification, has been merged.
- UDP receive performance has also been improved, by 47%, according to Eric Dumazet's measurements.
- The direct internal buffer sharing (dibs) work that was discussed at Netdev 0x19 has been merged.
- The default socket receive buffer size has been raised to 4MB.
Security-related
- The audit subsystem can now handle multiple Linux security modules (LSMs) being enabled at the same time. This is part of other work throughout the LSM subsystem to make multiple simultaneously enabled LSMs work smoothly.
- The kernel now supports signing BPF programs — although security policies that can take advantage of this are still in progress.
- Encrypting TCP connections with PSP is now possible as well, with the documentation covering the details.
Virtualization
- The new virtio SPI driver lets SPI device access be provided to virtual machines.
Internal kernel changes
- Filesystem encryption and verification information has been moved out of struct inode, leaving the filesystems that don't implement those features with a lower memory footprint.
- The WQ_UNBOUND workqueue flag is being retired in favor of a WQ_PERCPU flag with the opposite meaning, since many callers were using a per-CPU workqueue when a global workqueue would have sufficed.
- A new "transitional" attribute for kernel configuration options should make changing the names of options less fraught. Options marked as transitional will not be selectable in user interfaces such as make menuconfig, and won't be included in generated configuration files, but will still be understood and processed. That lets a kernel developer set up a new option name with a default setting based on the old option, and anyone running make olddefconfig will be seamlessly migrated.
- The Rust bindings now include now support for Linux-kernel-memory-model-compliant atomic operations, using maple trees, creating DebugFS files, and manipulating bitmaps. A number of other APIs relevant to writing drivers have also been added.
- The kernel now requires LLVM 15.0.0 or newer to build; users of Debian Bookworm and Ubuntu Jammy may need to upgrade their toolchains to continue building the kernel with Clang.
- The work on sheaves, which improves the performance of the slab allocator, has arrived.
- The TEE subsystem can now handle allocating and managing hardware-protected memory.
- The new kmalloc_nolock() allows for allocation with no additional locks taken, a capability that prompted significant discussion on the mailing list.
6.18 is shaping up to be a promising release. While there are no earth-shaking changes, there are a lot of disparate improvements. When the merge window closes, LWN will have a second article on all the changes that were merged after this article was written.
| Index entries for this article | |
|---|---|
| Kernel | Releases/6.18 |
