After two months of development, Linus Torvalds announced the release of the kernel . Among the most notable changes are: support for AMD Navi GPUs, Zhaoxi processors, and Intel Speed Select power management technology, the ability to use umwait instructions for waiting without using loops,
an 'utilization clamping' mode to enhance interactivity for asymmetric CPUs, the pidfd_open system call, the ability to use IPv4 addresses from the 0.0.0.0/8 subnet, hardware acceleration support for nftables, HDR support in the DRM subsystem, and integration of the ACRN hypervisor.
In Linus reminded all developers of the main rule of kernel development — maintaining the consistency of behavior for user-space components. Changes in the kernel should not disrupt existing applications or lead to regressions at the user level. However, altering behavior could be caused not only by changes in ABI, removal of deprecated code, or the introduction of bugs, but also by indirectly impacting valid enhancements that work correctly. A clear example was a useful in the Ext4 code, reducing the number of accesses to storage by disabling the prefetching of the inode table for minor I/O requests.
The optimization led to a situation where, due to decreased disk activity, entropy for the getrandom() random number generator began accumulating more slowly, and in some configurations, under certain circumstances, there could be pauses during boot until the entropy pool was filled. Since the optimization is genuinely beneficial, a discussion arose among developers proposing to mitigate the issue by disabling the blocking mode of the getrandom() call by default, adding an optional flag for waiting for entropy, but such a change would affect the quality of random numbers during the boot phase.
The new version accepted 15,794 corrections from 1,974 developers,
the patch size is 92 MB (the changes affected 13,986 files, adding 258,419 lines of code,
removing 599,137 lines). About 39% of all changes presented in 5.3
are related to device drivers, approximately 12% of the changes pertain to
updating architecture-specific code, 11%
kernel subsystems. 12.4% of all changes were prepared by Intel, 6.3% by Red Hat, 5.4% by Google, 4.0% by AMD, 3.1% by SUSE, 3% by IBM, 2.7% by Huawei, 2.7% by Linaro, 2.2% by ARM, and 1.6% by Oracle.
kernel subsystems.
:
- Memory and system services
- The development of the 'pidfd' functionality has continued, which helps to handle situations involving the reuse of PIDs (pidfd is tied to a specific process and does not change, while the PID can be associated with another process after the current one has completed). Previously,
the system call pidfd_send_signal() and the CLONE_PIDFD flag in the clone() call were added to obtain a pidfd for use in idfd_send_signal(). When using the clone() call with the CLONE_PIDFD flag, issues could arise with service managers or the process termination system due to memory shortages on Android platforms. In such cases, the fork() or clone() call without CLONE_PIDFD is employed.In kernel 5.3, the system call , which provides a verifiable pidfd for any existing process created not through a clone() call with the CLONE_PIDFD flag, has been introduced. Polling support for pidfd has also been added using poll() and epoll(), allowing process managers to monitor the termination of arbitrary processes without the risk of a race condition if a PID is reassigned to a new process. The mechanism for notifying about the termination of a process associated with pidfd is similar to notifying about the termination of its child process;
- Support for a load clamping mechanism has been added to the task scheduler (), allowing adherence to minimum or maximum frequency ranges based on active tasks on the CPU. This mechanism accelerates tasks that directly impact user interaction quality by running these tasks at least at the lower limit of the 'requested' frequency. Low-priority tasks that do not affect user operation are executed using the upper limit of the 'allowed' frequency. Limits are set via the attributes sched_uclamp_util_min and sched_uclamp_util_max in the sched_setattr() system call.
- Support for power management technology has been added, , available on some servers with Intel Xeon processors. This technology allows for configuring performance and bandwidth settings for different CPU cores, prioritizing performance for tasks executed on specific cores while sacrificing performance on others.
- Processes in user space the ability to wait for a short time without using loops via the umwait instruction. This instruction, along with umonitor and tpause instructions, will be included in upcoming Intel 'Tremont' chips and will enable energy-efficient delays without affecting the performance of other threads when using Hyper-Threading.
- Support for large memory pages (huge pages) has been added for the RISC-V architecture.
- The 'kprobes' tracing mechanism has been enhanced to allow dereferencing kernel pointers in user space, which can be used, for instance, to assess the contents of structures passed in system calls. Additionally, the ability to set checks at boot time has been added.
- The configuration file now includes the PREEMPT_RT option for real-time operation. While the code to support real-time mode has not yet been added to the kernel, the appearance of the option is a positive sign that the long saga of Realtime-Preempt patches is nearing its end.
- A new system call clone3() has been added, implementing a more extensible version of the clone() interface, allowing for the specification of a greater number of flags.
- A handler bpf_send_signal() has been added, enabling BPF programs to send signals to arbitrary processes.
- A new event filtering mechanism has been added for perf events in the KVM hypervisor environment, allowing the administrator to define which types of events are permitted or prohibited for monitoring on the guest system side.
- The verification mechanism for eBPF applications now supports handling programs with loops, provided that the execution of the loop is limited and does not exceed the maximum instruction limit.
- The development of the 'pidfd' functionality has continued, which helps to handle situations involving the reuse of PIDs (pidfd is tied to a specific process and does not change, while the PID can be associated with another process after the current one has completed). Previously,
- Disk subsystem, input/output, and file systems
- The XFS file system now supports multi-threaded traversal of inodes (for example, when checking quotas). New ioctl BULKSTAT and INUMBERS have been added, providing access to features introduced in the fifth revision of the FS format, such as inode birth time and the ability to set BULKSTAT and INUMBERS parameters for each Allocation Group (AG);
- In Ext4 gaps in directories (unallocated blocks).
of the 'i' (immutable) flag for open files (preventing writing when the flag was set while the file was already open); - Btrfs now supports fast implementation of crc32c on all architectures;
- In CIFS, the support for smbdirect has been removed from experimental status. SMB3 has added the ability to use cryptographic algorithms in GCM mode. A new mounting option has been added to extract mode parameters from ACE (Access Control Entry) records. Performance of the open() call has been optimized;
- F2FS has added an option to limit the garbage collector when operating in checkpoint=disable mode. An ioctl for deleting ranges of blocks from F2FS has been added, allowing for on-the-fly partition resizing. Support for swap file placement in F2FS with direct I/O has been introduced. Support for file pinning and block allocation for such files has been added for all users;
- The io_uring interface for asynchronous I/O has added support for asynchronous sendmsg() and recvmsg() operations;
- The UBIFS file system has added support for compression using the zstd algorithm and the ability to verify signed FS images;
- In the Ceph FS, support for SELinux security labels for files has been added;
- For NFSv4, a new mounting option 'nconnect=' has been implemented, which defines the number of connections established with the server. Traffic between these connections will be balanced using load balancing. Additionally, the NFSv4 server now creates the /proc/fs/nfsd/clients directory containing information about current clients, including details about the files they have opened;
- Virtualization and Security
- A hypervisor for embedded devices has been included in the kernel , designed with readiness for real-time task execution and suitability for use in mission-critical systems. ACRN ensures minimal overhead, guarantees low latency, and adequate responsiveness when interacting with hardware. It supports virtualization of CPU resources, input/output, networking subsystems, graphics, and sound operations. ACRN can be used to run multiple isolated virtual machines in electronic control units, dashboards, automotive information systems, consumer IoT devices, and other embedded equipment;
- In User-mode Linux the 'time-travel' mode, allowing to slow down or speed up time in the UML virtual environment for easier debugging of time-related code. Additionally, the parameter
time-travel-start has been added, allowing system clocks to start from a specified moment in epoch format; - New kernel command line options 'init_on_alloc' and 'init_on_free' have been added, enabling zeroing of allocated and freed memory areas (zero-filling during malloc and free), which enhances security at the cost of additional initialization overhead;
- A new driver has been added. , implementing a paravirtualized device that allows sending IOMMU requests such as ATTACH, DETACH, MAP, and UNMAP over virtio transport without emulating memory page tables;
- A new driver has been added. , providing access to storage devices mapped into the physical address space, such as NVDIMM;
- The ability to attach cryptographic keys to user or network namespaces has been implemented (keys become unavailable outside the selected namespace), as well as key protection using ACLs;
- In the cryptosubsystem, support for a very fast non-cryptographic hashing algorithm , whose speed is limited by memory performance;
- Network subsystem
- Support for processing IPv4 addresses in the range 0.0.0.0/8, which was previously unavailable for use, has been provided. Introducing this subnet allows the distribution of an additional 16 million IPv4 addresses;
- In Netfilter for nftables, support for packet filtering hardware acceleration mechanisms has been enabled through the addition made to the drivers Full rule tables can be exported to the network adapter side with all chains. Activation is done by binding the NFT_TABLE_F_HW flag to the table. Basic metadata for level 3 and 4 protocols, actions to accept/reject, and matches by IP and network ports of the sender/receiver and protocol type are supported;
- built-in support for connection tracking for network bridges, eliminating the need for a br_netfilter emulation layer;
- In nf_tables support for the SYNPROXY module, replicating similar functionality from iptables, as well as the ability to inspect specific header options in IPv4 rules;
- New capability to attach BPF programs to the system calls setsockopt() and getsockopt(), allowing for custom access handlers on these calls. Additionally, a new hook point has been added to enable BPF program invocation once per RTT (round-trip time) interval;
- For IPv4 and IPv6 a new routing data storage mechanism called nexthop aimed at increasing the scalability of routing tables. Tests have shown that using the new system, loading 743,000 routes into the kernel took only 4.3 seconds;
- For Bluetooth functionality necessary to support LE ping;
- Hardware
- support for x86-compatible processors from , developed as a result of a joint project between VIA Technologies and the Shanghai municipality. The ZX CPU family is based on the x86-64 Isaiah architecture, continuing the evolution of technologies from ;
- Support for parsing, processing, and sending HDR (High Dynamic Range) metadata through the HDMI port has been added to the DRM (Direct Rendering Manager) subsystem and the amdgpu and i915 graphics drivers, enabling the use of HDR panels and screens capable of displaying extended brightness ranges;
- The amdgpu driver has introduced initial support for AMD NAVI (RX5700) GPUs, which includes a basic driver, code for screen interaction (DCN2), and support for GFX and computing (GFX10),
SDMA 5 (System DMA0), power management tools, and multimedia encoders/decoders (VCN2). Additionally, improved support for Vega12 and Vega20 GPU-based cards has been added to amdgpu, providing enhanced memory and power management capabilities; - The amdkfd driver (for discrete GPUs such as Fiji, Tonga, and Polaris) has added support for VegaM-based GPU cards;
- In the DRM driver for Intel video cards for Icelake chips a new multi-segment gamma correction mode has been introduced. DisplayPort output now supports YCbCr4:2:0 format. New firmware has been added for SKL, BXT, KBL, GLK, and ICL. The ability to turn off the display power in asynchronous mode has been implemented. support for saving and restoring the rendering context for Ironlake (gen5) chips and gen4 (Broadwater — Cantiga) has been added, allowing the GPU state to be restored from user space when switching between different batch operations;
- The Nouveau driver now supports the NVIDIA Turing TU116 chipset;
- The capabilities of the DRM/KMS driver for ARM Komeda (Mali D71) screen operation accelerators have been expanded, adding support for scaling, layer splitting/merging, rotation, deferred writing, AFBC, SMMU, and color encoding formats Y0L2, P010, YUV420_8/10BIT;
- The MSM driver has added support for the Adreno A540 GPU series used in Qualcomm processors, as well as support for the MSM8998 DSI controller for Snapdragon 835;
- Drivers for Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD panels have been added,
Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6, and VXT VL050-8048NT-C01; - driver for utilizing video decoding acceleration
available in the Amlogic Meson SoC; - The v3d driver (for the Broadcom Video Core V GPU used in Raspberry Pi) has introduced computational shader dispatching;
- driver for SPI keyboards and touchpads used in modern Apple MacBook and MacBookPro models;
- additional protection for ioctl calls related to the floppy driver, which has been marked as orphaned
("orphaned"), indicating the cessation of its testing. The driver is still preserved in the kernel, but its correct operation is not guaranteed. The driver is considered deprecated as it is difficult to find working hardware for its testing — all current external storage devices generally use the USB interface. - cpufreq driver for Raspberry Pi boards allowing dynamic frequency scaling of the processor;
- Support has been added for new ARM SoCs Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA), and Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), as well as boards:
- ,
- Aspeed BMC,
- Microsoft Olympus BMC,
- Kontron SMARC,
- Novtech Meerkat96 (i.MX7),
- ST Micro Avenger96,
- Google Cheza (Qualcomm SDM845),
- Qualcomm Dragonboard 845c (Qualcomm SDM845),
- Hugsun X99 TV Box (Rockchip RK3399),
- Khadas Edge/Edge-V/Captain (Rockchip RK3399),
- HiHope RZ/G2M,
- NXP LS1021A-TSN.
At the same time, the Latin American Free Software Foundation
variant — , cleaned of firmware and driver elements containing non-free components or code segments whose use is restricted by the manufacturer. In this release, blob loading in the qcom, hdcp drm, allegro-dvt, and meson-vdec drivers has been disabled.
The cleanup code for blobs in the amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi sound driver for skylake, as well as in the microcode documentation has been updated.
Source: opennet.ru
