KernelNewbies:

Linux 5.19 was released on Sunday, 31 Jul 2022.

Summary: This release adds optional support for IPv6 packets larger than 64KB; support AMD's SEV-SNP and Intel's TDX for more secure virtualized guests; support for a new LoongArch architecture; support for hundreds of millions of extended attributes per inode in XFS; support for ID mapping in overlayfs; support for proactive reclaim in memory control groups; support for NFS Courteous Server; support for ZSTD compressed firmware files; support for several new BPF features. As always, there are many other features, new drivers, improvements and fixes.

1. Prominent features

1.1. More secure virtualization with AMD's SEV-SNP and Intel's TDX

These release incorporate two features that help to make existing encrypted virtualization (ie. hosts can't access the memory contents of virtualized guests) more secure:

1.2. Jumbograms: IPv6 packets bigger than 64 KB

The maximum size of a standard IPv4/6 header is 64 KB. For high speed networking interfaces (400 GB), this maximum size is too small and the networking stack can't avoid having too much per-packet overhead. With the help of RFC 2675, it's possible to create the so called "jumbograms", which allow for packets much bigger than 64KB. This release incorporates supports for such packets. This feature is aimed mainly at local networks with intense network traffic, not the Internet, and can provide huge performance wins.

Recommended LWN article: Going big with TCP packets

Conference slides/video: BIG TCP

1.3. New architecture: LoongArch

This release adds initial support for the LoongArch architecture. LoongArch is a new RISC ISA, which is a bit like MIPS or RISC-V. LoongArch includes a reduced 32-bit version (LA32R), a standard 32-bit version (LA32S) and a 64-bit version (LA64). LoongArch use ACPI as its boot protocol LoongArch-specific interrupt controllers (similar to APIC) are already added in the next revision of ACPI Specification (current revision is 6.4)

Documentation

1.4. Larger per-inode attribute limits in XFS

Some people want to use XFS to store hundreds of millions of xattrs per inode. This release adds an on-disk format change to allow these huge number of extended attributes. This change also increases the number of supported data extents per inode from 232 to 247, and a new logging feature is introduced that lays the foundation for future integration of attribute modifications as part of other atomic transactional operations.

1.5. ID mapping in overlayfs

ID mapping is a feature that lets you map a UID or GID to another one in a different mount. This release adds support for ID mapping in overlayfs itself, which is one of the file system where this feature is more likely to be used.

1.6. Proactive reclaim in memory control groups

This releases introduces a memcg interface to trigger memory reclaim on a memory cgroup. 'echo 10M > memory.reclaim'  will trigger reclaim in the target memory cgroup.

The reason why this interface has been added is that a userspace proactive reclaimer can continuously probe the memcg to reclaim a small amount of memory. This gives more accurate and up-to-date workingset estimation as the LRUs are continuously sorted and can potentially provide more deterministic memory overcommit behavior. The memory overcommit controller can provide more proactive response to the changing behavior of the running applications instead of being reactive. A userspace reclaimer's purpose in this case is not a complete replacement for kswapd or direct reclaim, it is to proactively identify memory savings opportunities and reclaim some amount of cold pages set by the policy to free up the memory for more demanding jobs or scheduling new jobs.

1.7. BPF improvements: dynamic pointers, typed pointers, libbpf USDT

As usual, there are many BPF related changes. Between many other features, this release includes support for:

- Dynamic pointers: A dynamic pointer (struct bpf_dynptr) is a pointer that stores extra metadata alongside the address it points to. This abstraction is useful in bpf given that every memory access in a bpf program must be safe.

- Typed pointers: It enables storing pointers of a certain type in BPF map, and extends the verifier to enforce type safety and lifetime correctness properties.

- libbpf support for USDT (User Statically-Defined Tracing) probes: While USDTs themselves are pretty complicated abstraction built on top of uprobes, for end-users USDT is as natural a primitive as uprobes themselves. And thus it's important for libbpf to provide best possible user experience when it comes to build tracing applications relying on USDTs. With enough diligence and BPF cookies it's possible to implement USDT support that feels as natural as tracing any uprobe.

1.8. NFS Courteous Server

This release implements the NFSv4 Courteous Server. Previously NFSD would purge open and lock state for an unresponsive client after one lease (typically 90 seconds). Now, after one lease period, another can open and lock those files and the unresponsive client's is purged; otherwise if the unresponsive client's open and lock is uncontended, the server retains that open and lock state for to 24 hours, allowing the client's workload to resume after a network partition

1.9. ZSTD compressed firmware files

This release adds support for ZSTD compressed firmware files, and support for userspace to initiate the firmware load when it needs to, instead of being always initiated by the kernel.

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. New LoongArch architecture

11.2. X86

11.3. ARM

11.4. RISCV

11.5. S390

11.6. MIPS

11.7. M68K

11.8. OPENRISC

11.9. POWERPC

11.10. UM

11.11. XTENSA

11.12. ARC

11.13. H8300

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. Hardware monitoring (hwmon)

12.24. General Purpose I/O (gpio)

12.25. Leds

12.26. DMA engines

12.27. Hardware Random Number Generator (hwrng)

12.28. Cryptography hardware acceleration

12.29. PCI

12.30. Thunderbolt

12.31. Clock

12.32. PHY ("physical layer" framework)

12.33. EDAC (Error Detection And Correction)

12.34. Various

13. List of Pull Requests

14. Other news sites

KernelNewbies: Linux_5.19 (last edited 2022-08-10 12:54:40 by diegocalleja)