Efter to måneders udvikling præsenterede Linus Torvalds den Kernen Linux 6.14 er udgivet. Blandt de mest markante ændringer er: ntsync-driveren med Windows NT-synkroniseringsprimitiver, indstilling af balancing af læseoperationer i Btrfs RAID1, støtte til reflink i XFS i realtidsfunktion, muligheden for ikke-cachet buffereing af input/output, dmem cgroup til at begrænse GPU-hukommelse, anvendelse af io_uring i FUSE, delegation af attributter i NFS, støtte til atomær skrivning i Device mapper, acceleration af symboliske links, styring af muligheden for at udføre scripts, støtte til Qualcomm Snapdragon 8 Elite-chips, driver til AMD NPU.
I den nye version er der blevet accepteret 12115 rettelser fra 1984 udviklere, patch-størrelsen er 39 MB (ændringerne berørte 10170 filer, 531586 linjer kode er blevet tilføjet, 235999 linjer er blevet slettet). I den forrige udgave var der 14172 rettelser fra 2086 udviklere, patch-størrelsen var 46 MB. Omtrent 41% af alle ændringerne i 6.14 vedrører enhedsdrivere, cirka 13% af ændringerne relaterer sig til opdatering af kode specifik for hardwarearkitekturer, 14% vedrører netværksstacken, 7% vedrører filsystemer og 4% angår interne delsystemer i kernen.
- DiskSubsystem, input/output og filsystemer
- I Btrfs-filsystemet er der kommet støtte til nye metoder til balancing af læseoperationer mellem de lagringsenheder, der indgår i RAID1-arrayet. Udover den tidligere anvendte belastningsfordeling baseret på procesidentifikatorer (pid), tilbyder den nye version tre nye balanceindstillinger: "rotation" (jævn fordeling af belastningen over alle lagringsenheder, denne tilstand er aktiveret som standard); "latency" (fordeling med hensyn til latenser, som kan være nyttig ved fejl eller ustabil drift af lagringsenheder); devid (manuelt kontrol). For at ændre balancetilstand tilføjet grænsefladen /sys/fs/btrfs//read_policy. Blandt andre ændringer i Btrfs – en implementering ioctl FS_IOC_READ_VERITY_METADATA.
- Tilføjet tilstand for ikke-cachet buffereing af input/output, hvor data fjernes fra sidetypens cache umiddelbart efter, at læse- eller skriveoperationerne er afsluttet. Ændringen kan være nyttig ved brug af meget hurtige lagringsenheder, hvor caching af operationer i hukommelsen er overflødig. For sådanne enheder muliggør den nye tilstand at undgå overdreven hukommelsesanvendelse fra sidetypens cache uden at ty til en kompliceret Direct I/O API.
- I fsnotify, mekanismen til at følge ændringer i FS, er tilføjet Den nye FS_PRE_ACCESS-begivenhed, der genereres i fasen før adgangen til indholdet af en fil. Begivenheden behandles synkront, dvs. kernen sender begivenheden og venter på at modtage et svar. Hvis svaret er modtaget, udføres operationen, og hvis der opstår en fejl, returnerer systemopkaldet en fejlkode til brugerens rum. Ved hjælp af FS_PRE_ACCESS kan processer i brugerens rum eksempelvis organisere fyldning af filen, efterhånden som data bliver tilgængelige i det langsomme lager.
- Der er tilføjet til FUSE-subsystemet, som muliggør oprettelse af filsystemimplementeringer i brugerens rum, understøttelse af dataudveksling mellem kernen og handleren i brugerens rum ved hjælp af io_uring input/output-mekanismen. Ændringen øger FUSE's ydeevne ved at reducere kontekstskift mellem kernen og brugerens rum.
- Der er tilføjet til XFS-filsystemet mulighed brugen af omvendt mappening (rmap, reverse-mapping) i driftsmode med forudsigelige forsinkelser ('realtime device'). Omvendt mappening gør det muligt at bestemme, hvilket filsystem der bruger den angivne blok på lagringsenheden. Ved hjælp af rmap i XFS er der implementeret understøttelse af reflink-operationen i realtime-tilstand, som muliggør oprettelse af filkopier ved at klone filmetadata og oprette et link til allerede eksisterende data uden faktisk at kopiere dem.
- I VFS er implementeret cachering af størrelsen på symbolske links, hvilket har muliggjort en hastighedsforøgelse på 1,5% af readlink-operationen (i testen med /initrd.img i ext4). Cachering er aktiveret i ext4 og tmpfs.
- Der er tilføjet støtte til delegation af filattributter , der gør det muligt at administrere attributter som ændringstid (mtime) på NFS-klienten uden behov for at transmittere ændringerne til serveren. Der er også forbedret understøttelse af protokollen 'LOCALIO', som muliggør bestemmelse af, om klienten og NFS-serveren er på samme værtsmaskine for at udnytte relevante optimeringer, såsom brugen af direkte input/output (Direct I/O) fra klienten.Forbedret
- ydelsen af læseoperationer i NETFS, CIFS og AFS (Andrew File System). I Squashfs
- В Squashfs aktiveret tilstand for direkte indlæsning af blokke i sidecache (SQUASHFS_FILE_DIRECT), hvilket gør det muligt at undgå en separat read_page cache. Ændringen har reduceret den hukommelse, der kræves under drift af Squashfs.
- I systemopkaldet statx() implementeret flaget STATX_DIO_READ_ALIGN, til at bestemme det nødvendige alignement for fil læseoperationer.
- I filsystemet Bcachefs opdateret og stabiliseret disk strukturformat. Enhver yderligere ændring af formatet vil blive betragtet som valgfri og vil blive implementeret som optionale tilføjelser. Hastigheden for integritetskontrol af FS er betydeligt forbedret. Derudover er Ydeevnen i Bcachefs forbedret i kun-læse tilstand; problemer, der førte til adgang til hukommelse efter frigivelse (use after free), er blevet løst; problemer med reflink-pegepinde i fsck er blevet adresseret; håndteringen af genstart af transaktioner er blevet rettet.
- Gendannet md-linear modulet, der er designet til at sammenkæde block enheder. Dette modul blev tidligere erklæret forældet og fjernet fra kernen 6.8, men det viste sig at være efterspurgt, og derfor er det nu genoprettet.
- Filsystemerne F2FS og SQUASHFS er blevet overført til at bruge store sider af hukommelse (side folios).
- I driveren null_blk er implementeret attributten "rotational", der angives via configfs og muliggør simulering af drift med en enhed baseret på roterende diske for at forenkle testning af kernel funktioner.
- I Device mapper systemet og i modulerne dm-mirror, dm-io, dm-table, dm-linear, dm-stripe og dm-raid1 er implementeret støtte til atomar skrivning.
- Hukommelse og systemtjenester
- Afsluttet integration i kernen af driveren ntsync, som implementerer det symbolske enhed /dev/ntsync og et sæt primitive synkroniseringsmetoder, der anvendes i Windows NT kernen. Implementering af sådanne primitive på kernniveau kan betydeligt øge ydeevnen for Windows-spil, der køres ved hjælp af Wine. Ydeevneforøgelsen opnås ved at eliminere omkostningerne forbundet med brug af RPC i brugerområdet. Oprettelsen af en separat driver til Linux-kernen forklares ved vanskelighederne ved korrekt implementering af NT synkroniserings API oven på eksisterende primitive i kernen.
- Tilføjet en ny cgroup controller DMEM til adskilt regnskab for hukommelsesområder i enheder som GPU. DMEM muliggør oprettelse af separate cgroup til forskellige opgaver, der arbejder med GPU, så de kan udføres uden at påvirke hinanden. Den nye funktion løser problemet med tvungen afslutning af operationer med GPU ved mangel på tilgængelig hukommelse, takket være adskillelsen af spejlet GPU-hukommelse og den hukommelse, der anvendes af CPU-driverne i separate cgroup.
- Der er foretaget optimeringer til skaleringsoperationen for flushing af TLB (Translation Lookaside Buffer), der anvendes til at accelerere konverteringen af virtuelle adresser til fysiske. De tilføjede optimeringer handler om udskudt opdatering af visse datastrukturer under kontekstskift, hvilket forbedrer ydeevnen under udførelse af visse tests.
- ydelsen af læseoperationer i NETFS, CIFS og AFS (Andrew File System). ydelsen af mekanismen MGLRU (Multi-Generational LRU), der anvendes til at bestemme, hvilke hukommelsessider der bruges, og hvilke der kan skubbes til swap-delen.
- Fortsat overførelse af ændringer fra grenen Rust-for-Linux, relateret til brugen af Rust som et andet sprog til udvikling af drivere og kernelmoduler (Rust-support er ikke aktiveret som standard og fører ikke til, at Rust bliver en nødvendig byggedependens for kernen). Der blev givet mulighed for at bruge macroen "derive(CoercePointee)", der muliggør brug af smarte pegepinde med trait-objekter. I kernen er der inkluderet Rust-bindings til PCI, platforme, Open Firmware, symboliske enheder og nogle input/output-funktioner. Greg Kroah-Hartman, der er ansvarlig for at understøtte den stabile linje af Linux-kernen, karakteriserede den nuværende tilstand som "næsten klar til at skrive en rigtig driver på Rust".
- I byggescenarierne er blevet foreslået ny kode til generering af debug-symbolversioner for indlæste moduler, som nu bruger oplysninger fra debug-poster i DWARF-formatet i stedet for at analysere kildekoden direkte. Ændringen muliggør versionering af debug-symboler for moduler skrevet i Rust. Den gamle implementering er også tilbageholdt i kernen, og valget af generator foretages på niveauet for byggeindstillinger.
- For PowerPC-arkitekturen er implementeret understøttelse af lazy preemption-tilstand (PREEMPT_LAZY, lazy preemption), som svarer til fuld preemption-tilstand („full preemption“) for realtime-opgaver (RR/FIFO/DEADLINE), men forsinker preemption af normale opgaver (SCHED_NORMAL) indtil klokkens grænse.
- I performance profilering subsystemet perf tilføjet understøttelse af energiforbrugstællere for AMD-processorer. Tilføjet mulighed for drift på systemer med op til 2048 CPU-kerner.
- Givet mulighed for at bruge sysctl-parameteren pid_max med proces-id namespaces (ID namespace). Parameteren pid_max er designet til at begrænse den maksimale værdi af proces-id'er (PID) og kan nu anvendes til at begrænse det maksimale antal processer, der køres i det angivne namespace. Behandlingen af parameteren er hierarkisk, dvs. begrænsninger i de ydre namespaces gælder også for indlejrede namespaces.
- Ved brug af systemopkaldet til at starte processen execveat vises nu navnet på den kørende fil i filsystemet /proc i stedet for nummeret på filbeskriveren.
- I kildekoden til kernen (i samples-kataloget) tilføjdes mountinfo-værktøjet, der demonstrerer brugen af systemopkaldene statmount() og listmount().
- I BPF-subsystemet tilbydes nye funktioner bpf_local_irq_save() og bpf_local_irq_restore() til midlertidigt at deaktivere afbrydelser på den lokale CPU. Funktionerne kan anvendes til at implementere strukturer, hvis behandling ikke underbrydes af afbrydelser.
- I systemopkaldet madvise() ved brug af FLAGENE MADV_DONTNEED og MADV_FREE er der sikret frigivelse af sidebordene for hukommelse, der er knyttet til det frigivne adressespænd, da tomme hukommelsessider i nogle situationer kan tage en del hukommelse.
- For OpenRISC-arkitekturen er der implementeret støtte til mekanismen for genstartelige sekvenser (rseq, restartable sequences), der er beregnet til hurtig atomar udførelse af operationer, der i tilfælde af afbrydelse fra en anden tråd ryddes, og der tages et nyt forsøg på udførelsen.
- Koden er blevet reorganiseret med implementeringen af algoritmerne CRC32 og CRC-T10DIF, som ikke længere overlapper med crypto-subsystemet og kaldes direkte fra bibliotekets interface. Ændringen har gjort det muligt at forenkle koden og forbedre dens effektivitet.
- I systemet for asynkron input/output io_uring tilføjet et interface til overførsel af yderligere metadata om integriteten ved udførelse af læse- og skriveoperationer.
- Virtualisering og sikkerhed
- Systemopkaldet execveat tilføjet flaget AT_EXECVE_CHECK, der muliggør at udføre en kontrol af filens eksekverbarhed uden faktisk at starte den, men under hensyntagen til sikkerhedspolitikker, adgangsrettigheder og aktive LSM-moduler. Til brug sammen med AT_EXECVE_CHECK er der foreslået securebit-flags SECBIT_EXEC_RESTRICT_FILE og SECBIT_EXEC_DENY_INTERACTIVE, som kan bruges til at begrænse eksekvering af filer med scripts på fortolkede programmeringssprog. Flaget SECBIT_EXEC_RESTRICT_FILE pålægger linkere og fortolkere at bruge indstillingen AT_EXECVE_CHECK til at kontrollere eksekverbarhed, mens flaget SECBIT_EXEC_DENY_INTERACTIVE forbyder behandling af interaktive kommandoer. Hovedideen med ændringen er at anvende sikkerhedspolitikker ikke kun til traditionelle eksekverbare filer, men også til tekstfiler med scripts, der kan køres ved at starte en fortolker (dvs. at forbudet mod eksekvering kan håndhæves ikke kun ved at køre «./script.sh», men også ved at udføre det som «sh script.sh»).
- På x86-systemer er der implementeret støtte til sikre tidsstællere for gæstesystemer, som ikke tillader ændring af systemuret i gæstesystemet fra værtsmiljøet. Muligheden er implementeret på basis af mekanismen AMD SEV (Secure Encrypted Virtualization), der anvendes i virtualiseringssystemer til at beskytte virtuelle maskiner mod indgreb fra hypervisoren eller administratoren af værtsystemet.
- I SELinux-systemet for mandatkontrol tilføjet understøttelse af xperm-regler, der muligør knytning af SELinux-politikker til bestemte ioctl()-opkald eller netlink-beskeder.
- For at sikre kerne-moduler med en digital signatur er SHA1 algoritmen som standard aktiveret SHA512-algoritmen.
- I drivere for gæstesystemer VirtualBox er er der støtte til ARM64-arkitekturen.
- I hypervisoren KVM blev fortsat arbejde ved brug af mekanismen Intel TDX (Trusted Domain Extensions) til kryptering af gæstesystemernes hukommelse.
- I virtio_blk tilføjet er der støtte til fejlgengivelsestilstand.
- Netværkssubsystem
- I implementeringen af protokollen RxRPC er der kommet muligheden for at bruge store UDP-rammer for at øge båndbredden.
- For TCP er der tilføjet støtte til algoritmen RACK-TLP til at bestemme pakketab.
- Tilføjet ny parameter sysctl tcp_tw_reuse_delay, som fungerer i forbindelse med navnerum (network namespace) og gør det muligt at bestemme den forsinkelse, der opstår, før systemet kan genbruge nummeret på den netværksport, efter at TCP-socketen er lukket.
- Tilføjet mulighed for at vælge en provider for præcist tid (PTP) til dannelse af tidsstempler på PHY og MAC niveauer.
- For IPsec er implementeret understøttelse af mekanismen til aggregering og fragmentering af kapslede IP-pakker – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- I systemet af netværkssockets tilføjet understøttelse af overførsel af oplysninger om prioriteter (SO_PRIORITY) i form af kontrolmeddelelser (cmsg — control messages). For netværkssockets tilføjet muligheden SO_RCVPRIORITY, der inkluderer i funktionen recvmsg() overførslen af oplysninger om socketens prioritet.
- Udstyr
- Tilføjet en drivkraft amdxdna for de indbyggede NPU (Neural Processing Unit) acceleratorer i AMD CPU'er baseret på arkitekturen XDNA, designet til at accelerere operationer relateret til maskinlæring. NPU baseret på XDNA arkitekturen leveres i serierne 7040 og 8040 af AMD Ryzen processorer, AMD Alveo V70 acceleratorer og AMD Versal SoC.
- I driveren i915 er tilføjet identifikatorer for nye GPU'er, implementeret en fejlhåndtering af HDMI-initialisering, øget pålidelighed ved nulstilling af GPU-motorer på Haswell og ældre systemer.
- Fortsat arbejde med drm-driveren (Direct Rendering Manager) Xe til GPU'er baseret på Intel Xe arkitekturen, der bruges i Intel grafikkort fra Arc-familien og integreret grafik, startende med Tiger Lake processorer.
- I Nouveau driveren tilføjet mulighed for overførsel af buffer med GSP-RM logs via debugfs.
- I AMDGPU driveren implementeret support for DRM panic mekanismen, som viser en slags "blå skærm" ved fejl. Arbejdet fortsætter med at støtte den kommende serie af Radeon RX 9000 grafikkort baseret på RDNA4 arkitekturen. Opdateret support for DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS og ISP.
- I DRM-driveren msm (GPU Qualcomm Adreno) tilføjet support til Qualcomm SM6150 (QCS615) platform.
- I DRM-driveren panfrost tilføjet support til SoC MediaTek MT8188 med Mali-G57 GPU.
- I DRM-driveren vc4 tilføjet support til SoC Broadcom BCM2712 (Raspberry Pi 5).
- I vfio-driveren nvgrace-gpu tilføjet understøttelse af chips NVIDIA Grace Blackwell 200.
- Tilføjet til aktiveret driver til Intel THC (Touch Host Controller), anvendt til interaktion med berøringsskærme og touchpads på nogle bærbare computere. Tilføjet support for Wacom enheder med PCI interface. Tilføjet support for game controllere fra QH Electronics.
- Tilføjet understøttelse af ARM-platforme, SoC og enheder: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Tilføjet support for SoC SpacemiT K1 baseret på RISC-V arkitektur.
- I lydsystemet ALSA for MIDI 2.0 udvidet API rawmidi og sequencer. I API'et for at flytte komprimeringsoperationer til lydkortet er der tilføjet support for ASRC (Asynchronous Sample Rate Conversion).
- Tilføjet support for lydsystemer til Allwinner enhederne F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 og 18i20. Tilføjet support for trådløse hovedtelefoner SteelSeries Arctis 9.
Kilde: linux.org.ru
