Efter to måneder med udvikling har Linus Torvalds præsenteret udgivelsen af kerne Linux 6.16. Blandt de mest iøjnefaldende ændringer er: en driver til acceleration af OpenVPN, Kexec HandOver-mekanismen, aktivering af fem-niveau side-tabel for x86 som standard, fjernelse af DCCP-protokollen, blokdriveren zloop, mulighed for at sende core-dumps via UNIX-sokkel, støtte for atomar skrivning i XFS, offload-behandling af lyd til USB-enheder, optimeringer i Ext4, en virtuel TPM-driver (Trusted Platform Module), fuld implementering af Device Memory TCP, støtte for anonymiserede kanaler i io_uring, forberedelse til integration af Asahi DRM-driveren, 'usermode queue' mekanismen i AMDGPU-driveren, støtte for Intel TDE (Trusted Domain Extensions) og Intel APE (Advanced Performance Extensions).
Den nye version inkluderer 15.924 rettelser fra 2.145 udviklere, patchstørrelsen er 50 MB (ændringerne har berørt 13.793 filer, tilføjet 655.451 linjer kode, fjernet 316.441 linjer). I den tidligere udgave var der 15.945 rettelser fra 2.154 udviklere, og patchstørrelsen var 59 MB. Omkring 45% af alle ændringerne i 6.16 er relateret til enhedsdrivere, cirka 16% angår opdatering af hardware-specifik kode, 13% er relateret til netværksstakken, 4% er relateret til filsystemer, og 3% vedrører interne kerne-subsystemer.
Hovednyhederne i kerne 6.16:
- DiskSubsystem, input/output og filsystemer
- En zloop-driver er blevet tilføjet til oprettelse af zonerede blok-loopback-enheder, der monteres i loop-tilstand. Driveren emulerer funktionen af almindelige blok-enheder ved at bruge flere filer fra det eksisterende filsystem (en fil til at gemme hver zone). Denne funktion kan være nyttig til test af filsystemer, enhedsrutere og applikationer for at kontrollere deres understøttelse af zonede enheder, der anvender opdeling i zoner af blokgrupper eller sektorer, hvor kun sekventiel tilføjelse af data er tilladt med opdatering af hele blokgruppens indhold.
- I XFS-filsystemet er der implementeret støtte til atomar skrivning af store datamængder — flere blokke kan nu skrives i atomar tilstand (enten bliver alle blokke skrevet korrekt, eller ingen blokke bliver skrevet).
- I filsystemet Ext4 er ydeevnen af mekanismen "fast commit" forbedret. Der er tilføjet support for store hukommelsessider (large folios) til almindelige filer, hvilket i udførte tests har øget ydeevnen med 37 % under intensiv sekventiel I/O. Der er tilføjet support for atomiske skriveoperationer, der dækker flere blokke.
- I driveren til filsystemet ext2 er supporten for DAX-mekanismen, der muliggør direkte adgang til filsystemet uden om sidecachen, blevet erklæret forældet. Fjernelse af DAX fra ext2-driveren er planlagt til slutningen af året. Årsagen er, at ext2-driveren betragtes som en stabil referenceimplementering, hvor brugen af specifikke funktioner, der ikke har fået den rette udbredelse, ikke er tilladt.
- Filsystemerne OrangeFS, UFS, BFS og OMFS er blevet opgraderet til at bruge det nye API til montering af partitioner.
- Der er tilføjet en indstilling vfs_cache_pressure_denom til sysctl for at styre antallet af poster i "dentry"-cachen (intern repræsentation af katalogelementer) under forhold med lavt hukommelse i systemet. Jo højere værdien sættes, jo flere poster kan blive udskiftet fra cachen (fewer entries will remain in the cache) ved hukommelsesmangel.
- I Bcachefs er der tilføjet en mulighed "rebalance_on_ac_only", der forbyder udførelse af genbalancerings- og baggrundskomprimeringsoperationer, når systemet drives på batteri. Sletningsoperationerne for snapshots og enheder er blevet accelereret. Hukommelsesforbruget er reduceret ved montering i kun-læse-tilstand. Det er blevet muligt at udføre nogle genopretningsoperationer efter fejl i baggrunden uden at stoppe arbejdet med filsystemet.
- Strømstyringssystemet er blevet tilladt at fryse filsystemer og EFI-variabler for dvaletilstand og søvn (hvis FS allerede er frosset af en brugerbehandlingshandler, udføres en genfrysning ikke).
- Der er blevet tilføjet mulighed for at accelerere EROFS ved hjælp af Intel-processorerne indbyggede accelerator QAT (QuickAssist Technology), som tilbyder værktøjer til at fremskynde beregninger relateret til kompression og kryptering.
- I NFS er den maksimale størrelse af datablokke for læse- og skriveoperationer øget fra 1 MB til 4 MB (standardværdien er 1 MB, da ikke alle klienter understøtter større størrelser).
- Uprivilegerede brugere, der har CAP_SYS_ADMIN-rettigheder i et separat brugernavnrum (user namespace), men som ikke har udvidede rettigheder i roden af brugernavnrummet, får mulighed for at bruge fanotify-mekanismen til at overvåge ændringer i filsystemerne.
- For filsystemer, der bruger FUSE-understøttelsen, er der tilføjet funktionalitet til at rydde alle cachede posteringer af kataloger (dentries) på én gang. FUSE-understøttelsen har fået understøttelse af store sider i hukommelsen.
- I OverlayFS-filsystemet er der implementeret understøttelse af oprettelse af lag med data i uprivilegerede brugernavnrum, hvor integritetskontrol baseres på dm-verity-modulet. Denne mulighed gør det muligt at kombinere betroede lag med metadata med ikke-betroede datalag, der behandles i uprivilegerede brugernavnrum.
- Hukommelse og systemtjenester
- Der er tilføjet en KHO (Kexec HandOver) mekanisme til at starte en ny kerne fra den gamle uden at miste systemets tilstand. Før kontrollen overgår til den nye kerne, kan tilstanden for de vigtigste kerneundersystemer blive serialiseret til et hukommelsesområde, der ikke vil blive berørt af efterfølgende operationer. Den nye kerne, der får kontrol, gendanner den serialiserede tilstand. Baseret på KHO udvikles Live Update Orchestrator (LUO) undersystemet, som muliggør genstart af kernen uden at stoppe enhedsdriften.
- Der er tilføjet en kernebyggemulighed CONFIG_X86_NATIVE, som muliggør brug af kompileringsmuligheden "-march=native" for optimering med hensyn til processorens muligheder på det aktuelle system.
- Der er tilføjet støtte til udvidelsen af Intel APX (Advanced Performance Extension) instruktionssættet, som giver 16 yderligere generelle registre (ud over de 16 eksisterende), hvilket gør det muligt at bruge færre hukommelseslæsning og -skrivning operationer for at øge ydeevnen og reducere energiforbruget.
- Der er tilføjet en automatisk justeringsmetode for hukommelsesfordelingspolitikken i NUMA-systemer, hvor alle nodevægte genberegnes ved fremkomsten af nye oplysninger om båndbredde under opstart eller ved varm tilslutning af hukommelse.
- Implementeringen af futexer har nu understøttelse af en lokal hash-tabel for processer (local futex_hash_bucket), som i modsætning til den tidligere støttede fælles hash-tabel for alle processer, er lokal for en enkelt proces og deles af alle tråde i denne proces. Lokale hash-tabeller anvendes kun til futex-operationen PROCESS_PRIVATE. Derudover er der i den nye version tilføjet support for FUTEX2_NUMA og FUTEX2_MPOL muligheder, der tillader indflydelse på placeringen af futexer i hukommelsen, så de placeres tættere på de processer, der bruger dem.
- For x86_64-systemer er der indført permanent støtte til fem-niveau hukommelsesside-tabeller (indstillingen CONFIG_X86_5LEVEL, der kontrollerede aktiveringen af fem-niveau tabeller, er fjernet).
- I driveren intel_pstate, som styrer energiforbrugsparametre (P-state) på systemer med Intel-processorer, er der tilføjet støtte til opgaveplanlæggeren, der tager højde for energiforbruget (EAS — Energy Aware Scheduling) på hybride processorer, der kombinerer højtydende og energieffektive CPU-kerner, såsom Intel Lunar Lake.
- Der er tilføjet grænseflader i sysfs: "\/sys\/devices\/system\/cpu\/cpuN\/cpu_capacity" for at få oplysninger om kapaciteterne for forskellige CPU'er i hybride processorer og "\/sys\/devices\/system\/cpu\/cpuidle\/intel_c1_demotion" for at styre muligheden for at holde CPU'en i en mere effektiv tilstand, selvom kernen forsøger at overføre CPU'en til en lavere energiforbrugstilstand (for eksempel kan kernen anmode om at overgå til en C6 energiforbrugstilstand, men firmwaren kan ved høj vækstsintensitet holde den i C1 tilstand).
- For ARM64-arkitekturen er der tilføjet støtte for lazy preemption mode (PREEMPT_LAZY), som svarer til fuld udskydning («full preemption») for realtime-opgaver (RR/FIFO/DEADLINE), men forsinker udskydningen af almindelige opgaver (SCHED_NORMAL) indtil tik-grænsen.
- For ARM64-arkitekturen er der tilføjet støtte til brug af SME-udvidelser (Scalable Matrix Extension), som aktiveres via indstillingen CONFIG_ARM64_SME.
- Ændringerne fra Rust-for-Linux-grenen fortsætter, som vedrører brugen af Rust som det andet sprog til udvikling af drivere og kerne-moduler (Rust-support er ikke aktiveret som standard og medfører ikke, at Rust bliver en obligatorisk byggeafhængighed for kernen). For moduler skrevet i Rust er der mulighed for at bruge configfs. Der er tilføjet de nødvendige abstraktioner til udvikling af grafiske drivere. Mulighederne for modulerne alloc, time, str, list, workqueue og page er blevet udvidet. Der er tilføjet support for makroen 'assert!' i tests baseret på KUnit. Et sæt abstraktioner til styring af CPU-frekvens samt API'er relateret til energistyring er blevet tilføjet. Der er tilføjet support for datalisten 'xarray'.
- For RISC-V-arkitekturen er implementeringen af systemopkaldet getrandom() blevet overført, optimeret via vDSO (virtual dynamic shared object), som gør det muligt at flytte systemopkaldshåndtereren fra kernen til brugerrummet og undgå kontekstskift. I udførte tests har optimeringen fremskyndet opnåelsen af tilfældige tal med 17 gange. Der er også implementeret support for de vektorielle udvidelser Zicbop, Zabha og Svinval, der anvendes i SiFive-processorer.
- For LoongArch-arkitekturen er grænsen for antallet af CPU'er i systemet hævet fra 256 til 2048. Supporten for task scheduler SCHED_MC (Multi-core) er blevet tilføjet.
- Muligheden for at bruge Unix-sockets til at overføre filbeskrivere er blevet tilføjet. For at deaktivere denne mulighed kan applikationer anvende flaget SO_PASSRIGHTS i setsockopt().
- Muligheden for at mappe den ringbuffer, der anvendes til sporing af kernearbejde, ind i brugerminde er blevet givet.
- Crash-dump-håndterere, der anvendes til at generere rapporter om problemer efter en kernefejl, kan nu bruge de LUKS-nøgler, der blev anvendt af den defekte kerne, til at gemme crash-dumps i krypterede FS.
- Operationen IORING_OP_PIPE til oprettelse af unavngivne kanaler er blevet tilføjet til io_uring-systemet for asynkron ind-/udgang, hvilket svarer til systemopkaldet pipe2, men undtager support for faste filbeskrivere.
- En kernel kommando-linjeoption 'rt_group_sched' er blevet tilføjet til at styre aktiveringen af scheduler for grupper af realtidsopgaver (SCHED_RR). Denne option svarer til indstillingen RT_GROUP_SCHED i Kconfig.
- For devices based on the CXL (Compute Express Link) bus, used to establish high-speed interaction between the CPU and memory devices, support for RAS (Reliability, Availability, Serviceability) extensions has been implemented, allowing various schemes for error detection and correction. CXL enables the connection of new memory areas provided by external memory devices and uses them as additional resources of the physical address space to expand system RAM (DDR) or persistent memory (PMEM).
- The minimum required GCC version for all architectures for kernel compilation has been raised to GCC 8. Additionally, at least binutils version 2.30 is now required for compilation.
- The uselib() system call has been removed, which has long been deprecated; mmap() is now used for program access to shared libraries.
- Virtualisering og sikkerhed
- Initial support has been added for using the Intel TDX (Trusted Domain Extensions) mechanism to protect guest systems running under the KVM hypervisor from intervention and analysis by the host system administrator and from physical attacks on hardware. Protection is provided through memory encryption. virtual machines.
- A virtual TPM (Trusted Platform Module) driver has been added, enabling virtual machines to interact with TPM devices (Trusted Platform Module) emulated by the SVSM (Secure VM Service Module).
- The ability to use the GCC plugin randstruct has been restored, randomizing the layout of data structures at compile time to complicate the exploitation of vulnerabilities.
- Support for the IMA (Integrity Measurement Architecture) technology has been added for integrity checking during the booting of new kernels using the kexec system call.
- Work has been done to reduce the performance impact of using SELinux. To speed up operations, a cache of access check results for directories has been added. The genfscon rules now allow for the use of masks.
- In the code for interacting with EFI, the option has been provided to embed the SBAT (UEFI Secure Boot Advanced Targeting) section with metadata about revoked versions of boot components.
- In the loaded modules, the section '.static_call_sites' has been switched to read-only mode after initialization is complete.
- For 64-bit ARM systems, nested virtualization support has been implemented in the KVM hypervisor (disabled by default).
- Stable support for the RISC-V architecture has been announced in the KVM hypervisor.
- Netværkssubsystem
- The ovpn driver has been adopted, significantly accelerating OpenVPN performance by offloading encryption, packet processing, and connection management operations to the Linux kernel. The driver eliminates overhead related to context switching and allows optimization through direct access to the kernel's internal APIs, avoiding slow data transfer between the kernel and user space (encryption, decryption, and routing are performed by the module without sending traffic to the handler in user space).
- The Device Memory TCP mechanism now supports sending data from device memory (TX path). Previously, for the sake of simplifying the integration of Device Memory TCP into the kernel, functionality was limited only to receiving data (RX path). Device Memory TCP allows the use of network sockets for direct sending of peripheral device memory contents over the network (zero-copy mode), as well as direct placement of network packet contents in the device memory area on the receiving side. Data transmitted in packets is sent from the network card to the peripheral device memory (DMABUF), for example, to the GPU video memory, or from device memory directly to the network card, bypassing the CPU, while packet headers go into normal kernel buffers.
- The ability to send core dump contents through an AF_UNIX socket has been provided, allowing for the creation of more secure user-space core dump handlers that are not tied to privileged process calls by the kernel.
- Support for the DCCP (Datagram Congestion Control Protocol) has been removed, as it has not gained traction and has remained in the kernel without maintenance for five years. The removal of DCCP from the kernel will eliminate barriers preventing the restructuring of the inet_connection_sock data structure to improve TCP stack efficiency. Support for netfilter modules for DCCP packet filtering is preserved.
- For easier error handling when using sockets, SO_PEERPIDFD, the kernel can now pass pidfd for already terminated processes (pidfd is linked to specific processes and unlike pid is not reassigned).
- Using BPF, it is now possible to create packet queue management handlers in the network stack (qdiscs) to influence the order of packet processing.
- In the network file system AFS, GSSAPI (Generic Security Services API) is employed for managing encryption of connections with servere YFS and OpenAFS.
- A significant number of optimizations have been made. The organization of locks for IPv6 routing tables has been reworked (some operations with routes are now performed up to 3 times faster). The software calculation of checksums crc32c has been accelerated. The GRO engine for tunneled UDP traffic has been sped up by 10%. The auto-tuning of the receiving buffer for TCP has been improved, and the default limits have been increased (in tests, the throughput for single streams over a 200Gbs channel has increased by 60%).
- In Netfilter, the ability to use masks in the names of network devices used in netdev and flowtable has been added. Connection tracking (conntrack) information has been integrated into the nft trace infrastructure. The extraction of connection tracking tables (conntrack) through procfs has been accelerated.
- Udstyr
- Support for offloading audio stream processing to USB interface sound devices (USB audio offload) has been added. This change significantly reduces power consumption for portable devices by allowing the audio stream to continue processing while the rest of the system is in sleep mode. Previously, Android platform kernels had a specific implementation of audio offload processing for USB devices, and now a universal implementation has appeared in the main kernel that can be used by any projects.
- Integration of Nova driver components for NVIDIA GPUs equipped with GSP firmware, starting from the NVIDIA GeForce RTX 2000 series based on the Turing microarchitecture, has continued. The driver is written in Rust. In addition to the nova-core component added in the previous release, which implements the basic level of abstraction over the GSP firmware interfaces, version 6.16 includes the initial implementation of the nova-drm (Direct Rendering Manager) driver for interacting with GPUs from user space.
- The process of advancing the Asahi DRM driver for Apple AGX GPUs used in Apple Silicon chips has begun. The driver is written in Rust. At this stage, only the header files with UAPI from the Asahi driver necessary for Mesa have been included in the kernel, while the main code of the Asahi driver will be integrated later.
- Support for NVIDIA GPUs from the Hopper and Blackwell families has been added to the Nouveau driver.
- Work on the Intel Xe architecture-based drm driver (Direct Rendering Manager) for GPUs, which is used in Intel Arc graphics cards and integrated graphics starting from Tiger Lake processors, has continued. The ability to use different firmware files for different Intel GPU families has been added.
- Support for the 'usermode queue' mechanism has been implemented in the AMDGPU driver, allowing the creation of custom work queues in user space and sending them directly to the GPU without contacting the kernel scheduler. Support for 'usermode queue' is enabled for Navi 4X and GFX 12 GPUs.
- Support for sound systems including Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 and CS48L32, Everest Semiconductor ES8375 and ES8389, Pioneer DJM-V10, Longsoon-1 AC'97, NVIDIA Tegra264, Richtek ALC203, RT9123, and Rockchip SAI, as well as new Intel AVS platforms has been added.
- Support for ARM platforms, SoCs, and devices has been added: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
- The driver for video capture boards based on STA2X11 chips has been removed.
Samtidig har den latinske fond for fri software dannet en version af det helt frie kerne 6.16 — Linux-libre 6.16-gnu, renset for elementer af firmware og drivere, der indeholder ikke-frie komponenter eller kodelinjer, hvis anvendelsesområde er begrænset af producenten. I version 6.16 er opladningen af blobs i de nye Intel qat 6xxx crypto, ST vd55g1 sensor, ath12k AHB wifi, Aeonsemi AS21xxx og MediaTek 25Gb Ethernet drivere neutraliseret. Der er foretaget en oprydning af blob-navne i dts-filer (devicetree) for ARM-chips fra Qualcomm og MediaTek. Koden til oprydning af blobs i Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k og ath12k wifi, Texas Instruments tas2781 og Renesas R-Car gen4 PCIe drivere er blevet opdateret.
Kilde: opennet.ru
