KernelNewbies:

Changes done in each Linux kernel release. Other places to get news about the Linux kernel are LWN kernel status or the Linux Kernel mailing list (there is a web interface in www.lkml.org or lore.kernel.org/lkml). The lore.kernel.org/lkml/ archive is also available via NTTP if you prefer to use a newsreader: use nntp://nntp.lore.kernel.org/org.kernel.vger.linux-kernel for that. List of changes of older releases can be found at LinuxVersions. If you're going to add something here look first at LinuxChangesRules!

You can discuss the latest Linux kernel changes on the New Linux Kernel Features Forum.

Linux 6.13 has been released on Sunday, 19 Jan 2025.

Summary: This release includes a new lazy preemption model that provides more preemption opportunities than the voluntary preemption mode used often as default, but not as many as the full preemption mode. There is also support for fine-grained timestamps, without the performance overhead that would often come with providing high-resolution timestamps for every single file; lightweight guard pages; support for storage with atomic writes in XFS and Ext4; support for NAPI suspension during idle periods; a new networking device API to configure TX H/W shaping; various io_uring improvements; ARM support for running Linux in a protected VM under the Arm Confidential Compute Architecture; ARM support for user-space shadow stacks; and a referenced counting mechanism for files that is slightly more scalable. As always, there are many other features, new drivers, improvements and fixes. Also, you might be interested in the LWN merge window report: part 1, part 2

1. Prominent features

1.1. Lazy preemption: a bit more of preemption

The Linux kernel support four different preemption modes. There is a "full preemption" mode, but since preemption is usually at odds with performance, most Linux kernels default to using the "voluntary preemption" mode, which provides some preemption opportunities, but it's not full preemption.

This release adds a "lazy preemption" mode that aims to be a bridge between the voluntary and the full preemption mode. It optimizes fair-class preemption by delaying preemption requests to the tick boundary, while working as full preemption for RR/FIFO/DEADLINE classes.

Recommended LWN article: The long road to lazy preemption

1.2. Support for multi-grain file timestamps: fine-grained timestamps, without the performance overhead

Some applications (notably, NFS) need higher-resolution timestamps on files, but higher resolution timestamps on all files can increase the rate at which metadata needs to be written to the disk. In this release, Linux adds support for fine-grained timestamps, but only when processes do query that information for a file. This allows for finer-grained timestamps without the performance overhead.

Documentation: Multigrain Timestamps

Recommended LWN article: Rethinking multi-grain timestamps

1.3. Support for atomic writes

There is some hardware that supports atomic write operations, by which we mean writes to write data that is larger than the storage's sector size in an atomic way. This release adds support for atomic writes in XFS, Ext4's Direct I/O, and some md RAID modes.

Recommended LWN article: Atomic writes without tears

1.4. NAPI suspension for more efficient networking

Interrupt mitigation in networking loads can be accomplished with busy polling, and can be quite efficient, but it cannot effectively support both low- and high-load situations.

This release adds a new packet delivery mode that properly alternates between busy polling and interrupt-based delivery depending on busy and idle periods of the application. During a busy period, the system operates in busy-polling mode, which avoids interference. During an idle period, the system falls back to interrupt deferral, but with a small timeout to avoid excessive latencies

1.5. New networking device API to configure TX H/W shaping

There is a plurality of shaping-related drivers API, but none flexible enough to meet existing demand from vendors. This release introduces new device APIs to configure in a flexible way TX H/W shaping. The new functionalities are exposed via a newly defined generic netlink interface and include introspection capabilities.

API documentation: Family net-shaper netlink specification

1.6. Lightweight guard pages

A guard page is a page that, when accessed, cause a fatal signal to arise. Installing a guard page in certain places can be useful in various situations. Currently users must establish PROT_NONE ranges to achieve this, but this is costly memory-wise - it needs a VMA for each and every one of these regions AND they become unmergeable with surrounding VMAs

This release implements a MADV_GUARD_INSTALL flag for the madvise() system call which implements a guard page, but without that overhead, thus making it cheaper and easier to use these pages.

1.7. Various io_uring improvements

This release adds support for various io_uring features:

  • Add support for ring resizing, so apps can start with a small ring and grow it as needed
  • Support for sending a sync message to another ring, without having a ring available to send a normal async message
  • Add support for just doing partial buffer clones, rather than always cloning the entire buffer table
  • Add support for fixed wait regions, rather than needing to copy the same wait data tons of times for each wait operation
  • Add static NAPI support, where a specific NAPI instance is used rather than having a list of them available that need lookup
  • Regions, param pre-mapping and reg waits extension: it's a better and more generic API for ring/memory/region registration, and it changes the API extending registered waits to be a generic parameter passing mechanism. That will be useful in the future to implement a more flexible rings creation, especially when we want to share same huge page / mapping
  • Add support for hybrid IO polling, which is a variant of strict IOPOLL but with an initial sleep delay to avoid spinning too early and wasting resources on devices that aren't necessarily in the < 5 usec category wrt latencies

1.8. ARM64 virtualization and security improvements

This release adds support in the ARM architecture for:

  • Running Linux in a protected VM under the Arm Confidential Compute Architecture (CCA) (Arm Confidential Compute Architecture documentation)

  • Support for Guarded Control Stack in userspace (ARM's implementation of shadow stacks), which provides support for hardware protected stacks of return addresses, intended to provide hardening against return oriented programming (ROP) attacks and to make it easier to gather call stacks for applications such as profiling.

1.9. Reference counting mechanism for more scalable file operations

This release introduce a new reference counting mechanism for files. It gives consistent improvement up to 3-5% on workloads with loads of threads

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Cryptography

9. Security

10. Networking

11. Architectures

12. Drivers

12.1. Graphics

12.2. Power Management

  • Add thermal user thresholds support, which is a way to have the userspace to tell the thermal framework to send a notification when a temperature limit is crossed. There is no id, no hysteresis, just the temperature and the direction of the limit crossing. That means we can be notified when a threshold is crossed the way up only, or the way down only or both ways. That allows to create hysteresis values if it is needed. commit, commit, commit, commit, commit

  • Add PCIe bandwidth controller and associated PCIe cooling driver to the thermal core side for limiting PCIe Link Speed due to thermal reasons commit, commit, commit, commit, commit, commit, commit

  • ACPI: EC: make EC support compile-time conditional commit

  • tools/power turbostat: Fixes, enabling and enhancements commit, commit, commit, commit, commit, commit, commit, commit, commit, commit

  • pm-graph v5.13 commit

  • Add MSM8917/PM8937/Redmi 5A commit, commit, commit

12.3. Storage

12.4. Drivers in the Staging area

  • fieldbus: Delete unused driver commit

  • gdm724x: Remove unused driver commit

  • gpib: Add common include files for GPIB drivers commit

  • gpib: Add hp82335x GPIB driver commit

  • gpib: Add nec7210 GPIB chip driver commit

  • max96712: Add support for MAX96724 commit, commit, commit, commit, commit

  • olpc_dcon: Remove driver marked as broken since 2022 commit

  • rtl8192e: delete the driver commit

  • rtl8712: Remove driver using deprecated API wext commit

  • rts5208: Remove unused driver commit

  • vt6655: Remove unused driver commit

  • vt6656: Remove unused driver commit

12.5. Networking

12.6. Audio

12.7. Tablets, touch screens, keyboards, mouses

  • Introduce notion of passive observers for input handlers commit

  • novatek-nvt-ts: add support for NT36672A touchscreen commit, commit, commit

  • corsair-void: Add Corsair Void headset family driver commit

  • Add Kysona driver commit, commit, commit, commit

  • intel-ish-hid: Add firmware version sysfs attributes commit

  • magicmouse: Apple Magic Trackpad 2 USB-C driver support commit

12.8. TV tuners, webcams, video capturers

12.9. Universal Serial Bus

12.10. Serial Peripheral Interface (SPI)

12.11. Watchdog

12.12. Serial

  • fsl_lpuart: add 7-bits format support on imx7ulp/imx8ulp/imx8qxp commit

  • samsung: Add Exynos8895 compatible commit, commit

  • 8250_fintek: Add support for F81216E commit

  • sc16is7xx: announce support for SER_RS485_RTS_ON_SEND commit

  • sprd: Modification of UNISOC Platform UART Driver commit, commit

12.13. CPU Frequency scaling

  • amd-pstate: Make amd-pstate the default driver on server platforms commit, commit

  • Add a virtualized cpufreq driver for guest kernels that read/writes to a MMIO region for a virtualized cpufreq device to communicate with the host. It sends performance requests to the host which gets used as a hint to schedule vCPU threads and select CPU frequency. If a VM does not support a virtualized FIE such as AMUs, it updates the frequency scaling factor by polling host CPU frequency to enable accurate Per-Entity Load Tracking for tasks running in the guest commit, commit

  • sun50i: add a100 cpufreq support commit

  • amd-pstate: Switch to amd-pstate by default on some Server platforms commit

  • maple: Remove maple driver commit

12.14. Voltage, current regulators, power capping, power supply

12.15. Real Time Clock (RTC)

12.16. Pin Controllers (pinctrl)

12.17. Multi Media Card (MMC)

12.18. Memory Technology Devices (MTD)

12.19. Industrial I/O (iio)

12.20. Multi Function Devices (MFD)

12.21. Pulse-Width Modulation (PWM)

12.22. Inter-Integrated Circuit (I2C + I3C)

12.23. Hardware monitoring (hwmon)

12.24. General Purpose I/O (gpio)

12.25. Leds

  • lp5562: Add multicolor brightness control commit

12.26. DMA engines

12.27. Hardware Random Number Generator (hwrng)

12.28. Cryptography hardware acceleration

  • hisilicon - support querying the capability register commit

12.29. PCI

  • TPH and cache direct injection support commit, commit, commit

  • Add PCIe support for IPQ9574 commit, commit, commit

  • vmd: Add DID 8086:B06F and 8086:B60B for Intel client SKUs commit

  • microchip: Add support for using either Root Port 1 or 2 commit

  • hotplug: Add OCTEON PCI hotplug controller driver commit

  • Enable runtime PM of the host bridge commit

  • j721e: Add PCIe support for J722S SoC commit

  • mediatek-gen3: Support limiting link speed and width commit, commit

12.30. Clock

12.31. PHY ("physical layer" framework)

12.32. EDAC (Error Detection And Correction)

12.33. IOMMU

12.34. Various

13. List of Pull Requests

14. Other news sites

KernelNewbies: LinuxChanges (last edited 2025-01-20 17:57:22 by diegocalleja)