KernelNewbies:

Linux 5.12 has been released on Sun, 25 Apr 2021.

Summary: This release allows to map an UID to a different one in a mount; it also adds support for selecting the preemption model at runtime; support for a low-overhead memory error detector designed to be used in production; support for the ACRN hypervisor designed for embedded systems; Btrfs initial support for zoned devices, subpage blocks sizes and performance improvements; support for eager NFS writes; the NAPI polling can be moved to a kernel thread; and support for non-blocking path lookups. As always, there are many other features, new drivers, improvements and fixes.

Also see the LWN release

1. Prominent features

1.1. ID mapping in mounts

This release introduces the concept of idmapped mounts. This allows to map the user id of a mount to a different one. This makes possible to share files more easily between multiple users or multiple machines especially in complex scenarios. For example, idmapped mounts will be used in the implementation of portable home directories in systemd-homed.service(8) where they allow users to move their home directory to an external storage device and use it on multiple computers where they are assigned different UIDs and GIDs. It also makes possible to share files from the host with unprivileged containers without having to change ownership permanently, and many other This initial implementation comes with ports for FAT and ext4, with other file systems being prepared in next releases.

Recommended LWN article: ID mapping for mounted filesystems

1.2. Allow selecting preempting model at boot and run time

Currently, using one preempt model (none/voluntary/model) is a build-time configuration option. This release adds the preempt=none/voluntary/full boot options (default: full), to allow distributions to build a PREEMPT kernel but fall back to close to PREEMPT_VOLUNTARY (or PREEMPT_NONE) runtime scheduling behavior via a boot-time selection. There's also the /debug/sched_debug switch to do this runtime. This feature is implemented via runtime patching (a new variant of static calls).

1.3. KFENCE memory error detector

Kernel Electric-Fence (KFENCE) is a low-overhead sampling-based memory safety error detector. KFENCE detects heap out-of-bounds access, use-after-free, and invalid-free errors.

KFENCE is not as thorough as KASAN, but it has near zero performance overhead - it trades performance for precision. Because of the low overhead, it is designed to be enabled and used in production kernels.

Documentation: Kernel Electric-Fence (KFENCE)

1.4. Support for the ACRN hypervisor

This release adds support for the ACRN hypervisor. ACRN is a Type 1 reference hypervisor stack, running directly on the bare-metal hardware, and is suitable for a variety of IoT and embedded device solutions. It implements a hybrid VMM architecture, using a privileged Service VM. The Service VM manages the system resources (CPU, memory, etc.) and I/O devices of User VMs. Multiple User VMs are supported, with each of them running Linux, Android OS or Windows. Both Service VM and User VMs are guest VM.

Documentation: ACRN documentation

1.5. Btrfs initial support for zoned devices and subpage block size

This release adds initial support for Btrfs in zoned devices, and support for block sizes smaller than the size of a memory page. There are also several performance improvents.

Recommended LWN article: Btrfs on zoned block devices

1.6. Eager NFS write support

This release adds a set of mount options for NFS file systems that control how write() system calls react. writes=lazy is the default, and keeps the current behaviour. writes=eager means we send off the write immediately as an unstable write to the server. writes=wait means we send off the write as an unstable write, and then wait for the reply. This ensures that a NFS client sees ENOSPC errors immediately.

1.7. Non-blocking path lookup while opening a file

This release supports path name lookups that will not block under any circumstance. This means that the kernel will try to resolve the path with the cached data, but if it needs to do I/O, it will return an error. This is needed for io_uring(), but support in openat2() with the RESOLVE_CACHED flag has been added, too.

Recommended LWN article: Avoiding blocking file-name lookups

1.8. Kernel thread-based NAPI polling

NAPI is a networking feature that polls the network device instead of waiting for requests, because this improves performance for high-throughput loads. That polling, however, runs in softirq context, where the task scheduler can't see it, and it makes hard to tune the system for maximum performance. In this release, the polling can be configured to be done by a kernel thread. These kernel threads are visible by userspace and the task scheduler, which can make better decisions by itself, and it allows to pin a kernel threads to specific CPUs.

Recommended LWN article: NAPI polling in kernel 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

11.1. x86

11.2. ARM

11.3. RISC-V

11.4. POWERPC

11.5. MIPS

11.6. CSKY

11.7. S390

11.8. PA-RISC

11.9. C6X

12. Drivers

12.1. Graphics

12.2. Power Management

12.3. Storage

12.4. Drivers in the Staging area

12.5. Networking

12.6. Audio

12.7. Tablets, touch screens, keyboards, mouses

12.8. TV tuners, webcams, video capturers

12.9. Universal Serial Bus

12.10. Serial Peripheral Interface (SPI)

12.11. Watchdog

12.12. Serial

12.13. CPU Frequency scaling

12.14. Device Voltage and Frequency Scaling

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

12.16. Real Time Clock (RTC)

12.17. Pin Controllers (pinctrl)

12.18. Multi Media Card (MMC)

12.19. Memory Technology Devices (MTD)

12.20. Industrial I/O (iio)

12.21. Multi Function Devices (MFD)

12.22. Pulse-Width Modulation (PWM)

12.23. Inter-Integrated Circuit (I2C + I3C)

12.24. Hardware monitoring (hwmon)

12.25. General Purpose I/O (gpio)

12.26. Leds

12.27. DMA engines

12.28. Cryptography hardware acceleration

12.29. PCI

12.30. Non-Transparent Bridge (NTB)

12.31. Thunderbolt

12.32. Clock

12.33. PHY ("physical layer" framework)

12.34. CXL (Compute Express Link)

12.35. Various

13. List of Pull Requests

14. Other news sites

KernelNewbies: Linux_5.12 (last edited 2021-04-29 22:24:03 by diegocalleja)