Efter to måneders udvikling præsenterede Linus Torvalds udgivelsen af Linux-kernen 5.12. Blandt de mest markante ændringer er: support til zonede bloklagringsenheder i Btrfs, muligheden for at mape bruger-ID'er til filsystemer, oprydning af forældede ARM-arkitekturer, "utålmodig" skrivefunktion i NFS, mekanismen LOOKUP_CACHED til at bestemme filstier fra cachen, support til atomære instruktioner i BPF, fejlsøgningssystemet KFENCE til at identificere hukommelsesfejl, en fungerende NAPI polling-tilstand i netværksstkektet i en separat kerne-tråd, hypervisoren ACRN, muligheden for dynamisk at ændre preempt-modellen i opgaveplanlæggeren, og støtte til LTO-optimeringer under bygning i Clang.
I den nye version er der indsendt 14170 (i den tidligere udgave 15480) rettelser fra 1946 (1991) udviklere, patch-størrelsen er 38 MB (ændringerne berørte 12102 (12090) filer, tilføjet 538599 (868025) kodelinjer, fjernet 333377 (261456) linjer). Omtrent 43% af alle ændringerne i 5.12 vedrører enhedsdrivere, cirka 17% af ændringerne omhandler opdatering af kode, der er specifik for hardwarearkitekturer, 12% vedrører netværksstakken, 5% – filsystemer og 4% med interne subsystemer i kernen.
Hovednyhederne:
- DiskSubsystem, input/output og filsystemer
- Muligheden for at mappe bruger-ID'er til monterede filsystemer er blevet implementeret (filer fra en bruger kan matches med en anden bruger i det aktuelle system på en monteret partition). Mapping understøttes for filsystemer som FAT, ext4 og XFS. Den foreslåede funktionalitet muliggør enklere deling af filer mellem forskellige brugere og på forskellige computere, idet mapping også vil blive anvendt i mekanismen for bærbare hjemmekataloger systemd-homed, hvilket giver brugerne mulighed for at flytte deres hjemmekataloger til eksterne medier og bruge dem på forskellige computere, hvor bruger-ID-opsætningen ikke stemmer overens. En anden nyttig anvendelse er organiseringen af adgang til filer fra en ekstern vært, uden at der faktisk ændres data om ejerene af filerne i filsystemet.
- Der er blevet vedtaget patches i kernen, der muliggør, at brugerrum kan udføre filstiveoperationer uden blokering, kun baseret på de data, der allerede er i cachen. LOOKUP_CACHED-tilstanden aktiveres i openat2()-kaldet ved at overføre RESOLVE_CACHED-flaget, hvormed data kun returneres fra cachen, og hvis stivebestemmelse kræver adgang til lagerenheden, returneres fejlen EAGAIN.
- I Btrfs-filsystemet er der tilføjet indledende support til zonerede blokenheder (enheder på harddiske eller NVMe SSD'er, hvor lagringsområdet er opdelt i zoner, der består af grupper af blokke eller sektorer, hvori der kun tillades sekventiel tilføjelse af data med opdatering af hele blokgruppen). Der er implementeret support til blokke med metadata og data, der er mindre end siden (subpage), i kun-læse tilstand.
- I F2FS-filsystemet er der tilføjet mulighed for at vælge komprimeringsalgoritme og niveau. Høj grad af komprimering for LZ4-algoritmen er blevet tilføjet. Funktionaliteten til at montere checkpoint_merge er implementeret.
- Der er implementeret en ny ioctl-kommando FS_IOC_READ_VERITY_METADATA til at læse metadata fra filer, der er beskyttet ved hjælp af fs-verity.
- I NFS-klienten er der implementeret en 'ivrig' skrive-tilstand (writes=eager), hvor skriveoperationer straks sendes til serveren, hvilket omgår sidens cache. Denne tilstand reducerer hukommelsesforbruget, sikrer øjeblikkelig information om fri plads i filsystemet og giver i nogle situationer mulighed for ydeevneforbedring.
- I CIFS (SMB) er der tilføjet nye monteringsmuligheder: acregmax til at styre cachelagringen af filer og acdirmax til at styre cachelagringen af metadata for mapper.
- I XFS er der aktiveret multitrådet kontrol af kvoter, udførelsen af fsync er accelereret, og koden til growfs er blevet forberedt til at implementere funktionen til at reducere størrelsen af filsystemet.
- Hukommelse og systemtjenester
- DTMP-undersystemet (Dynamic Thermal Power Management) er blevet tilføjet, hvilket gør det muligt at regulere energiforbruget af forskellige enheder dynamisk baseret på de fastsatte generelle temperaturlimiter.
- Muligheden for at kompilere kernen med Clang-kompilatoren er implementeret, inklusiv optimering på linktid (LTO, Link Time Optimization). LTO-optimeringer adskiller sig ved at tage hensyn til tilstanden af alle filer, der deltager i byggeprocessen, mens traditionelle optimeringsmetoder optimerer hver fil individuelt uden at overveje funktionsopkald, der er defineret i andre filer. For eksempel kan funktioner fra andre filer inline-udvikles ved LTO, ubrugelig kode inkluderes ikke i den eksekverbare fil, typekontrol udføres, og der foretages generel optimering på projektets niveau. LTO understøttelse er i øjeblikket begrænset til x86 og ARM64 arkitekturer.
- Muligheden for at vælge preemption-tilstande (PREEMPT) i opgaveplanlæggeren under boot (preempt=none/voluntary/full) eller under drift via debugfs (/debug/sched_debug) er tilgængelig, hvis der angives PREEMPT_DYNAMIC-indstillingen under kernesamlingen. Tidligere kunne preemption-tilstanden kun angives på byggemulighedsniveau. Ændringen muliggør for distributioner at levere kerner med den aktiverede PREEMPT-tilstand, som sikrer minimale forsinkelser for skriveborde til prisen for en lille reduktion af båndbredden, og vender om nødvendigt tilbage til PREEMPT_VOLUNTARY (mellemliggende tilstand for skriveborde) eller PREEMPT_NONE (sikrer maksimal båndbredde for servere).
- BPF-subsystemet har tilføjet support til atomare operationer BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG og BPF_CMPXCHG.
- BPF-programmer har fået adgang til data på stakken ved hjælp af pegepinde med variabel offset. For eksempel, hvis man tidligere kun kunne bruge en fast elementindeks til at få adgang til et array på stakken, kan man nu bruge en skiftende. Adgangskontrollen er kun begrænset til de eksisterende grænser og håndteres af BPF-verifikatoren. Denne mulighed er kun tilgængelig for privilegerede programmer på grund af bekymringer om udnyttelse af sårbarheder relateret til spekulativ udførelse af kode.
- Muligheden for at vedhæfte BPF-programmer til 'bare' tracepoints, der ikke er relaterede til synlige brugerlandshændelser, er tilføjet (for sådanne tracepoints garanteres det ikke, at ABI bevares).
- Støtte til CXL 2.0 (Compute Express Link) er implementeret, hvilket muliggør højhastighedsinteraktion mellem CPU og hukommelsesenheder (det gør det muligt at bruge eksterne hukommelsesenheder som en del af RAM eller vedvarende hukommelse, som om denne hukommelse var tilsluttet via den standard hukommelseskontrol, der er indbygget i CPU'en).
- En nvmem-driver er tilføjet for at hente data fra hukommelsesområder, der er reserveret af firmware, som ikke er direkte tilgængelige for Linux (for eksempel EEPROM-hukommelse, der kun er fysisk tilgængelig for firmware, eller data, der kun er tilgængelige tidligt i opstarten).
- Supporten for profileringssystemet 'oprofile' er fjernet, da det ikke har fået den ønskede udbredelse og er blevet erstattet af den mere moderne perf-mekanisme.
- I grænsefladen for asynkron ind-/uddata io_uring er der sikret integration med cgroup, som kontrollerer hukommelsesforbruget.
- Der er implementeret støtte til NUMA-systemer for RISC-V-arkitekturen, samt mekanismerne kprobes og uprobes.
- Muligheden for at bruge systemopkaldet kcmp() er tilføjet, uafhængigt af funktionaliteten af tilstandsygmærker (checkpoint/restore).
- Makroerne EXPORT_UNUSED_SYMBOL() og EXPORT_SYMBOL_GPL_FUTURE() er blevet fjernet, da de ikke har været anvendt i praksis i mange år.
- Virtualisering og sikkerhed
- Der er tilføjet KFence (Kernel Electric Fence) beskyttelsesmekanisme, som fanger fejl ved hukommelsesoperationer, såsom bufferoverløb og adgang efter frigivelse af hukommelse. I modsætning til den debug-mekanisme, KASAN, er KFence underprogrammet kendetegnet ved høj hastighed og lave overheadomkostninger, hvilket muliggør fangst af hukommelsesfejl, der kun optræder på driftsystemer eller ved langvarig drift.
- Støtte til hypervisoren ACRN er tilføjet, som er udviklet med fokus på beredskab til realtidsopgaver og anvendelighed i kritiske systemer. ACRN sikrer minimale overheadomkostninger, garanterer lave forsinkelser (low latency) og passende responsivitet ved interaktion med hardware. Virtualisering af CPU-ressourcer, ind-/uddata, netværkssystemet, grafik- og lydoperationer understøttes. ACRN kan bruges til at køre flere isolerede virtual machines i elektroniske styrebokser, instrumentpaneler, bilers informationssystemer, forbruger IoT-enheder og andet indlejret udstyr. ACRN understøtter to typer gæstesystemer — privilegerede Service VM'er, der bruges til at administrere systemressourcer (CPU, hukommelse, input/uddata osv.), og brugerdefinerede User VM'er, hvor Linux-distributioner, Android og Windows kan køre.
- I IMA (Integrity Measurement Architecture) subsystemet, der sikrer opretholdelse af en hash-database til at kontrollere integriteten af filer og relaterede metadata, er muligheden for at kontrollere dataintegriteten af selve kernen blevet tilføjet, for eksempel for at spore ændringer i SELinux-regler.
- Hypervisor KVM har fået mulighed for at opfange hyperopkald fra Xen og videresende dem til en emulator, der kører i brugerrum.
- Muligheden for at bruge Linux som rodmiljø for hypervisor Hyper-V er blevet tilføjet. Rodmiljøet har direkte adgang til hardwaren og bruges til at køre gæstesystemer (svarende til Dom0 i Xen). Indtil nu har Hyper-V (Microsoft Hypervisor) kun understøttet Linux i gæstemiljøer, men selve hypervisoren blev administreret fra et Windows-baseret miljø.
- Inline-kryptering til eMMC-kort er blevet tilføjet, hvilket muliggør brugen af de indbyggede krypteringsmekanismer i controlleren, der udfører gennemsigtig kryptering og dekryptering af input/uddata.
- Understøttelsen af ubrugte hashes RIPE-MD 128/256/320 og Tiger 128/160/192 er blevet fjernet fra kryptosystemet, ligesom stream-chifferet Salsa20, som er blevet erstattet af algoritmen ChaCha20. Algoritmen blake2 er blevet opdateret til implementeringen blake2s.
- Netværkssubsystem
- Muligheden for at flytte NAPI polling-handleren for netværksenheder til en separat kerne-tråd er blevet tilføjet, hvilket kan forbedre ydeevnen for visse typer belastninger. Indtil nu blev polling udført i softirq-konteksten og blev ikke dækket af opgaveplanlægningssystemet, hvilket gjorde det svært at optimere præcist for at opnå maksimal ydeevne. Udførelse i en separat kerne-tråd muliggør overvågning af polling-handleren fra brugerrum, knytning til specifikke CPU-kerner og overvejelse ved opgaveplanlægning. For at aktivere den nye tilstand er parameteren /sys/class/net//threaded blevet foreslået i sysfs.
- Integration into the MPTCP (MultiPath TCP) core has continued, expanding the TCP protocol for organizing TCP connection work that delivers packets simultaneously over multiple routes through different network interfaces tied to different IP addresses. The new release includes the ability to assign priority to certain streams, allowing for the organization of backup streams that only activate when issues arise with the primary stream.
- Support for the EHT (Explicit Host Tracking) mechanism has been added in IGMPv3.
- The netfilter packet filtering mechanism has implemented ownership of certain tables for exclusive control (for instance, a background firewall process can assign specific tables to itself, preventing others from interfering with them).
- Udstyr
- A cleanup of outdated and unsupported ARM platforms has been conducted. Code for the efm32, picoxcell, prima2, tango, u300, zx, and c6x platforms, as well as their associated drivers, has been removed.
- The amdgpu driver has implemented OverDrive support for GPUs based on the Sienna Cichlid (Navi 22, Radeon RX 6xxx). Support for the FP16 pixel format for the DCE (display controller engine) from 8 to 11 generations has been added. Reset capability for GPUs Navy Flounder (Navi 21) and APU Van Gogh has been implemented.
- In the i915 driver for Intel graphics cards, the i915.mitigations parameter has been implemented to disable isolation and protection mechanisms to enhance performance. For chips starting from Tiger Lake, support for the VRR (Variable Rate Refresh) mechanism has been enabled, allowing adaptive changes to the monitor's refresh rate for smoothness and avoiding tearing during games. Support for Intel Clear Color technology has been included to improve color accuracy. Support for DP-HDMI 2.1 has been added. Control over eDP panel backlighting has been implemented. For Gen9 GPUs with LSPCON (Level Shifter and Protocol Converter) support, HDR support has been enabled.
- The nouveau driver has added initial support for NVIDIA GA100 (Ampere) architecture-based GPUs.
- The msm driver has added support for Adreno 508, 509, and 512 GPUs used in SDM (Snapdragon) chips 630, 636, and 660.
- Support for Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s, and Pioneer DJM-750 sound cards has been added. Support for Intel Alder Lake PCH-P sound subsystem has been implemented. Support for software simulation of connecting and disconnecting audio jacks for user-space handler debugging has been realized.
- Der er tilføjet support til Nintendo 64 spilkonsoller, der blev produceret fra 1996 til 2003 (tidligere forsøg på at portere Linux til Nintendo 64 blev aldrig færdiggjort og havde status som Vaporware). Motivation for at skabe en ny port til den forældede platform, som ikke har været på markedet i næsten tyve år, er ønsket om at stimulere udviklingen af emulatorer og forenkle portningen af spil.
- Der er tilføjet driver til Sony PlayStation 5 DualSense controller.
- Der er tilføjet support til ARM-platforme, enheder og platforme: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Der er tilføjet support til smartphones som Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
- Der er tilføjet bcm-vk driveren til Broadcom VK accelerator boards (f.eks. PCIe boards Valkyrie og Viper), som kan bruges til at uddelegere lyd-, video- og billedebehandling samt opgaver relateret til kryptering til et separat device.
- Der er tilføjet understøttelse af Lenovo IdeaPad platformen med mulighed for at styre konstant opladning og tastaturbelysning. Der er også sikret support for ACPI-profilen på ThinkPad platformen med mulighed for at styre energiforbrugstilstande. Der er tilføjet driver til Lenovo ThinkPad X1 Tablet Gen 2 HID-subsystem.
- Der er tilføjet ov5647 driver med støtte til kameramodul til Raspberry Pi.
- Der er tilføjet support til RISC-V SoC FU740 og HiFive Unleashed boards. Der er også tilføjet en ny driver til Kendryte K210 chip.
Kilde: opennet.ru
