Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 6.3. Blandt de mest markante ændringer er: oprydning af forældede ARM-platforme og grafiske drivere, fortsat integration af understøttelse af Rust-sprog, værktøjet hwnoise, understøttelse af red-black træstrukturer i BPF, BIG TCP-tilstand for IPv4, indbygget ydelsestest Dhrystone, mulighed for at forbyde eksekvering i memfd samt support til oprettelse af HID-drivere ved hjælp af BPF, med ændringer i Btrfs til at reducere fragmenteringen af blokgrupper.
Den nye version indeholder 15637 rettelser fra 2055 udviklere; patch-størrelsen er 76 MB (ændringerne dækkede 14296 filer, tilføjet 1023183 linjer med kode, fjernet 883103 linjer). Til sammenligning blev der i den tidligere version foreslået 16843 rettelser fra 2178 udviklere; patch-størrelsen var 62 MB. Omkring 39% af alle ændringerne i kernen 6.3 vedrører enhedsdrivere, cirka 15% af ændringerne er relateret til opdatering af hardware-arkitekturspecifik kode, 10% relaterer til netværksstakken, 5% til filsystemer og 3% til de interne delsystemer i kernen.
De vigtigste nyheder i kernen 6.3:
- Hukommelse og systemtjenester
- Der er foretaget en betydelig oprydning af kode relateret til ældre og ubrugte ARM-platforme, hvilket har reduceret størrelsen på kildeteksterne i kernen med 150.000 linjer. Over 40 gamle ARM-platforme er fjernet.
- Muligheden for at oprette drivere til inputenheder med HID (Human Interface Device) interfaces implementeret i form af BPF-programmer er blevet realiseret.
- Overførsel fra Rust-for-Linux-grenen fortsætter med yderligere funktionalitet relateret til brugen af Rust som det andet sprog til udvikling af drivere og kernel-moduler. Rust-support er ikke aktiveret som standard og medfører ikke, at Rust inkluderes som en obligatorisk build-afhængighed for kernen. Den funktionalitet, der blev foreslået i tidligere udgivelser, er blevet udvidet med support for typerne Arc (implementering af reference-tæller pointere), ScopeGuard (rensning ved udgang fra scope) og ForeignOwnable (muliggør flytning af pointere mellem C og Rust-kode). Modulet 'borrow' (typen 'Cow' og træk-typen 'ToOwned') er blevet fjernet fra 'alloc'-pakken. Det bemærkes, at støtte for Rust i kernen nærmer sig tidspunktet for at begynde at optage de første moduler skrevet i Rust.
- I User-mode Linux (kørsel af kernen som en brugerproces) på x86-64 systemer er der implementeret support for kode skrevet i Rust. Der er tilføjet support til at bygge User-mode Linux ved hjælp af clang med optimeringer inkluderet under linking (LTO).
- Der er tilføjet et værktøj, hwnoise, til at overvåge forsinkelser forårsaget af hardware-specifikke egenskaber. Det bestemmer afvigelser i udførelsestid for operationer (jitter), der overstiger en mikrosekund over 10 minutters beregninger, når afbrydelsesbehandling er deaktiveret.
- Der er tilføjet et kerne-modul med implementeringen af performance testen Dhrystone, som kan bruges til at vurdere CPU'ens ydeevne i konfigurationer uden brugerområdeværdier (f.eks. i portering til nye SoC'er, hvor kun kernen er implementeret).
- Der er tilføjet et kommandolinjeparameter til kernen "cgroup.memory=nobpf", som deaktiverer overvågning af hukommelsesforbruget for BPF-programmer, hvilket kan være nyttigt til systemer med isolerede containere.
- For BPF-programmer er der foreslået en implementering af en datastruktur i form af en red-black tree, der bruger kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) i stedet for at tilføje en ny types mappning.
- I mekanismen til genstartbare sekvenser (rseq, restartable sequences) er der tilføjet mulighed for at overføre identifikatorer for parallel udførelse (memory-map concurrency ID) til processer, der er identificeret med CPU-nummeret. Rseq giver midler til hurtig atomisk udførelse af operationer, som i tilfælde af afbrydelse fra en anden tråd bliver ryddet op, og der forsøges igen.
- På ARM processorer er der sikret support for instruktioner SME 2 (Scalable Matrix Extension).
- For arkitekturerne s390x og RISC-V RV64 er der implementeret support for "BPF trampoline" mekanismen, som minimerer overhead ved at overføre opkald mellem kernen og BPF-programmerne.
- På systemer med processorer baseret på RISC-V arkitekturen er brugen af "ZBB" instruktioner implementeret for at accelerere operationer med strenge.
- For systemer baseret på kommandosættet LoongArch (som anvendes i Loongson 3 5000 processorerne og implementerer en ny RISC ISA, der ligner MIPS og RISC-V) er der implementeret support til randomisering af kernelens adressrum (KASLR), ændring af kernelens placering i hukommelsen (relocation), hardware breakpoint og mekanismen kprobe.
- I DAMOS (Data Access Monitoring-baserede Operationsskemaer) er der implementeret støtte til filtre for at udelukke bestemte områder af hukommelsen fra behandling baseret på adgangsfrekvens.
- Den minimale standard C-bibliotek Nolibc understøtter nu arkitekturen s390 og instruktionssættet Arm Thumb1 (udover support for ARM, AArch64, i386, x86_64, RISC-V og MIPS).
- Objtool er blevet optimeret for at accelerere kernelbygningen og reducere det maksimale hukommelsesforbrug under bygningen (under bygningen af kernen i 'allyesconfig'-tilstand opstår der nu ikke problemer med tvungen afslutning af processer på systemer med 32 GB RAM).
- Støtten til kernelbygning med Intel ICC-kompilatoren er blevet afsluttet, da den har været ikke-funktionel i lang tid, og ingen har ønsket at rette dette.
- DiskSubsystem, input/output og filsystemer
- I tmpfs er der implementeret støtte til mapping af bruger-ID'er for monterede filsystemer, anvendt til at matche filer af en bestemt bruger på et monteret fremmed partition med en anden bruger i det aktuelle system.
- I Btrfs er der sikret opdeling af extent for at reducere fragmenteringen af blokgrupper, det vil sige, at enhver blokgruppe nu begrænses til små (op til 128 KB), mellemstore (op til 8 MB) og store extent. Implementeringen af raid56 er blevet refaktoreret. Koden til kontrolsumkontrol er blevet redesignet. Der er gennemført ydeevneoptimeringer, der har gjort det muligt at accelerere send-operationen med op til 10 gange ved caching af utime for kataloger og udførelse af kommandoer kun når nødvendigt. Udførelsen af fiemap-operationer er blevet tre gange hurtigere ved at springe checks for cirkulære referencer for delte data (snapshots). Metadata-operationer er blevet øget med 10% ved at optimere søgning efter nøgler i b-tree strukturer.
- Ydeevnen for ext4-filsystemet er blevet forbedret muligheden for samtidige operationer med direkte input/output udført af flere processer i foruddelte blokke, ved at anvende delte inode-låse i stedet for eksklusive låse.
- I f2fs er der blevet udført arbejde for at forbedre læsbarheden af koden. Vigtige problemer vedrørende atomskrivninger og det nye extent-cache er blevet løst.
- I filsystemet EROFS (Enhanced Read-Only File System), som er designet til brug i partitioner, der kun er tilgængelige i skrivebeskyttet tilstand, er der implementeret en mulighed for binding af CPU til operationerne for udpumpning af komprimeret indhold fra filer for at reducere forsinkelser ved dataadgang.
- BFQ-io-scheduler får support til avancerede drev med roterende diske, for eksempel til dem, der bruger flere separat styrede hoveddrevsenheder (Multi Actuator).
- Implementeringen af klienten og server NFS inkluderer nu støtte til datakryptering ved hjælp af AES-SHA2-algoritmen.
- FUSE-underenheden (Filesystems In User Space) har fået tilføjet støtte til en mekanisme, der udvider forespørgsler og gør det muligt at inkludere supplerende oplysninger i forespørgslen. Baseret på denne funktionalitet er identificering af grupper blevet inkluderet i FS-forespørgslen, hvilket er nødvendigt for at tage hensyn til adgangsrettigheder ved oprettelse af objekter i FS (create, mkdir, symlink, mknod).
- Virtualisering og sikkerhed
- KVM-hypervisoren for x86-systemer har fået tilføjet støtte til avancerede hyperopkald fra Hyper-V og muligheden for at sende dem videre til en behandler, der kører i værtens brugerplads. Ændringen har gjort det muligt at implementere støtte til indlejret kørsel af Hyper-V-hypervisoren.
- I KVM er begrænsningen af gæstesystemets adgang til PMU (Performance Monitor Unit) hændelser relateret til præstationsmåling blevet forenklet.
- I memfd-mekanismen, der gør det muligt at identificere et hukommelsesområde via en filbeskriver, der overføres mellem processer, er der tilføjet mulighed for at oprette områder, hvor kodeudførelse er forbudt (non-executable memfd), og hvor det i fremtiden ikke er muligt at tildele udførelsesrettigheder.
- En ny prctl-operation, PR_SET_MDWE, er blevet tilføjet, som blokerer for forsøg på at aktivere hukommelsesadgangsrettigheder, der samtidig tillader skrivning og udførelse.
- Der er blevet tilføjet og aktiveret som standard beskyttelse mod Spectre-angreb, implementeret baseret på den foreslåede automatiske IBRS-tilstand (Enhanced Indirect Branch Restricted Speculation) i AMD Zen 4-processorer, som gør det muligt adaptivt at tillade og forbyde spekulativ udførelse af instruktioner under behandling af afbrydelser, systemopkald og kontekstskift. Den foreslåede beskyttelse medfører færre overheadomkostninger sammenlignet med Retpoline-beskyttelsen.
- Sårbarheden, der gør det muligt at omgå beskyttelsen mod Spectre v2-angreb ved brug af teknologi til samtidig multitrådning (SMT eller Hyper-Threading), er blevet udbedret. Årsagen hertil er deaktivering af mekanismen STIBP (Single Thread Indirect Branch Predictors) ved valg af beskyttelsesmetode IBRS.
- For systemer baseret på ARM64-arkitektur er der tilføjet et nyt build-mål «virtconfig», hvor kun de mest nødvendige kernekomponenter til opstart i virtualiseringssystemer aktiveres.
- Der er tilføjet støtte til filtrering af systemopkald ved hjælp af seccomp-mekanismen til m68k-arkitekturen.
- Der er tilføjet støtte til indbyggede CRB TPM2 (Command Response Buffer) enheder i AMD Ryzen-processorer baseret på Microsoft Pluton-teknologi.
- Netværkssubsystem
- Netlink-grænsefladen er blevet tilføjet for at konfigurere underlaget for PLCA (Physical Layer Collision Avoidance) for at forhindre kollisioner, som er defineret i IEEE 802.3cg-2019-specifikationen og anvendes i 802.3cg Ethernet-netværk (10Base-T1S), der er optimeret til tilslutning af IoT-enheder og industrielle systemer. Anvendelsen af PLCA gør det muligt at øge ydeevnen i Ethernet-netværk med delt medie.
- Støtte til «wireless extensions»-API'et til styring af WiFi 7 (802.11be) trådløse interfaces er blevet ophævet, da dette API ikke dækker alle nødvendige indstillinger. Ved forsøg på at bruge «wireless extensions»-API'et, som fortsat understøttes som et emuleret lag, vil der nu blive vist en advarsel for de fleste aktuelle enheder.
- Der er udarbejdet detaljeret dokumentation til netlink-API'et (til kerneludviklere og applikationsudviklere i brugerområdet). Der er implementeret et værktøj, ynl-gen-c, til at generere C-kode baseret på YAML-specifikationer for netlink-protokollen.
- Der er tilføjet støtte for indstillingen IP_LOCAL_PORT_RANGE til netværkssokler for at forenkle konfigurationen af udgående forbindelser via adresstranslatører uden brug af SNAT. Ved brug af én IP-adresser på flere værter giver IP_LOCAL_PORT_RANGE mulighed for, at hver vært kan benytte sit eget interval af udgående netværksporte, mens gatewayen omdirigerer pakker baseret på portnumre.
- For MPTCP (MultiPath TCP), the ability to handle mixed streams using both IPv4 and IPv6 protocols has been implemented. MPTCP is an extension of the TCP protocol that enables the establishment of TCP connections with packet delivery over multiple routes simultaneously through different network interfaces linked to different IP addresses.
- For IPv4, the BIG TCP extension has been implemented, allowing the maximum TCP packet size to be increased up to 4GB to optimize the performance of high-speed internal data center networks. This increase in packet size at a 16-bit header field size is achieved by implementing '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, which allows setting the default RPS (Receive Packet Steering) configuration responsible for distributing the processing of incoming traffic across CPU cores at the interrupt handler level.
- Support for traffic shaping disciplines such as 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 been in a deprecated state for a long time, and there have been no volunteers to continue their maintenance.
- Udstyr
- All graphical drivers based on DRI1 have been removed: i810 (old integrated Intel 8xx graphics cards), 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 (fbdev) drivers omap1, s3c2410, tmiofb, and w100fb have been removed.
- A DRM driver for the integrated Intel Meteor Lake (14th generation) VPU (Versatile Processing Unit) has been added, intended to accelerate operations related to computer vision and machine learning. The driver is implemented using the 'accel' subsystem, aimed at supporting computation accelerators that can be provided both as standalone ASICs and as IP blocks within SoCs and GPUs.
- In the i915 (Intel) driver, support for discrete Intel Arc (DG2/Alchemist) graphics cards has been expanded, initial support for Meteor Lake GPUs has been implemented, and support for Intel Xe HP 4tile GPUs has been included.
- I driveren amdgpu er der tilføjet support for AdaptiveSync-teknologi og mulighed for at bruge Secure Display-tilstand med flere skærme. Supporten for DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x og DP 2.1 er opdateret.
- I msm-driveren (Qualcomm Adreno GPU) er der tilføjet support for platformene SM8350, SM8450, SM8550, SDM845 og SC8280XP.
- I Nouveau-driveren er supporten for gamle ioctl-opkald blevet fjernet.
- I etnaviv-driveren er der tilføjet eksperimentel support for NPU VerSilicon (VeriSilicon Neural Network Processor).
- Der er implementeret en pata_parport-driver til IDE-lagringsenheder, der er tilsluttet via en parallelport. Den tilføjede driver har muliggjort fjernelse af den gamle PARIDE-driver fra kernen og moderniseringen af ATA-subsystemet. En begrænsning ved den nye driver er, at det ikke er muligt at tilslutte både en printer og et diskdrev via parallelporten samtidigt.
- Der er tilføjet en ath12k-driver til trådløse kort baseret på Qualcomm-chips med support for Wi-Fi 7. Der er også tilføjet support for trådløse kort baseret på RealTek RTL8188EU-chips.
- Support tilføjet for 46 platforme med ARM64-baserede processorer, herunder 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, samt enheder baseret på SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 og SDM632, Rockchips RK3128 TV-boks, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 og RK3328, TI K3 (AM642/AM654/AM68/AM69).
Samtidig har den Latinamerikanske Fond for Fri Software dannet en version af kerne 6.3 - Linux-libre 6.3-gnu, renset for elementer fra firmware og drivere, der indeholder ikke-frie komponenter eller kodeområder, hvis anvendelse er begrænset af producenterne. I version 6.3 er blobs blevet renset i de nye drivere ath12k, aw88395 og peb2466, samt i de nye devicetree-filer til qcom-enheder baseret på AArch64-arkitekturen. Koden til rensning af blobs i amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110-drivere er blevet opdateret, ligesom i driverne til DVB-kort med softwareafkodning og i forkompilerede BPF-filer. Rensningen i driverne mga, r128, tm6000, cpia2 og r8188eu er stoppet, da de er blevet fjernet fra kernen. Rensningen af blobs i i915-driveren er blevet forbedret.
Kilde: opennet.ru
