After two months of development, Linus Torvalds presented announced the release of the kernel Linux 7.0Among the most notable changes: rules for the use of AI assistants, translation of Rust into core capabilities, improved swap performance, enabling PREEMPT_LAZY mode by default, support for filters for io_uring operations, a new FS Nullfs, fserror infrastructure, monitoring tools for XFS, support for remapping in Btrfs, enabling version NFS 4.1 by default, integration of the post-quantum crypto algorithm ML-DSA, activation of AccECN in the network subsystem, initial support for WiFi 8.
The number 7.0 was assigned because the 6.x branch accumulated enough releases to change the first digit of the version number (at the time, version 6.0 was released right after 5.19). The change in numbering is made for aesthetic reasons and is a formal step to alleviate discomfort from the accumulation of a large number of releases in the series.
The new version includes 15,624 fixes from 2,477 developers, with a patch size of 56 MB (changes affected 18,053 files, added 704,060 lines of code, and removed 278,132 lines). In the previous release, there were 15,657 fixes from 2,237 developers, with a patch size of 52 MB. About 51% of all the changes in 7.0 relate to device drivers, approximately 11% pertain to architecture-specific code updates, 14% is related to the network stack, 5% to file systems, and 3% to internal kernel subsystems.
Key innovations in kernel 7.0 (kernelnewbies.org, lwn.net, OpenNET):
- Disk subsystem, input/output, and file systems
- The fserror infrastructure has been implemented and implemented API for obtaining information on I/O errors and metadata corruption while working with files. The proposed infrastructure unifies the transmission of error information from file systems to user space through the fsnotify mechanism.
- In XFS added new capabilities for monitoring the state of the file system from user space. An ioctl operation XFS_IOC_HEALTH_MONITOR is proposed, returning a file descriptor through which information about failures related to metadata corruption or I/O errors can be obtained, as well as tracking changes in FS states, such as unmounting and shutdown. Additionally, a managed background process xfs_healer is proposed, which handles FS state events from user space and, if necessary, automatically initiates recovery procedures.
- Experimental support for the "remapping tree" structure has been added to the Btrfs file system (remap tree), which may serve as an intermediary layer for input-output operations in the future. The essence of the added feature is that after moving the data on the storage device, instead of updating all structures related to this data in the additional 'remap tree' structure, both old and new data addresses are stored, allowing address replacements when accessing the data. This new approach is presented as more reliable and flexible, simplifying further expansion of Btrfs functionality.
- In Btrfs within direct input/output support in situations where the block size exceeds the system's page size.
- finalrd enabled the new filesystem Nullfs, which can be used as a placeholder for the root FS. The Nullfs filesystem is always empty, contains no data, and does not support changes. Its purpose is to serve as the initial FS to simplify the system boot process—other FSs are then mounted on top of Nullfs, and the system call pivot_root() is used to switch the root FS instead of clearing the contents of initramfs and using the associated root FS.
- Implemented updating the file modification time information in a non-blocking mode. Previously, calling file_update_time_flags() with the IOCB_NOWAIT flag returned an error -EAGAIN, which prevented direct write operations from being used in non-blocking mode.
- In filesystems as a separate optional feature translated support for notification locks (lease). By default, such a mechanism is now not activated due to issues with filesystems that were not originally designed for its use. For example, it is not supported by the 9p and cephfs filesystems.
- In the EROFS (Extendable Read-Only File System), intended for use on partitions available in read-only mode, the LZMA algorithm is used for compression by default. Optionally available algorithms include DEFLATE and Zstandard, which are no longer marked as experimental. Shared entries in the page cache for identical files in separate EROFS filesystems have been implemented.
- Removed The laptop_mode, which saves energy consumption by deferring and merging disk write operations to extend the drive's sleep time and reduce the number of wake-ups. This mode has become obsolete, as traditional hard drives have been replaced by solid-state drives in modern mobile devices.
- The F2FS file system has been translated to use large memory folios (large folios).
- The work on the ntfs3 driver has been revived, developed by Paragon Software. Support has been added for file operations based on iomap, implementing the llseek SEEK_DATA/SEEK_HOLE options, and the delalloc mode for deferred block allocation. Meanwhile, in the kernel developers' mailing list in February, there was inclusion in one of the future kernel versions of a new implementation of NTFS — approved ntfsplus , designed to replace ntfs3.By default, during the build process,
- the NFS protocol version 4.1 (CONFIG_NFS_V4_1) is enabled. enabled The export locking of specialized pseudo-FS such as pidfs and nsfs through NFS is implemented. In NFSD, Ensured an experimental option for using POSIX ACL and within support for dynamically adjusting the thread pool based on load has been introduced. has added Official rules have been approved for
- Memory and system services
-
the application of AI assistants and integration into the kernel of automatically generated content. When transmitting generated code, it is required to mark it by indicating the AI assistant used via the Assisted-by tag. AI assistants are prohibited from adding the Signed-off-by tag – the person submitting the patch is considered its author, is responsible for the submitted change, and ensures its quality. Developers are required to manually review the AI-generated code and verify compliance with licensing requirements.Rust support
-
has moved from experimental to translated core kernel capabilities. The integration of a mechanism into the kernel that enables.
-
Completed performance enhancement for swapping. The acceleration is achieved by reducing contention for access to the swap cache, more efficient search within the cache, and decreased fragmentation. The backend based on Swap Table is utilized for caching swap instead of the XArray backend, which allowed for a 22% increase in the number of handled requests in the redis-benchmark test with BGSAVE.Swap TableSupport has been added for the new extension introduced in Clang 22,
-
Thread Safety Analysis. Thread Safety Analysis, allowing potential race conditions and errors caused by incorrect lock settings to be identified during the compilation stage. The extension offers a series of attributes such as GUARDED_BY(…), REQUIRES(…), RELEASE(…) and ACQUIRE(…), which allow for marking functions covered by locks and separating the scopes of locks (defining context). The correctness of the application of synchronization primitives, such as mutexes, is checked during compilation based on the assessment of the activity or inactivity of the related context.
-
to the system call open_tree implemented the OPEN_TREE_NAMESPACE flag simplifies the configuration of isolated containers and accelerates container startup on systems with a large number of mount points. Similar to OPEN_TREE_CLONE, the new flag only copies the specified mount tree, but instead of returning a local file descriptor, it returns a file descriptor in a new namespace where the copied tree is mounted over a copy of the real root filesystem. The OPEN_TREE_NAMESPACE flag is needed to avoid the separate execution of unshare(CLONE_NEWNS) and pivot_root() operations typically used when creating containers.
-
to the system call rseq implemented a mechanism for extending time slices, allowing for additional CPU time to be allocated for uninterrupted execution of critical sections. The idea is to avoid task scheduler interruptions during a critical section that has a lock set, which would transfer control to other threads using the resource while the lock remains set. The time slice extension occurs without additional overhead, but without strict guarantees provided under full priority regulation.
-
For architectures arm64, loongarch, powerpc, riscv, s390, and x86, the task preemption mode in the scheduler is by default changed from PREEMPT_NONE to PREEMPT_LAZY. The number of possible modes has been shortened from four to two – PREEMPT_FULL and PREEMPT_LAZY (the PREEMPT_NONE and PREEMPT_VOLUNTARY modes are left only for architectures that do not support PREEMPT_FULL and PREEMPT_LAZY). The PREEMPT_LAZY mode applies the full preemption model (PREEMPT_FULL) for realtime tasks (RR/FIFO/DEADLINE) but delays the preemption of normal tasks (SCHED_NORMAL) until the tick boundary. The resulting delay reduces the instances of preempting lock holders, which helps bring performance closer to configurations using voluntary preemption, i.e., PREEMPT_LAZY maintains the capabilities of full preemption for realtime tasks while minimizing performance drops for regular tasks.
Enabling PREEMPT_LAZY led to led to a significant regression, halving PostgreSQL performance on ARM64 systems. To mitigate the performance drop, PostgreSQL developers offered can leverage the PR_RSEQ_SLICE_EXTENSION option to reduce the likelihood of preempting a lock holder.
-
Continued the transfer of changes from the branch Rust-for-Linux, related to the use of Rust 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). Thanks to the previously integrated library “syn (crates.io)”, which simplifies the writing of complex macros, the size of Rust code in the kernel has been reduced by streamlining the definitions of existing procedural macros. The capabilities of the kernel, macros, and pin-init libraries have been expanded.
-
In the io_uring asynchronous I/O system has added an option for using non-circular submission queues, which are cached more efficiently when the execution of a request completes before returning from the system call.
-
In the eBPF subsystem, in the BTF (BPF Type Format) mechanism, which provides information for type checking in BPF pseudocode, to find debugging information engaged binary search, which increased the efficiency of loading BPF programs. In eBPF has added support for implicit arguments when calling kfunc (kernel functions available for use in BPF programs) defined with the KF_IMPLICIT_ARGS flag.
-
Removed code to support the initial RAM disk (initrd) based on linuxrc, long declared obsolete. The remaining implementations of initrd are planned to be removed in 2027. Instead of initrd, initramfs should be used (the difference is that initrd places the initial boot environment in a disk image, while initramfs stores it in a filesystem).
-
In the block device zram, used for compressed storage of the swap area in memory, changed the logic of working with compressed memory pages to optionally move data to persistent storage in case available RAM is filled. Previously, memory pages were unpacked before being written to physical media, but now they are saved as-is in compressed form, reducing CPU load and saving energy during standalone operation.
-
jot, timerlat, designed to measure latencies during task scheduler operations, has added the option —bpf-action to run BPF programs when a specified threshold is exceeded.
-
The ftrace tracing system has added a bitmask-list setting for outputting bitmasks in a readable format (in the form of a list of bits rather than a hexadecimal number). tracefs has added capabilities for auditing filters and triggers. Added the perf sched stats command for collecting and displaying statistics on task scheduler performance.
-
Additional build options LOGO_LINUX_MONO_FILE, LOGO_LINUX_VGA16_FILE, and LOGO_LINUX_CLUT224_FILE to specify the logo file to be displayed during kernel boot instead of the standard Tux penguin logo.
-
- Virtualization and Security
- In the io_uring asynchronous I/O system within the ability to attach BPF programs with filters controlling what specific SQE (Submission Queue Entry) operations can do (similar to system calls in io_uring). The added capability is analogous to system call filters. Filters can be bound to specific tasks and they are inherited when other processes are spawned after a fork() call. With active filters, additional filters added on top can only impose further restrictions but cannot disable existing ones. This implemented capability will allow blocking methods the bypassing of system call filtering in sandbox environments, based on performing similar operations provided in io_uring instead of system calls.
- In SELinux has added the ability to manage access to BPF tokens, allowing unprivileged processes to perform certain privileged operations with BPF, such as loading BPF programs into the kernel and creating map structures..
- Added support for the digital signature generation algorithm ML-DSA (CRYSTALS-Dilithium), based on lattice theory and resistant to attacks on quantum computers. Provided the ability to use ML-DSA for core module authentication.
- Removed the ability to use digital signature generation schemes with the SHA-1 algorithm for core module validation (support for loading signed modules is retained).
- In the NETFILTER_PKT audit log added the sport and dport fields for inspecting network port numbers, not just IP addresses.
- For RISC-V architecture systems within support for Zicfiss and Zicfilp extensions that provide hardware capabilities for applying CFI (Control Flow Integrity) protection, preventing disruptions to the normal execution order of instructions (control flow) caused by exploits altering in-memory function pointers.
- In the KVM hypervisor within the ability to pass information to guest systems about the processor's support for the ERAPS (Enhanced Return Address Predictor Security) extension, which minimizes certain CPU state reset operations when returning control from a guest system to the host. Additionally, has added support for assigning hardware to guest systems for performance monitoring (PMU, Performance Monitoring Unit), improving profiling accuracy compared to emulated PMUs.
- In the Hyper-V hypervisor driver has added support for the debugfs interface to view statistics about hypervisor performance.
- Network subsystem
- The AccECN extension is enabled by default (Accurate Explicit Congestion Notification), which implements an improved version of the ECN (wikipedia.org), allowing hosts to mark IP packets in case of congestion instead of discarding them, enabling the identification of the initial stage of congestion in communication channels without packet loss. The original ECN extension has a limitation that allows only one congestion signal to be sent within one TCP round-trip time (RTT). AccECN removes this limitation and allows the receiver to send more than one congestion mark to the sender in the TCP packet header. Congestion control algorithms can utilize the information received to respond more accurately to congestion and avoid sharp reductions in packet transmission rates during minor congestion.
- In the implementation of the network queue management algorithm, Cake has added support for processing multiple queues to distribute the load across several CPU cores. The CAKE algorithm is applied to reduce the negative impact of intermediate packet buffering on edge network devices, aiming to achieve maximum possible throughput and minimal latency even on slow communication channels.
- In sockets, VSOCK,, used for interaction with virtual machines, has added support for network namespaces.
- Added initial implementation of the future standard WiFi 8 (802.11bn, Ultra High Reliability WiFi).
- Additional optimizations that improved the processing performance of incoming UDP packets by 12% during stress testing in a 100-gigabit network.
- Hardware
- In the AMDGPU driver, within disabling the tracker blocking IP blocks,, used in new AMD GPUs such as SMUIO 15.x, PSP 15.x, IH 6.1.1/7.1, MMHUB 3.4/4.2, GC 11.5.4/12.1, SDMA 6.1.4/7.1/7.11.4 and JPEG 5.3.
- Frequency management has been improved in the Nouveau driver for Tegra 186+ systems.
- In the i915 driver has added initial support for the display IP block Xe3p_LPD, used in Intel Nova Lake-P processors.
- Continued work on the drm driver (Direct Rendering Manager) Xe for GPUs based on the Intel Xe architecture, which is used in Intel Arc family graphics cards and integrated graphics starting with Tiger Lake processors. A mode has been added Multi Queue,. Additional the components needed for diagnosing GPU hangs in Mesa. Added support for the MERT mechanism for managing GPU memory access.
- Continued Integration of Nova driver components for NVIDIA GPUs equipped with GSP firmware, used starting with the NVIDIA GeForce RTX 2000 series based on the Turing microarchitecture. The driver is written in Rust. The new version prepares for the implementation of support for Turing-based GPUs and includes various internal changes.
- Added Support for controllers and peripherals with a multi-channel SPI (Serial Peripheral Interface), allowing data to be transmitted in multiple parallel streams.
- Added Driver for combined Type-C connectors used on devices with Apple Silicon chips, integrating USB3, DP-AltMode, and Thunderbolt/USB4 interfaces.
- Added support for audio subsystems of Tegra238 chips, Minisforum V3 SE, iBasso DC04U, Intel Nova Lake, Nova Lake S, and Focusrite Forte.
- Added support for ARM platforms, SoCs, and devices: Arduino UnoQ, OrangePi 6 Plus, OrangePi CM5, Anbernic RG-DS, Realtek Kent, Qualcomm Kaanapali, Mediatek Ezurio, Facebook Anacapa, Microchip LAN9668, Khadas VIM1S, QNAP TS133, i.MX952, i.MX93, i.MX94, VHIP4 EvalBoard, TQ-Systems MBLS1028A, Agilex5, Radxa CM3J, Glymur,
- Support added for smartphones and tablets: Fairphone Gen 6 (SoC Qualcomm Milos/Snapdragon 7s Gen 3), Pixel 3/3 XL, Microsoft Surface Pro 11.
At the same time, the Latin American Free Software Foundation has formed variant completely free kernel 7.0 – Linux-libre 7.0-gnu, cleaned of elements from firmware and drivers containing non-free components or code segments whose scope is restricted by the manufacturer. In the 7.0 release, the cleanup from iwlwifi driver blobs was performed. The cleanup code in the amdgpu, adreno, TI PRUeth, air_en8811h, ath12k, TI VPE, rtw8852b, rt1320, rt5575 SPI, tas2783, Intel catpt drivers has been updated. Blob names in dts files (devicetree) for ARM chips were cleaned.
Source: linux.org.ru
