Release of Linux Kernel 6.3

After two months of development, Linus Torvalds has released Linux Kernel 6.3. Among the most notable changes are the cleanup of outdated ARM platforms and graphic drivers, continued integration of Rust language support, the hwnoise utility, support for red-black tree structures in BPF, BIG TCP mode for IPv4, an integrated Dhrystone performance test, the ability to prevent execution in memfd, support for creating HID drivers using BPF, and changes in Btrfs aimed at reducing block group fragmentation.

The new version includes 15,637 fixes from 2,055 developers; the patch size is 76 MB (the changes affected 14,296 files, with 1,023,183 lines of code added and 883,103 lines removed). In comparison, the previous version saw 16,843 fixes from 2,178 developers; the patch size was 62 MB. About 39% of all changes in Kernel 6.3 are related to device drivers, approximately 15% pertain to updates of architecture-specific code, 10% is associated with the network stack, 5% relates to file systems, and 3% concerns internal kernel subsystems.

Key innovations in Kernel 6.3:

  • Memory and system services
    • Significant code cleanup has been performed related to old and unused ARM platforms, resulting in a reduction of the kernel's source texts by 150,000 lines. More than 40 old ARM platforms have been removed.
    • The ability to create drivers for input devices with a Human Interface Device (HID) interface has been implemented in the form of BPF programs.
    • The transfer from the Rust-for-Linux branch of additional functionality related to the use of Rust as a secondary language for developing drivers and kernel modules has continued. Rust support is not enabled by default and does not make Rust a mandatory build dependency for the kernel. The functionality proposed in earlier releases has been extended with support for types Arc (implementation of reference-counted pointers), ScopeGuard (cleans up when exiting scope), and ForeignOwnable (facilitates moving pointers between C and Rust code). The 'borrow' module (type 'Cow' and trait 'ToOwned') has been removed from the 'alloc' package. It is noted that the state of Rust support in the kernel is already close to accepting the first modules written in Rust.
    • User-mode Linux (running the kernel as a user process) on x86-64 systems has implemented support for code written in Rust. Support has been added for building User-mode Linux using clang with optimizations included at the linking stage (LTO).
    • A utility called hwnoise has been introduced to track delays caused by hardware peculiarities. It identifies deviations in operation execution times (jitter) when interrupt processing is disabled, exceeding one microsecond over 10 minutes of computations.
    • A kernel module has been added that implements the Dhrystone performance test, which can be used to evaluate CPU performance in configurations without user-space components (for example, during porting stages for new SoCs where only the kernel boot is implemented).
    • A kernel command line parameter ‘cgroup.memory=nobpf’ has been added, which disables memory consumption accounting for BPF programs, which can be useful for systems with isolated containers.
    • For BPF programs, a red-black tree data structure has been proposed, using kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) instead of introducing a new mapping type.
    • The mechanism of restartable sequences (rseq) has been enhanced with the ability to pass process identifiers of parallel execution (memory-map concurrency ID), which are identified by the CPU number. Rseq provides means for quick atomic execution of operations that, upon being interrupted by another thread, are cleared and a retry is attempted.
    • Support for SME 2 (Scalable Matrix Extension) instructions has been implemented on ARM processors.
    • For s390x and RISC-V RV64 architectures, support for the ‘BPF trampoline’ mechanism has been implemented, allowing for minimized overhead when passing calls between the kernel and BPF programs.
    • On systems with RISC-V architecture processors, ‘ZBB’ instructions have been implemented to accelerate string operations.
    • Support for kernel address space randomization (KASLR), kernel relocation, hardware breakpoints, and the kprobe mechanism has been implemented for systems based on the LoongArch instruction set architecture (used in Loongson 3 5000 processors, which implements a new RISC ISA similar to MIPS and RISC-V).
    • In the DAMOS (Data Access Monitoring-based Operation Schemes) mechanism, which allows for memory release based on memory access frequency, filter support has been implemented to exclude certain memory areas from processing in DAMOS.
    • The minimal standard C library Nolibc has implemented support for the s390 architecture and the Arm Thumb1 instruction set (in addition to ARM, AArch64, i386, x86_64, RISC-V, and MIPS support).
    • Objtool has been optimized to accelerate kernel builds and reduce peak memory consumption during compilation (building the kernel with the 'allyesconfig' mode no longer results in forced process termination issues on systems with 32 GB of RAM).
    • Support for building the kernel with the Intel ICC compiler has been discontinued, as it has been non-functional for a long time and no one expressed a desire to fix it.
  • Disk subsystem, input/output, and file systems
    • In tmpfs, support for mapping user identifiers of mounted file systems has been implemented, allowing mapping of files of a specific user on a mounted foreign partition to another user in the current system.
    • In Btrfs, to reduce block group fragmentation, extents are now separated by size when allocating blocks, meaning any block group is now limited to small (up to 128KB), medium (up to 8MB), and large extents. The implementation of raid56 has been refactored. The code for checksum verification has been revised. Performance optimizations have been made, enabling the send operation to be sped up by up to 10 times through caching utime for directories and executing commands only when necessary. Operations for fiemap have been sped up threefold by skipping backlink checks for shared data (snapshots). Metadata operations have been accelerated by 10% through optimized key searching in b-tree structures.
    • The performance of the ext4 file system has been improved by enabling multiple processes to perform direct input/output operations on pre-allocated blocks simultaneously, using shared inode locks instead of exclusive locks.
    • In f2fs, efforts have been made to improve code readability. Important issues related to atomic writes and the new extent cache have been addressed.
    • In the EROFS (Enhanced Read-Only File System), designed for use in partitions available in read-only mode, the ability to bind CPU operations for decompressing compressed file content has been implemented to reduce access delays to data.
    • The BFQ I/O scheduler has added support for advanced rotary disk drives, such as those using multiple separately controlled head actuators (Multi Actuator).
    • Support for encryption of data using the AES-SHA2 algorithm has been added to the NFS client and implementation. server In the FUSE (Filesystems In User Space) subsystem, support for an extension request mechanism has been added, allowing extra information to be included in the request. Based on this capability, the addition of group identifiers to the FS request has been implemented, necessary for accounting access rights when creating objects in the FS (create, mkdir, symlink, mknod).
    • Support for enhanced Hyper-V hypercalls has been added to the KVM hypervisor for x86 systems, and their passing to a handler operating in the host environment in user space has been ensured. This change has enabled support for nested execution of the Hyper-V hypervisor.
  • Virtualization and Security
    • In KVM, the restriction of guest system access to PMU (Performance Monitor Unit) events related to performance measurement has been simplified.
    • The memfd mechanism, which allows identification of memory areas via the file descriptor passed between processes, has added the capability to create areas where code execution is prohibited (non-executable memfd) and where execution rights cannot be granted in the future.
    • A new prctl operation, PR_SET_MDWE, has been added to block attempts to enable memory access rights that allow both writing and execution.
    • Protection against Spectre-class attacks has been added and enabled by default, implemented based on the automatic IBRS mode (Enhanced Indirect Branch Restricted Speculation) proposed in AMD Zen 4 processors, which allows adaptive permission and prohibition of speculative instruction execution during interrupt handling, system calls, and context switching. The proposed protection results in lower overhead compared to Retpoline protection.
    • Support for encryption of data using the AES-SHA2 algorithm has been added to the NFS client and implementation.
    • A vulnerability has been fixed that allowed bypassing protection against Spectre v2 attacks when using simultaneous multithreading technology (SMT or Hyper-Threading). This was caused by disabling the STIBP (Single Thread Indirect Branch Predictors) mechanism when selecting the IBRS protection mode.
    • For ARM64-based systems, a new build target "virtconfig" has been added, which activates only the minimum set of kernel components necessary for booting in virtualization systems.
    • Support for syscall filtering through the seccomp mechanism has been added for the m68k architecture.
    • Support has been added for embedded CRB TPM2 (Command Response Buffer) devices in AMD Ryzen processors, based on Microsoft Pluton technology.
  • Network subsystem
    • A netlink interface has been added for configuring the PLCA (Physical Layer Collision Avoidance) sublayer, defined in the IEEE 802.3cg-2019 specification and used in Ethernet networks 802.3cg (10Base-T1S), optimized for connecting Internet of Things and industrial systems. The use of PLCA allows for increased performance in Ethernet networks with a shared media.
    • Support for the "wireless extensions" API for managing WiFi 7 (802.11be) wireless interfaces has been discontinued as this API does not cover all necessary settings. A warning will now be displayed for most current devices when attempting to use the "wireless extensions" API, which continues to be supported as an emulated layer.
    • Detailed documentation for the netlink API has been prepared for both kernel developers and application developers in user space. A ynl-gen-c utility has been implemented to generate C code based on YAML specifications of the Netlink protocol.
    • Support for the IP_LOCAL_PORT_RANGE option has been added to network sockets to simplify the configuration of outgoing connections through address translators without using SNAT. When using one an IP address on multiple hosts, IP_LOCAL_PORT_RANGE allows each host to use its own range of outgoing network ports, while the gateway redirects packets based on port numbers.
    • For MPTCP (MultiPath TCP), there is a capability for processing mixed streams that utilize both IPv4 and IPv6 protocols. MPTCP is an extension of the TCP protocol designed to establish TCP connections that deliver packets simultaneously over multiple routes through different network interfaces tied to different IP addresses.
    • For IPv4, support for the BIG TCP extension has been added, which allows for increasing the maximum TCP packet size to 4GB to optimize the performance of high-speed internal data center networks. This packet size increase, given the 16-bit header field size, is achieved through the implementation of 'jumbo' packets, where the size in the IP header is set to 0, and the actual size is transmitted in a separate 32-bit field in an attached header.
    • A new sysctl parameter, default_rps_mask, has been added, allowing the default RPS (Receive Packet Steering) configuration to be set, which distributes the processing of incoming traffic across CPU cores at the interrupt handler level.
    • Support for queue management disciplines for traffic shaping, including CBQ (class-based queuing), ATM (ATM virtual circuits), dsmark (differentiated service marker), tcindex (traffic-control index), and RSVP (resource reservation protocol), has been discontinued. These disciplines have long been abandoned, and there were no volunteers to continue their maintenance.
  • Hardware
    • All graphical drivers based on DRI1 have been removed: i810 (older integrated Intel 8xx graphics), mga (Matrox GPU), r128 (ATI Rage 128 GPU, including Rage Fury, XPERT 99, and XPERT 128 cards), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo), and via (VIA IGP), which were declared obsolete in 2016 and have not been supported in Mesa since 2012.
    • Obsolete framebuffer drivers (fbdev) omap1, s3c2410, tmiofb, and w100fb have been removed.
    • A DRM driver for Intel Meteor Lake (14th generation) VPU (Versatile Processing Unit) units integrated into the CPU has been added, designed to accelerate operations related to computer vision and machine learning. The driver is implemented using the 'accel' subsystem, aimed at supporting computational accelerators that can be provided in the form of standalone ASICs as well as video IP blocks within SoCs and GPUs.
    • Support for discrete Intel Arc (DG2/Alchemist) graphics cards has been expanded in the i915 (Intel) driver, preliminary support for Meteor Lake GPU has been implemented, and support for Intel Xe HP 4tile GPU has been included.
    • The amdgpu driver has added support for AdaptiveSync technology and the ability to use secure display mode (Secure Display) with multiple monitors. Support for DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x, and DP 2.1 has been updated.
    • The msm driver (Qualcomm Adreno GPU) has added support for the SM8350, SM8450, SM8550, SDM845, and SC8280XP platforms.
    • Support for old ioctl calls has been discontinued in the Nouveau driver.
    • The etnaviv driver has added experimental support for the VeriSilicon Neural Network Processor (NPU VerSilicon).
    • A pata_parport driver has been implemented for IDE drives connected through the parallel port. The added driver allowed the removal of the old PARIDE driver from the kernel and upgraded the ATA subsystem. A limitation of the new driver is the inability to connect both a printer and a disk through the parallel port simultaneously.
    • The ath12k driver has been added for wireless cards based on Qualcomm chips with Wi-Fi 7 support. Support has also been added for wireless cards using RealTek RTL8188EU chips.
    • Support has been added for 46 boards with ARM64 architecture processors, including the Samsung Galaxy Tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD, as well as devices based on the Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450, and SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588, and RK3328, TI K3 (AM642/AM654/AM68/AM69).

Simultaneously, the Latin American Free Software Foundation has developed a variant of the fully free kernel 6.3 — Linux-libre 6.3-gnu, cleaned from firmware and driver elements containing non-free components or code segments restricted by the manufacturer. In the 6.3 release, the cleaning of blobs in the new ath12k, aw88395, and peb2466 drivers, as well as in new device tree files for qcom devices based on AArch64 architecture has been carried out. The code for blob cleaning in the amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110 drivers and in drivers for DVB cards with software decoding, as well as in precompiled BPF files has been updated. The cleaning of drivers mga, r128, tm6000, cpia2, and r8188eu has ceased as they have been removed from the kernel. Blob cleaning in the i915 driver has been improved.

Source: opennet.ru

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