Release of Linux kernel 6.14

After two months of development, Linus Torvalds presented the release of Linux kernel 6.14. Among the most notable changes are: the ntsync driver with Windows NT synchronization primitives, read operation balancing configuration in Btrfs RAID1, reflink support in XFS in realtime mode, the possibility of non-cacheable buffered I/O, dmem cgroup for limiting GPU memory, utilization of io_uring in FUSE, delegation of attributes in NFS, support for atomic writes in Device Mapper, acceleration of symbolic links, management of script execution permissions, support for Qualcomm Snapdragon 8 Elite chips, and an AMD NPU driver.

The new version includes 12,115 fixes from 1,984 developers, and the patch size is 39 MB (changes affected 10,170 files, with 531,586 lines of code added and 235,999 lines removed). In the previous release, there were 14,172 fixes from 2,086 developers, with a patch size of 46 MB. About 41% of all changes in 6.14 are related to device drivers, approximately 13% pertain to updating code specific to hardware architectures, 14% relate to the network stack, 7% to file systems, and 4% to internal kernel subsystems.

Key innovations in kernel 6.14:

  • Disk subsystem, input/output, and file systems
    • In the Btrfs file system, support has been added for new reading operation balancing methods among the drives in the RAID1 array. In addition to the previously existing load distribution based on process IDs (pid), the new version offers three new balancing modes: 'rotation' (uniform load distribution across all drives, enabled by default); 'latency' (distribution considering delays, useful in case of failures or unstable drive performance); and devid (manual control). To change the balancing mode, the interface '/sys/fs/btrfs//read_policy' has been added. Other changes in Btrfs include the implementation of ioctl FS_IOC_READ_VERITY_METADATA.
    • A non-cacheable buffered I/O mode has been added, in which data is removed from the page cache immediately after read or write operations are completed. This change may be beneficial when using very fast storage devices, where caching operations in memory is redundant. For such devices, the new mode prevents excessive memory consumption by the page cache without the need for elaborate Direct I/O APIs.
    • A new FS_PRE_ACCESS event has been added to fsnotify, the file system change tracking mechanism, which is generated before accessing file content. The event is handled synchronously, meaning the kernel sends the event and waits for a response. If a response is received, the operation proceeds; if there’s a failure, the system call returns an error code to user space. Using FS_PRE_ACCESS, the user space process can, for example, fill the file as data becomes available from slow storage.
    • Support for data exchange between the kernel and the user space handler using the io_uring I/O mechanism has been added to the FUSE subsystem, which allows for the implementation of file systems in user space. This change improves FUSE performance by reducing context switches between the kernel and user space.
    • The XFS file system now supports reverse mapping (rmap) in a mode designed for predictable latencies ("realtime device"). Reverse mapping allows determining which file is using a specified block on a storage device. With rmap, support for the reflink operation has been implemented in XFS for realtime mode, allowing the creation of file copies by cloning file metadata and referencing already existing data without actual copying.
    • VFS has implemented caching of symbolic link sizes, achieving a 1.5% speed increase in executing the readlink operation (in tests with /initrd.img in ext4). Caching is enabled in ext4 and tmpfs.
    • The implementation of NFSv4.2 includes support for file attribute delegation, allowing management of file attributes such as modification time (mtime) on the NFS client side without the need to flush changes to the server. The support for the LOCALIO protocol has also been improved in NFS, enabling the determination of whether the client and server are on the same host, to utilize relevant optimizations such as direct I/O from the client.
    • The performance of read operations in NETFS, CIFS, and AFS (Andrew File System) has been enhanced.
    • Squashfs now includes a direct block loading mode into the page cache (SQUASHFS_FILE_DIRECT), eliminating the need for a separate read_page cache. This change has reduced the memory footprint when operating Squashfs.
    • The statx() system call has implemented the STATX_DIO_READ_ALIGN flag to determine the required alignment for file read operations.
    • In the Bcachefs file system, the format of disk structures has been updated and stabilized. Any further changes to the format will be categorized as optional and will be implemented as optional extensions. The speed of FS integrity checks has been significantly improved. Additionally, Bcachefs has enhanced read-only mode operations; issues causing memory access after free have been resolved; and problems with reflink pointers in fsck have been addressed; transaction restart handling has been corrected.
    • The md-linear module, designed for combining block devices, has been restored. This module was previously deprecated and removed from the 6.8 kernel but, as it turned out, it was in demand and has now been reinstated.
    • The F2FS and SQUASHFS file systems have migrated to using page folios.
    • The OCFS2 and DLMFS file systems have transitioned to utilizing a new partition mounting API.
    • The null_blk driver has implemented the 'rotational' attribute, set via configfs, allowing the simulation of operation with a device based on spinning disks to simplify kernel function testing.
    • Atomic write support has been implemented in the Device Mapper system and in the modules dm-mirror, dm-io, dm-table, dm-linear, dm-stripe, and dm-raid1.
  • Memory and system services
    • The integration into the core of the ntsync driver has been completed, implementing the symbolic device /dev/ntsync and a set of synchronization primitives used in the Windows NT kernel. Implementing such primitives at the kernel level significantly increases the performance of Windows games running through Wine. The performance boost is achieved by eliminating the overhead associated with using RPC in user space. The creation of a separate driver for the Linux kernel is due to the challenges of properly implementing the NT synchronization API over existing primitives in the kernel.
    • A new DMEM cgroup controller has been added for the separate accounting of device memory areas, such as those for GPUs. DMEM allows for the creation of distinct cgroups for various tasks that work with the GPU, enabling them to run without interfering with each other. This new feature addresses the issue of forced termination of GPU operations when available memory runs out, as it accounts for both reflected GPU memory and CPU memory used by drivers in separate cgroups.
    • Optimizations have been made to scale the flush operation of the TLB (Translation Lookaside Buffer) cache, which is used to accelerate the translation of virtual addresses to physical addresses. The added optimizations involve deferring the update of certain data structures during context switching, which allows for improved performance in certain test scenarios.
    • The performance of the MGLRU (Multi-Generational LRU) mechanism has been enhanced, which is used to determine which memory pages are in use and which can be swapped out to the paging area.
    • The transfer of changes from the Rust-for-Linux branch has continued, related to the use of Rust as a second language for developing drivers and kernel modules (Rust support is not enabled by default and does not make Rust a mandatory build dependency for the kernel). The ability to use the macro 'derive(CoercePointee)' in kernel code has been provided, allowing the use of smart pointers with trait objects. Rust bindings for PCI, platforms, Open Firmware, character devices, and some input/output functions have been included in the kernel. Greg Kroah-Hartman, responsible for maintaining the stable branch of the Linux kernel, described the current state as 'almost ready for writing a real driver in Rust.'
    • A new code for generating debug symbol versions for loadable modules has been proposed in the build scenarios, which now uses information from debug records in DWARF format, rather than parsing the source code directly. This change allows versioning of debug symbols for modules written in Rust. The old implementation is also retained in the kernel, with the choice of generator made at the build options level.
    • For the PowerPC architecture, support for the lazy preemption mode (PREEMPT_LAZY) has been implemented, which corresponds to the full preemption mode for real-time tasks (RR/FIFO/DEADLINE) but delays the preemption of normal tasks (SCHED_NORMAL) until the tick boundary.
    • Support for energy consumption counters for AMD processors has been added to the 'perf' performance profiling subsystem. It now supports operation on systems with up to 2048 CPU cores.
    • The sysctl parameter pid_max can be used with process ID namespace. The pid_max parameter is designed to limit the maximum value of process identifiers (PID) and can now be used to restrict the maximum possible number of processes running in a specified namespace. The parameter is processed hierarchically, meaning that limitations in outer namespaces apply to nested namespaces.
    • When using the execveat system call to initiate a process, the filename of the executed file will now be displayed in the /proc file system instead of the file descriptor number.
    • The kernel source code (in the samples/vfs directory) has added the mountinfo utility, demonstrating the use of the statmount() and listmount() system calls.
    • New functions bpf_local_irq_save() and bpf_local_irq_restore() have been proposed in the BPF subsystem to temporarily disable interrupts on the local CPU. These functions can be used to implement structures whose processing is not interrupted.
    • In the madvise() system call, using the MADV_DONTNEED and MADV_FREE flags now ensures the release of memory page tables associated with the freed address range, as in some situations, empty memory pages can occupy a significant amount of memory.
    • Support for restartable sequences (rseq) has been implemented for the OpenRISC architecture, designed for quick atomic execution of operations, which, if interrupted by another thread, are cleaned up and a retry is attempted.
    • The code has been reorganized with the implementation of the CRC32 and CRC-T10DIF algorithms, which no longer overlap with the crypto subsystem and are called directly from the library interface. This change has simplified the code and improved its efficiency.
    • An interface has been added to the io_uring asynchronous I/O system for transferring additional integrity metadata during read and write operations.
  • Virtualization and Security
    • The system call execveat has been enhanced with the AT_EXECVE_CHECK flag, allowing for a check on the validity of file execution without actually launching it, while considering security policies, access rights, and active LSM modules. For use in conjunction with AT_EXECVE_CHECK, securebit flags SECBIT_EXEC_RESTRICT_FILE and SECBIT_EXEC_DENY_INTERACTIVE have been proposed, which can be employed to restrict the execution of script files in interpreted programming languages. The SECBIT_EXEC_RESTRICT_FILE flag instructs loaders and interpreters to utilize the AT_EXECVE_CHECK option for validity checks, while the SECBIT_EXEC_DENY_INTERACTIVE flag prohibits the processing of interactive commands. The primary goal of the change is to apply security policies not only to traditional executable files but also to text files containing scripts that can be executed via an interpreter (i.e., execution restrictions can be enforced not only when running './script.sh' but also when executing in the form of 'sh script.sh').
    • On x86 systems, support for secure time counters for guest systems has been implemented, preventing changes to the guest system's system clocks from the host environment. This capability is based on the AMD SEV (Secure Encrypted Virtualization) mechanism used in virtualization systems for protection. of virtual machines from interference by the hypervisor or the host system administrator.
    • Support for xperm rules has been added to the SELinux mandatory access control system, allowing SELinux policies to be tied to specific ioctl() calls or netlink messages.
    • For signing kernel modules with a digital signature, the SHA512 algorithm has been employed by default instead of SHA1.
    • Support for the ARM64 architecture has been enabled in the VirtualBox guest system drivers.
    • In the hypervisor KVM Work has continued on utilizing the Intel TDX (Trusted Domain Extensions) mechanism for encrypting guest system memory.
    • Support for error recovery mode has been added in virtio_blk.
  • Network subsystem
    • The RxRPC protocol implementation now allows the use of large UDP frames to increase throughput.
    • Support for the RACK-TLP algorithm has been added to TCP for packet loss detection.
    • A new sysctl parameter tcp_tw_reuse_delay has been added, applicable within the network namespace, allowing the system to specify the delay before it can reuse a network port number after closing a TCP socket.
    • The option to select a Precision Time Protocol (PTP) provider for generating timestamps at PHY and MAC levels has been added.
    • IPsec now supports the IP-TFS/AGGFRAG mechanism for the aggregation and fragmentation of encapsulated IP packets (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
    • Support for the transmission of priority information (SO_PRIORITY) in the form of control messages (cmsg) has been added to the network socket system. The SO_RCVPRIORITY option, which includes priority information in the recvmsg() function, has been added for network sockets.
  • Hardware
    • The amdxdna driver for AMD CPU-integrated NPU (Neural Processing Unit) accelerators based on the XDNA architecture has been added to speed up machine learning-related operations. NPU based on the XDNA architecture is available in the 7040 and 8040 series of AMD Ryzen processors, AMD Alveo V70 accelerators, and AMD Versal SoCs.
    • New GPU identifiers have been added to the i915 driver, an HDMI initialization failure handler has been implemented, and the reliability of GPU engine resets on Haswell and older systems has been improved.
    • Work continues on the drm driver (Direct Rendering Manager) Xe for GPUs based on Intel Xe architecture, used in Intel Arc graphics cards and integrated graphics starting from Tiger Lake processors.
    • The Nouveau driver has added the ability to transmit GSP-RM log buffers through debugfs.
    • The AMDGPU driver implements a DRM panic mechanism, displaying a similarity to a 'blue screen of death' during failures. Work continues towards supporting the upcoming Radeon RX 9000 graphics cards based on the RDNA4 architecture. Support for DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS, and ISP has been updated.
    • Support for the Qualcomm SM6150 (QCS615) platform has been added to the drm msm driver (Qualcomm Adreno GPU).
    • The panfrost drm driver has added support for the MediaTek MT8188 SoC with Mali-G57 GPU.
    • The vc4 drm driver has added support for the Broadcom BCM2712 SoC (Raspberry Pi 5).
    • Support for NVIDIA Grace Blackwell 200 chips has been added to the vfio nvgrace-gpu driver.
    • The package includes a driver for Intel THC (Touch Host Controller), used for interaction with touchscreens and touchpads on certain laptops. Support for Wacom devices with a PCI interface has been added. Support for gaming controllers from QH Electronics has also been included.
    • Support for ARM platforms, SoCs, and devices has been added: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Support for the SpacemiT K1 SoC based on RISC-V architecture has also been added.
    • In the ALSA sound subsystem for MIDI 2.0, the rawmidi and sequencer APIs have been expanded. The API for offloading compression operations to the sound card now includes support for ASRC (Asynchronous Sample Rate Conversion).
    • Support for sound systems of Allwinner devices suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16, and 18i20 has been added. Support for SteelSeries Arctis 9 wireless headphones has also been added.

Source: opennet.ru

Buy reliable website hosting with DDoS protection, VPS VDS servers 🔥 Buy reliable website hosting with DDoS protection, VPS VDS servers | ProHoster