The second half of the 7.0 merge window
The 7.0 merge window closed on February 22 with 11,588 non-merge commits total, 3,893 of which came in after the article covering the first half of the merge window. The changes in the second half were weighted toward bug fixes over new features, which is usual. There were still a handful of surprises, however, including 89 separate tiny code-cleanup changes from different people for the rtl8723bs driver, a number that surprised Greg Kroah-Hartman. It's unusual for a WiFi-chip driver to receive that much attention, especially a staging driver that is not yet ready for general use.
The most important changes included in this release were:
Architecture-specific
- The kernel has gained support for the RISC-V Zicfiss and Zicfilp extensions, which are used to provide hardware-assisted control-flow-integrity tracking in user space.
- LoongArch now supports 128-bit atomic compare-and-exchange instructions and symmetric multithreading (SMT) hotplugging. The latter can be controlled via sysfs configuration or boot parameters.
Core kernel
- The kernel's zram subsystem provides a compressed, in-memory block device that can optionally move data to a physical disk when memory fills up. Previously, the kernel would have to decompress the pages before writing them to the physical device. Now, page writeback can directly write zram-compressed data.
- The swap subsystem has changed to use a simplified swap table, which has allowed for considerable code cleanups; see this article and its successor for more information.
- The softlockup_panic sysctl can now be used to set a desired timeout after which the kernel should panic when it experiences a soft lockup, in multiples of 20 seconds. Previously, it was only an on-or-off setting.
Filesystems and block I/O
-
Laptop mode, a feature from the 2.6 kernel that
reduces the number of times a hard disk needs to spin up or down to save on
battery power,
has
been removed. Spinning hard drives have largely been supplanted by
solid-state drives, and "
the juice doesn't appear worth the squeeze anymore.
" - The conversion of filesystems to use large folios continues apace, with F2FS being the next to receive support. F2FS is a filesystem specialized for NAND flash devices.
- The ntfs3 filesystem has received a flurry of work after a long period of torpor. At the same time, work to replace the implementation entirely has been circulated on the mailing list. Despite approval from reviewer Christoph Hellwig, the new NTFS implementation was not merged this cycle.
- NFSD, the network file system daemon, has added a dynamically adjustable thread-pool that scales up and down depending on demand. The behavior can be controlled via NFSD's netlink interface.
- NFS protocol version 4.1 is the newly chosen default, although users can still select older versions in their build configuration.
- NFS will now refuse to export special kernel filesystems such as pidfs and nsfs, since these filesystems require special handling of permissions that NFSD does not do.
- Experimental support for POSIX ACLs has been added to NFSD, following a draft proposal to add them to NFS v4.2.
Hardware support
- Clock: Qualcomm Kaanapali clock controllers, Qualcomm SM8750 camera clock controllers, Qualcomm MSM8940 and SDM439 global clock controllers, Google GS101 DPU clock controllers, SpacemiT K3 clock controllers, Amlogic t7 clock controllers, Aspeed AST2700 clock controllers, and Loongson-2K0300 real-time clocks.
- GPIO and pin control: Spacemit K3 pin controllers, Atmel AT91 PIO4 SAMA7D65 pin controllers, Exynos9610 pin controllers, Qualcomm Mahua TLMM pin controllers, Microchip Polarfire MSSIO pin controllers, and Ocelot LAN965XF pin controllers.
- Graphics: Mediatek MT8188 HDMI PHYs, Mediatek Dimensity 6300 and 9200 DMA controllers, Qualcomm Kaanapali and Glymur GPI DMA engines, Synopsis DW AXI Agilex5 DMA devices, Atmel microchip lan9691-dma devices, and Tegra ADMA tegra264 devices.
- Industrial I/O: AD18113 amplifiers, AD4060 and AD4052 analog-to-digital converters (ADCs), AD4134 24-bit 4-channel simultaneous sampling ADCs, ADAQ767-1 ADCs, ADAQ7768-1 ADCs, ADAQ7769-1 ADCs, Honeywell board-mount pressure and temperature sensors, mmc5633 I2C/I3C magnetometers, Microchip MCP47F(E/V)B(0/1/2)(1|2|4|8) buffered-voltage-output digital-to-analog converters (DACs), s32g2 and s32g3 platform ADCs, ADS1018 and ADS1118 SPI ADCs, and ADS131M(02/03/04/06/08)24-bit simultaneous sampling ADCs.
- Input: FocalTech FT8112 touchscreen chips, FocalTech FT3518 touchscreen chips, and TWL603x power buttons.
- Media: MediaTek MT8196 video companion processors and external memory interfaces.
- Miscellaneous: Foresee F35SQB002G chips, TI LP5812 4x3 matrix RGB LED drivers, Osram AS3668 4-channel I2C LED controllers, Qualcomm Interconnect trace network on chip (TNOC) blocks, and DiamondRapids non-transparent PCI bridges.
- Networking: Glymur bandwidth monitors, Glymur PCIe Gen4 2-lane PCIe PHYs, SC8280xp QMP UFS PHYs, Kaanapali PCIe PHYs, and TI TCAN1046 PHYs.
- Power: ROHM BD72720 power supplies, Rockchip RK801 power management integrated circuits (PMICs), ROHM BD73900 PMICs, Delta Networks TN48M switch complex programmable logic devices (CPLDs), sama7d65 XLCD controllers, and Congatec Board Controller backlights.
- USB: AST2700 SOCs, USB UNI PHY and SMB2370 eUSB2 repeaters, QCS615 QMP USB3+DP PHYs, SpacemiT PCIe/combo PHY and K1 USB2 PHYs, Renesas RZ/V2H(P) and RZ/V2N USB3 devices, Google Tensor SoC USB PHYs, and Apple Type-C PHYs.
Miscellaneous
- The timerlat tool, which helps measure scheduler latency, has gained an option for running BPF programs when an operation exceeds a given latency threshold.
- The tracing subsystem has also gained an option for more human-readable bitmasks (displaying the bits as a list instead of raw hex) and a way to audit active filters and triggers in tracefs.
- A new build-time configuration option allows people to replace the Tux boot logo with an image of their choosing.
- A new "perf sched stats" command can capture scheduler statistics (schedstat counters) and report on them. It can also produce diffs between previous reports for ease of comparison.
Networking
- The AccECN congestion-notification protocol has been enabled for general use; see this article for details.
- The cake queue-management system has been extended to support multiple queues. This lets cake's rate-shaper scale across multiple CPUs.
- VSOCK sockets, which are used to communicate with virtual machines, have gained support for network namespaces.
- Work on 802.11bn (perhaps better known as "Ultra High Reliability" WiFi or "WiFi 8") has started, although there are many details to be finalized before it will be fully supported.
Virtualization and containers
- KVM has added a mask to correctly report CPUCFG bits on LoongArch, which provides LoongArch guests with the correct information about the CPU's capabilities.
- Some AMD CPUs support Enhanced Return Address Predictor Security (ERAPS) — a feature that removes the need for some security-related flushes of CPU state when a guest exits back to the host operating system. KVM added support for using ERAPS, and for advertising that support to guests.
- There's a new user-space control to configure KVM's end of interrupt (EOI) broadcast suppression (which prevents an EOI signal from being sent to all interrupt controllers in a system, making interrupts more efficient). Previously, KVM erroneously advertised support for EOI broadcast suppression, even though it wasn't fully implemented. Unfortunately, the flaw persisted long enough that some user-space applications came to depend on the behavior, so now that the feature has been implemented correctly, user-space programs will have to opt in when configuring KVM virtual machines.
- Guests can now request full ownership of performance monitoring unit (PMU) hardware, which provides more accurate profiling and monitoring than the existing emulated PMU.
- The kernel's Hyper-V driver has added a debugfs interface to view various statistics about the Microsoft hypervisor.
Internal kernel changes
-
The kernel has been
almost
entirely switched over to kmalloc_obj() through the use of
Coccinelle. Allocations of structure types and union types have all been
converted, but allocations of scalar types, which need manual checking, have
been left alone. Linus Torvalds followed up with a
handful
of
fixes for the
problems
that inevitably crop up after this kind of large change.
The new interface allocates memory based on the size of the provided type, which
should mean fewer mistakes with manual size calculations.
Where one would previously write one of these:
ptr = kmalloc(sizeof(*ptr), gfp); ptr = kmalloc(sizeof(struct some_obj_name), gfp); ptr = kzalloc(sizeof(*ptr), gfp); ptr = kmalloc_array(count, sizeof(*ptr), gfp); ptr = kcalloc(count, sizeof(*ptr), gfp); ptr = kmalloc(struct_size(ptr, flex_member, count), gfp);One can now write:ptr = kmalloc_obj(*ptr, gfp); ptr = kmalloc_obj(*ptr, gfp); ptr = kzalloc_obj(*ptr, gfp); ptr = kmalloc_objs(*ptr, count, gfp); ptr = kzalloc_objs(*ptr, count, gfp); ptr = kmalloc_flex(*ptr, flex_member, count, gfp);GFP_KERNEL is also now the default, and can be left out if that is the only memory allocation flag that one wishes to set.
The second-half of the merge window is often quieter, and this one was no
exception. There were a number of debugging features added, however, which is
always nice to see. At this point, the kernel will go through the usual
seven-or-eight release candidates as people chase down bugs introduced in this
merge window. The final v7.0 kernel should be expected around April 12 or 19.
