KernelNewbies:

Linux 6.1 was released on Sun, 11 December 2022.

Summary: This release includes initial support for the Rust programming language; an optional MGLRU memory management algorithm that provides better memory management performance; a kernel memory sanitizer for improved memory safety debugging; memory tiering improvements; allow processes to voluntary collapse memory into a transparent hugepage; new BPF features such as a panic helper; better Btrfs performance overall; a Maple tree data structure with better algorithmic properties than red-black trees; support for per-cgroup Pressure Stall Information and a new IRQ/SoftIRQ PSI indicator. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. Initial support for the Rust programming language

This release adds support for the Rust programming language. Rust aims to provide a modern system programming language with provable memory safety, without the use of a garbage collector, thus eliminating an entire class of bugs, which are the most common source of security vulnerabilities.

This release includes some initial support for Rust, which will be improved in later releases.

Recommended LWN article

1.2. Multi-generational LRU for better memory management

When programs try to use more memory than what it's available, the Linux kernel needs to take a decision about which parts of memory, and from which program(s), move to swap or evict from memory. This process decides the kernel’s caching policy and ability to overcommit memory.

The current memory management subsystem in Linux attempts to make the right decision by keeping LRU (Least Recently Used) lists of pages. However, this method does not always make the best decisions. The multi-generation LRU is an alternative LRU implementation that optimizes page reclaim and improves performance under memory pressure. This implementation does not replace the current memory management scheme, it can be configured at compilation time.

Recommended LWN article

Another recommended LWN article

Admin guide

Design documentation

1.3. KMSAN, a kernel memory sanitizer

KMSAN is a dynamic error detector aimed at finding uses of uninitialized values. It is based on compiler instrumentation, and is quite similar to the userspace MemorySanitizer tool.

An important note is that KMSAN is not intended for production use, because it drastically increases kernel memory footprint and slows the whole system down.

Documentation

Recommended LWN article

1.4. Support for KCFI, a forward-edge control-flow integrity scheme

Add support for KCFI, a forward-edge control-flow integrity scheme in the upcoming Clang 16 release, which is more suitable for kernel use than the existing CFI scheme used by CONFIG_CFI_CLANG. KCFI doesn't require LTO, doesn't alter function references to point to a jump table, and won't break function address equality. This replaces the current arm64 CFI implementation with KCFI and adds support for x86_64.

1.5. Memory tiering improvements

In modern systems, RAM can be distributed in several chips that can be accessed at a faster or slightly slower speed depending on the CPU accessing it. Modern systems are adding even more RAM tiers. This means that placement of a memory page that belongs to one node or another can severly impact performance.

This release includes a couple of improvements to the memory management subsystem. The first one is a new algorithm that helps to identify which pages are "hot" in a node so the system can promote/demote hot/cold pages to the appropriate nodes. The second change makes the tiering information available to userspace, and lets users configure it.

Recommended LWN article

1.6. BPF features: panic helper, PKCS#7 signature verification, memory allocator

As usual, this release includes a few BPF features:

1.7. Maple trees, a more efficient tree data structure

The maple tree is an RCU-safe range based B-tree designed to use modern processor cache efficiently. There are a number of places in the kernel that a non-overlapping range-based tree would be beneficial, especially one with a simple interface. Users of an rbtree with other data structures to improve performance or an interval tree to track non-overlapping ranges will benefit the most from maple trees.

Recommended LWN article

1.8. Allow a process to induce collapsing of memory into transparent hugepages

This release provides a mechanism for userspace to induce a collapse of eligible ranges of memory into transparent hugepages in process context, thus permitting users to more tightly control their own hugepage utilization policy at their own expense. The proposed interface adds a new madvise(2) mode, MADV_COLLAPSE, and leverages the new process_madvise(2) call.

Recommended LWN article

1.9. PSI improvements: per-cgroup PSI, IRQ/SoftIRQ PSI, optimizations

The Pressure Stall Information provides a detailed view of the current resource usage in the system. This release includes support for optional per-cgroup PSI accounting (with some overhead), a new PSI_IRQ to IRQ/SOFTIRQ pressure, and some optimizations

1.10. Btrfs performance improvements

This release incorporates a few changes that will make Btrfs much faster when doing asynchronous buffered I/O using io_uring, also improved performance during normal buffered I/O, drastically faster lseek and FIEMAP (extent mapping information), preparations for a separate block group tree that will speed up mount times, improved inode logging (+25% faster dbench performance, -21% max latency), and other changes

2. Core (various)

3. File systems

4. Memory management

5. Block layer

6. Tracing, perf and BPF

7. Virtualization

8. Security

9. Networking

10. Architectures

10.1. ARM

10.2. X86

10.3. LOONGARCH

10.4. RISCV

10.5. POWERPC

10.6. S390

10.7. MIPS

10.8. M68K

10.9. MICROBLAZE

10.10. UM

10.11. XTENSA

10.12. ALPHA

11. Drivers

11.1. Graphics

11.2. Power Management

11.3. Storage

11.4. Drivers in the Staging area

11.5. Networking

11.6. Audio

11.7. Tablets, touch screens, keyboards, mouses

11.8. TV tuners, webcams, video capturers

11.9. Universal Serial Bus

11.10. Serial Peripheral Interface (SPI)

11.11. Watchdog

11.12. Serial

11.13. CPU Frequency scaling

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

11.15. Pin Controllers (pinctrl)

11.16. Multi Media Card (MMC)

11.17. Memory Technology Devices (MTD)

11.18. Industrial I/O (iio)

11.19. Multi Function Devices (MFD)

11.20. Inter-Integrated Circuit (I2C + I3C)

11.21. Hardware monitoring (hwmon)

11.22. General Purpose I/O (gpio)

11.23. Leds

11.24. DMA engines

11.25. Cryptography hardware acceleration

11.26. PCI

11.27. Thunderbolt

11.28. Clock

11.29. PHY ("physical layer" framework)

11.30. EDAC (Error Detection And Correction)

11.31. Various

12. List of Pull Requests

13. Other news sites

KernelNewbies: Linux_6.1 (last edited 2022-12-12 23:00:08 by diegocalleja)