After two months of development, Linus Torvalds presented The release of Linux kernel 6.14 includes several notable changes: the ntsync driver with synchronization primitives for Windows NT, configuration for reading operation balancing in Btrfs RAID1, support for reflink in XFS in realtime mode, the capability for uncached buffered I/O, the dmem cgroup for limiting GPU memory, leveraging io_uring in FUSE, delegating attributes in NFS, support for atomic writes in Device mapper, improved performance for symbolic links, script execution management, support for Qualcomm Snapdragon 8 Elite chips, and a driver for AMD NPU.
The new version includes 12,115 fixes from 1,984 developers, with a patch size of 39 MB (changes affected 10,170 files, adding 531,586 lines of code and removing 235,999 lines). The previous release had 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% concern code updates specific to hardware architectures, 14% are related to the networking stack, 7% are with file systems, and 4% pertain to the kernel's internal subsystems.
- Disk subsystem, input/output, and file systems
- In the Btrfs file system, a new feature has emerged support for new methods of balancing read operations 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' (even load distribution across all drives, enabled by default); 'latency' (distribution considering latencies, may be useful during failures or unstable drive operations); devid (manual control). To change the balancing mode implemented interface /sys/fs/btrfs//read_policy. Among other changes in Btrfs – implementation ioctl FS_IOC_READ_VERITY_METADATA.
- Added the mode of uncached buffered I/O, in which data is removed from the page cache immediately after read or write operations are completed. This change can be beneficial when using very fast storage devices, where caching operations in RAM is redundant. For such devices, the new mode allows for the exclusion of excessive memory consumption by the page cache without resorting to the complicated API of direct I/O.
- In fsnotify, the mechanism for tracking changes in the file system, added A new FS_PRE_ACCESS event is generated at the stage before accessing the file's contents. The event is processed synchronously, meaning the kernel sends the event and waits for a response. If a response is received, the operation proceeds; if an error occurs, the system call returns an error code to the user space. Using FS_PRE_ACCESS, processes in user space can organize file filling as data becomes available in slow storage.
- A new feature has been added to the FUSE subsystem, allowing for the creation of file system implementations in user space. disabling the tracker blocking This feature enables data exchange between the kernel and the user-space handler using the io_uring input/output mechanism. This change improves FUSE performance by reducing context switches between the kernel and user space.
- A new feature has been added to the XFS file system. of It incorporates reverse mapping (rmap) in its operation with predictable latencies ('realtime device'). Reverse mapping allows identifying which file's storage uses a specified block on the storage device. With rmap, XFS supports the reflink operation for the realtime mode, enabling the creation of file copies by cloning file metadata and creating a link to already existing data without actual copying.
- In VFS, implemented symbolic link size caching has been introduced, resulting in a 1.5% speedup in the readlink operation (in testing with /initrd.img in ext4). Caching has been enabled in the ext4 and tmpfs file systems.
- Support for delegating file attributes has been added to the NFSv4.2 implementation, which allows managing file attributes such as modification time (mtime) on the NFS client side, without the need to flush changes to the server. Support for the LOCALIO protocol has also been improved in NFS,which allows determining if the NFS client and server are on the same host to utilize optimizations such as enabling direct I/O for the client.Increasedthe performance of read operations in NETFS, CIFS, and AFS (Andrew File System).
- A new feature has been introduced to enhance performance.
- In Squashfs included Direct block loading mode into the page cache (SQUASHFS_FILE_DIRECT), allowing for the absence of a separate read_page cache. This change has reduced the amount of memory consumed while working with Squashfs.
- In the system call statx() is implemented the STATX_DIO_READ_ALIGN flag, to determine the required alignment for file read operations.
- In the Bcachefs file system has been updated and has been stabilized disk structure format. Any further changes to the format will be classified as optional and implemented as optional additions. The speed of file system integrity checks has significantly increased. Additionally, Bcachefs has improved performance in read-only mode; issues leading to memory access after it has been freed (use after free) have been resolved; problems with reflink pointers in fsck have been addressed; transaction restart handling has been corrected.
- Returned the md-linear module, designed for aggregating block devices. 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 restored.
- File systems F2FS and SQUASHFS have been transitioned to use memory folios (page folios).
- In the driver null_blk the 'rotational' attribute has been implemented, which is set via configfs and allows us to simulate operation with a device based on spinning disks to facilitate kernel function testing.
- In the Device mapper system and in modules dm-mirror, dm-io, dm-table, dm-linear, dm-stripe, and dm-raid1 within support for atomic write has been added.
- Memory and system services
- Completed the integration of the driver ntsync, implementing the character device /dev/ntsync and a set of synchronization primitives used in the Windows NT kernel. Implementing such primitives at the kernel level significantly boosts the performance of Windows games running through Wine. The performance gain is achieved by eliminating overhead associated with using RPC in user space. Creating a separate driver for the Linux kernel is justified by the difficulties of correctly implementing the NT synchronization API over existing kernel primitives.
- A new cgroup controller has been added DMEM for separate accounting of memory areas of devices such as GPU. DMEM allows creating separate cgroups for different tasks working with the GPU, so they can operate without interfering with each other. This new feature addresses the issue of forced termination of GPU operations when available memory is exhausted, by keeping track of mirrored GPU memory and CPU memory used by drivers in separate cgroups.
- Improvements have been made to scale the flush operation of the Translation Lookaside Buffer (TLB), which is used to accelerate the conversion of virtual addresses to physical ones. The added optimizations involve deferring the update of certain data structures during context switching, which enhances performance in some tests.
- A new feature the performance of the mechanism MGLRU (Multi-Generational LRU), used to determine which memory pages are in use and which can be swapped out to the swap area.
- Continued the transfer of changes from the branch Rust-for-Linux, related to the use of the Rust language as a secondary 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. The kernel includes includes Rust bindings for PCI, platforms, Open Firmware, character devices and some input/output functions. Greg Kroah-Hartman, who is responsible for maintaining the stable branch of the Linux kernel, characterized the current state as 'almost ready for writing a real driver in Rust.'
- In build scenarios introduced new code for generating debug symbol versions for loadable modules, which now uses information from debug records in DWARF format rather than parsing the source code directly. This change allows the versioning of debug symbols for modules written in Rust. The old implementation is also retained in the kernel, and the choice of generator is made at the build options level.
- For the PowerPC architecture within support for lazy preemption task mode (PREEMPT_LAZY), which corresponds to full preemption mode for realtime tasks (RR/FIFO/DEADLINE), but delays the preemption of normal tasks (SCHED_NORMAL) until the tick boundary.
- in the performance profiling subsystem perf has added support for energy consumption counters for AMD processors. Added ability to operate on systems with up to 2048 CPU cores.
- Provided ability to use the sysctl parameter pid_max with process identifier namespaces (ID namespace). The pid_max parameter is intended to limit the maximum process identifier (PID) value and can now be used to restrict the maximum number of processes running in the specified namespace. The parameter is processed hierarchically, meaning that limits in outer namespaces apply to nested namespaces.
- When using the system call to launch a process execveat the name of the launched file will now be displayed in the /proc filesystem instead of the file descriptor number.
- The mountinfo utility has been added to the kernel source code (in the samples directory), demonstrating the use of the statmount() and listmount() system calls.
- In the BPF subsystem are offered new functions bpf_local_irq_save() and bpf_local_irq_restore() for temporarily disabling interrupts on the local CPU. The functions can be used for implementing structures whose processing is not interrupted.
- In the system call madvise() when using the flags MADV_DONTNEED and MADV_FREE provides the release of page tables associated with the released address range, as in some situations, empty pages may occupy a significant amount of memory.
- Support for the restartable sequences mechanism (rseq, restartable sequences) for the OpenRISC architecture, intended for fast atomic execution of operations that are cleared and retried if interrupted by another thread.
- 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.
- In the io_uring asynchronous I/O system implemented an interface for transferring additional metadata about integrity during read and write operations.
- Virtualization and Security
- In the system call execveat implemented the AT_EXECVE_CHECK flag, allowing to perform a check the permissibility of executing a file without its actual launch, taking into account 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 used to restrict the execution of script files in interpreted programming languages. The SECBIT_EXEC_RESTRICT_FILE flag instructs compilers and interpreters to use the AT_EXECVE_CHECK option to check for execution permissibility, while the SECBIT_EXEC_DENY_INTERACTIVE flag prohibits the handling of interactive commands. The main idea behind the change is to apply security policies not only to traditional executable files but also to text files with scripts that can be loaded through interpreter execution (i.e., an execution ban can be implemented not only when running ‘./script.sh’ but also when executing in the form of ‘sh script.sh’).
- On x86 systems, support for protected time counters for guest systems has been implemented, preventing changes to the guest system's system clock from the host environment. This capability is based on the mechanism AMD SEV (Secure Encrypted Virtualization), used in virtualization systems to protect virtual machines from interference by the hypervisor or host system administrator.
- In the SELinux mandatory access control system has added disabling the tracker blocking xperm rules, allowing the binding of SELinux policies to specific ioctl() calls or netlink messages.
- For kernel module signing, the default digital signature is no longer SHA1, but the engaged SHA512 algorithm.
- In drivers for guest systems, VirtualBox enabled support for the ARM64 architecture.
- In the KVM hypervisor has continued work utilizing the Intel TDX (Trusted Domain Extensions) mechanism for memory encryption of guest systems.
- In virtio_blk has added support for error recovery mode.
- Network subsystem
- In the implementation of the protocol RxRPC a new feature has emerged the ability to use large UDP frames to increase throughput.
- For TCP, support for the RACK-TLP algorithm has been added for packet loss detection.
- Added a new sysctl parameter tcp_tw_reuse_delay has been introduced, which operates in relation to the namespace (network namespace) and allows the specification of the delay imposed before the system can reuse a network port number after closing a TCP socket.
- Added the ability to select a time provider (PTP) for timestamp generation at the PHY and MAC levels.
- For IPsec within support for the aggregation and fragmentation mechanism for encapsulated IP packets – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- In the networking sockets system has added disabling the tracker blocking information transfer about priority (SO_PRIORITY) in the form of control messages (cmsg). For network sockets has added the SO_RCVPRIORITY option, which includes priority information transfer in the recvmsg() function.
- Hardware
- Added a driver amdxdna for AMD CPU-integrated accelerators NPU (Neural Processing Unit) based on the XDNA, designed to accelerate operations related to machine learning. 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.
- In the i915 driver added new GPU identifiers were implemented, the HDMI initialization failure handler was added, and the GPU engine reset reliability was improved for Haswell and older systems.
- Continued work continues on the DRM (Direct Rendering Manager) driver for GPUs based on Intel Xe architecture, used in Intel Arc family graphics cards and integrated graphics starting with Tiger Lake processors.
- The Nouveau driver has added the ability to transmit GSP-RM log buffers through debugfs.
- In the AMDGPU driver, support for the DRM panic mechanism was implemented, displaying a similar 'blue screen of death' in the event of failures. Preparation for support of the upcoming Radeon RX 9000 graphics card series based on the RDNA4 architecture has continued. Updated 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.
- In the msm DRM driver (Qualcomm Adreno GPU), support for the Qualcomm SM6150 platform (QCS615) was added.
- 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).
- In the vfio driver nvgrace-gpu has added disabling the tracker blocking for NVIDIA Grace Blackwell 200 chips.
- finalrd included driver for Intel THC (Touch Host Controller) used for interaction with touch screens and touchpads on some laptops. Support for Wacom devices with PCI interface was added. Added support for QH Electronics game controllers.
- Added disabling the tracker blocking ARM platforms, SoCs, and devices: 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 SoC SpacemiT K1 based on the RISC-V architecture.
- In the ALSA sound subsystem for MIDI 2.0 expanded API rawmidi and sequencer. The API for offloading compression operations to the sound card has added support for ASRC (Asynchronous Sample Rate Conversion).
- Support for audio systems of devices Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16, and 18i20 has been added. Added support for SteelSeries Arctis 9 wireless headphones.
Source: linux.org.ru
