Nakon dva mjeseca razvoja, Linus Torvalds predstavio izdanje Linux jezgre 6.14. Među najuočljivijim promjenama su: ntsync drajver s Windows NT sinkronizacijskim primitivima, podešavanje ravnoteže operacija čitanja u Btrfs RAID1, podrška za reflink u XFS u realnom vremenu, mogućnost nekazhiranog baferiranog ulaza/izlaza, dmem cgroup za ograničenje GPU memorije, koristeći io_uring u FUSE, delegiranje atributa u NFS, podrška za atomarne zapise u Device mapperu, ubrzanje simboličkih linkova, upravljanje mogućnošću izvršavanja skripti, podrška za Qualcomm Snapdragon 8 Elite čipove, drajver za AMD NPU.
U novu verziju uključeno je 12115 ispravki od 1984 programera, veličina patcha – 39 MB (promjene su zahvatile 10170 datoteka, dodano 531586 linija koda, uklonjeno 235999 linija). U prethodnom izdanju bilo je 14172 ispravki od 2086 programera, veličina patcha – 46 MB. Oko 41% svih promjena u 6.14 vezano je uz drajvere uređaja, otprilike 13% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 14% je vezano uz mrežni sloj, 7% uz datotečne sustave i 4% uz unutarnje podprograme jezgre.
- Sistem diska, ulaz/izlaz i datotečni sustavi
- U datotečnom sustavu Btrfs dodana je podrška za nove metode ravnoteže operacija čitanja između uređaja uključenih u RAID1 skup. Osim ranije važeće raspodjele opterećenja na temelju identifikatora procesa (pid), u novoj verziji ponuđena su tri nova režima ravnoteže: «rotation» (ravnomjerna raspodjela opterećenja među svim uređajima, aktivan po defaultu); «latency» (raspodjela s obzirom na latencije, može biti korisna u slučaju kvara ili nestabilnog rada uređaja); devid (ručno upravljanje). Za promjenu režima ravnoteže dodana je interfejs /sys/fs/btrfs//read_policy. Među ostalim promjenama u Btrfs – implementacija ioctl FS_IOC_READ_VERITY_METADATA.
- Dodano režim nekazhiranog baferiranog ulaza/izlaza, gdje se podaci brišu iz stranog bafer koda odmah nakon što su operacije njihova čitanja ili pisanja završene. Promjena može biti korisna pri korištenju vrlo brzih uređaja za pohranu, gdje je baferiranje operacija u radnoj memoriji suvišno. Za takve uređaje novi režim omogućuje isključivanje suvišnog trošenja memorije stranicnim baferom bez potrebe za korištenjem složenog API-ja za izravni ulaz/izlaz (Direct I/O).
- U fsnotify, mehanizmu praćenja promjena u FS-u, dodano je dodano je novo događanje FS_PRE_ACCESS, koje se generira u fazi prije pristupa sadržaju datoteke. Događaj se obrađuje u sinkronom režimu, tj. jezgra šalje događaj i čeka na odgovor. Ako je odgovor primljen – operacija se izvršava, a ako dođe do pogreške – sistemski poziv vraća kod greške u korisnički prostor. Pomoću FS_PRE_ACCESS proces u korisničkom prostoru, primjerice, može organizirati punjenje datoteke dok su podaci spremni u sporom skladištu.
- U FUSE podsustav, koji omogućuje stvaranje implementacija datotečnih sustava u korisničkom prostoru, dodana je podrška razmjena podataka između jezgre i obraditelja u korisničkom prostoru koristeći mehanizam ulaza/izlaza io_uring. Ova promjena omogućava povećanje performansi FUSE smanjenjem prebacivanja konteksta između jezgre i korisničkog prostora.
- U datotečni sustav XFS dodana je mogućnost mogućnost korištenja obrnute mape (rmap, reverse-mapping) u režimu rada s predvidivim kašnjenjima („realtime device“). Obrnuta mapa omogućava određivanje za pohranu koje datoteke se koristi određeni blok na uređaju za pohranu. Pomoću rmap u XFS za realtime režim ostvarena je podrška operaciji reflink, koja omogućava stvaranje kopija datoteka putem kloniranja metapodataka datoteke i stvaranja poveznice na već postojeće podatke bez stvarnog kopiranja.
- U VFS implementirano je keširanje veličine simboličkih poveznica, što je omogućilo ubrzanje izvršavanja operacije readlink za 1.5% (u testu s /initrd.img u ext4). Keširanje je uključeno u FS ext4 i tmpfs.
- U implementaciju NFSv4.2 dodana je podrška za delegiranje atributa datoteka, koja omogućava upravljanje takvim atributima datoteka, kao što je vrijeme promjene (mtime), s NFS-klijenta, bez potrebe da se izmjene vraćaju na poslužitelj. U NFS-u je također poboljšana podrška protokolu „LOCALIO“, koja omogućava određivanje nalaze li se klijent i NFS poslužitelj na istoj hosts, za aktiviranje odgovorajućih optimizacija, kao što je korištenje direktnog ulaza/izlaza (Direct I/O) od strane klijenta.
- Povećana je performansa operacija čitanja u datotečnim sustavima NETFS, CIFS i AFS (Andrew File System).
- U Squashfs uključen mode izravnog učitavanja blokova u stranice predmemorije (SQUASHFS_FILE_DIRECT), što omogućuje izbjegavanje potrebe za odvojenom predmemorijom read_page. Promjena je dovela do smanjenja veličine memorije koja se koristi tijekom rada s Squashfs.
- u sustavnom pozivu statx() implementiran oznaka STATX_DIO_READ_ALIGN, za određivanje potrebnog poravnanja za operacije čitanja iz datoteke.
- u datotečnom sustavu Bcachefs ažuriran i stabiliziran format struktura diska. Sve daljnje promjene formata bit će kategorizirane kao neobavezne i bit će realizirane u obliku opcionalnih dodataka. Značajno je povećana brzina provjere cjelovitosti FS-a. Osim toga, u Bcachefs je poboljšan rad u načinu samo za čitanje; riješeni su problemi koji su doveli do pristupa memoriji nakon njenog oslobađanja (use after free); riješeni su problemi s reflink pokazivačima u fsck; ispravljena je obrada ponovnog pokretanja transakcije.
- Vraćen modul md-linear, namijenjen za spajanje blokovnih uređaja. Ovaj je modul ranije bio označen kao zastario i uklonjen iz jezgre 6.8, ali pokazalo se da je bio tražen, stoga je sada vraćen.
- Datotečni sustavi F2FS i SQUASHFS prevedeni su na korištenje folio stranica memorije (page folios).
- U vozaču null_blk implementirana je oznaka 'rotational', postavljena putem configfs koja omogućuje simuliranje rada s uređajem na bazi rotirajućih diskova radi pojednostavljenja testiranja funkcija jezgre.
- U sustavu Device mapper i u modulima dm-mirror, dm-io, dm-table, dm-linear, dm-stripe i dm-raid1 implementirano je podrška za atomsku zapisivanje.
- Memorija i sistemske usluge
- Završena je integracija u jezgru vozača ntsync, koji implementira simbolički uređaj /dev/ntsync i skup primiteta za sinkronizaciju koji se koriste u jezgru Windows NT. Implementacija takvih primiteta na razini jezgre može značajno poboljšati performanse Windows igara pokrenutih uz pomoć Wine. Povećanje performansi postiže se eliminacijom troškova povezanih s korištenjem RPC-a u prostoru korisnika. Stvaranje zasebnog vozača za kernel Linux objašnjava se problematičnošću ispravne implementacije NT sinkronizacijskog API-a preko postojećih primiteta u jezgru.
- Dodan je novi kontroler cgroup DMEM za odvojeno praćenje memorijskih područja uređaja, poput GPU-a. DMEM omogućuje stvaranje odvojenih cgrupa za različite zadatke koji rade s GPU-om, tako da se mogu izvršavati neovisno jedni o drugima. Nova mogućnost rješava problem s prisilnim završavanjem operacija GPU-a kada ponestane dostupne memorije, zahvaljujući praćenju reflektirane memorije GPU-a i memorije koju koriste CPU drajveri u odvojenim cgroup-ima.
- Optimizacije su uvedene za skaliranje operacije pražnjenja (flush) TLB-a (Translation Lookaside Buffer), koji se koristi za ubrzanje pretvaranja virtualnih adresa u fizičke. Dodane optimizacije svode se na odgođeno ažuriranje nekih struktura podataka tijekom prebacivanja konteksta, što omogućuje povećanje performansi tijekom prolaska nekih testova.
- Povećana je performanse mehanizma MGLRU (Multi-Generational LRU), koji se koristi za određivanje koje se stranice memorije koriste, a koje se mogu istisnuti u swap prostor.
- Nastavljen prijenos izmjena iz grane Rust-for-Linux, vezanih uz korištenje jezika Rust kao drugog jezika za razvoj drajvera i modula jezgre (podrška za Rust nije aktivna po defaultu i ne dovodi do uključivanja Rusta među obvezne ovisnosti za izgradnju jezgre). Omogućena je upotreba u kodu jezgre makronaredbe "derive(CoercePointee)", koja omogućava korištenje pametnih pokazivača s trait-objektima. U jezgru su uključene Rust-omotava za PCI, platforme, Open Firmware, simboličkih uređaja i nekih funkcija ulaza/izlaza. Greg Kroah-Hartman, odgovoran za podršku stabilnoj grani jezgre Linuxa, opisao je trenutno stanje kao „gotovo spremno za pisanje pravog drajvera na Rustu”.
- U scenarijima izgradnje predložen novi kod za generiranje verzija debug simbola za učitane module, koji sada koristi informacije iz debug zapisa u DWARF formatu, umjesto da izravno analiziraju izvorni kod. Promjena omogućava primjenu verzioniranja debug simbola za module napisane na jeziku Rust. Stara implementacija također je ostavljena u jezgru, a izbor generatora vrši se na razini opcija izgradnje.
- Za arhitekturu PowerPC implementirano je podrška za režim lenjog preuzimanja zadataka (PREEMPT_LAZY, lazy preemption), koji odgovara režimu potpunog preuzimanja («full preemption») za realtime zadatke (RR/FIFO/DEADLINE), ali odgađa preuzimanje običnih zadataka (SCHED_NORMAL) do granice tika.
- u podsystemu profiliranja performansi perf dodana podrška za brojače potrošnje energije procesora AMD. Dodana mogućnost rada na sustavima koji imaju do 2048 CPU jezgri.
- Osigurana je mogućnost korištenja sysctl parametra pid_max s prostorima imena identifikatora procesa (ID namespace). Parametar pid_max je namijenjen ograničavanju maksimalne vrijednosti identifikatora procesa (PID) i sada se može koristiti za ograničavanje maksimalnog broja procesa pokrenutih u navedenom prostoru imena. Obrada parametra se vrši hijerarhijski, tj. ograničenja u vanjskim prostorima imena se primjenjuju na ugniježdene prostore imena.
- Prilikom korištenja za pokretanje procesa sistemskog poziva execveat u datotečnom sustavu /proc sada će se prikazivati ime pokrenutog fajla, a ne broj fajl deskriptora.
- U sastav izvornog koda jezgre (u katalogu samples) dodana je utilita mountinfo, koja prikazuje korištenje sistemskih poziva statmount() i listmount().
- U podsystemu BPF predložene nove funkcije bpf_local_irq_save() i bpf_local_irq_restore() za privremeno isključivanje prekida na lokalnom CPU. Funkcije se mogu koristiti za implementaciju struktura čija obrada nije prekinuta prekidima.
- U sistemskom pozivu madvise() prilikom korištenja oznaka MADV_DONTNEED i MADV_FREE osigurano je oslobađanje tablica stranica memorije povezanih s oslobođenim rasponom adresa, budući da u nekim situacijama prazne stranice memorije mogu zauzimati značajnu količinu memorije.
- Za arhitekturu OpenRISC implementirana je podrška za mehanizam ponovljivih sekvenci (rseq, restartable sequences), namijenjen brzom atomskom izvršavanju operacija koje, u slučaju prekida od strane druge niti, se čiste i ponovo pokušavaju za izvršenje.
- Reorganizovan je kod s implementacijom algoritama CRC32 i CRC-T10DIF, koji više nije preklapajuć s podsystemom crypto i poziva se direktno iz bibliotekarskog sučelja. Promjena je omogućila pojednostavljenje koda i povećanje njegove efikasnosti.
- U sustav asinkronog ulaza/izlaza io_uring dodana je sučelje za prijenos dodatnih metapodataka o cjelovitosti tijekom izvođenja operacija čitanja i pisanja.
- Virtualizacija i sigurnost
- U sustavni poziv execveat dodana je oznaka AT_EXECVE_CHECK, koja omogućava izvršenje provjere valjanosti izvršavanja datoteke bez njenog stvarnog pokretanja, ali uzimajući u obzir politike sigurnosti, prava pristupa i aktivne LSM module. Za korištenje zajedno s AT_EXECVE_CHECK ponuđene su securebit oznake SECBIT_EXEC_RESTRICT_FILE i SECBIT_EXEC_DENY_INTERACTIVE, koje se mogu koristiti za ograničavanje izvršavanja datoteka sa skriptama u programskim jezicima. Oznaka SECBIT_EXEC_RESTRICT_FILE nalaže linkerima i interpreterima da koriste opciju AT_EXECVE_CHECK za provjeru valjanosti izvršavanja, dok oznaka SECBIT_EXEC_DENY_INTERACTIVE zabranjuje obradu interaktivnih naredbi. Osnovna ideja promjene je mogućnost primjene politika sigurnosti ne samo na tradicionalne izvršne datoteke, već i na tekstualne datoteke sa skriptama koje se mogu učitati tijekom pokretanja interpretera (tj. zabrana izvršavanja može se provesti ne samo pri pokretanju './script.sh' već i pri izvršavanju u obliku 'sh script.sh').
- Na x86 sustavima implementirana je podrška za zaštićene mjerače vremena za gostujuće sustave, koji ne dopuštaju promjenu sistemskih sati iz okruženja domaćina. Mogućnost je implementirana na bazi mehanizma AMD SEV (Secure Encrypted Virtualization), koji se koristi u sustavima virtualizacije za zaštitu virtualnih mašina od ometanja od strane hipervizora ili administratora sustava domaćina.
- U sustav mandatorne kontrole pristupa SELinux dodana podrška xperm pravila, koja omogućuju povezivanje SELinux politika s određenim pozivima ioctl() ili porukama netlink.
- Za potpisivanje modula kernela digitalnim potpisom umjesto SHA1 prema zadanim postavkama je korišten algoritam SHA512.
- U drajverima za gostujuće sustave VirtualBox je uključena podrška za ARM64 arhitekturu.
- U hipervizoru KVM nastavljena rada na implementaciji mehanizma Intel TDX (Trusted Domain Extensions) za šifriranje memorije gostujućih sustava.
- U virtio_blk dodana podrška za način oporavka pogrešaka.
- Mrežni subsistem
- U implementaciji protokola RxRPC dodana je mogućnost korištenja velikih UDP okvira za povećanje propusnosti.
- Za TCP dodana je podrška za algoritam RACK-TLP za određivanje gubitka paketa.
- Dodano novi parametar sysctl tcp_tw_reuse_delay koji se primjenjuje na razini prostora imena (network namespace) i omogućuje određivanje kašnjenja prije nego što sustav ponovno može upotrijebiti broj mrežnog porta nakon zatvaranja TCP soketa.
- Dodana mogućnost odabira pružatelja točnog vremena (PTP) za generiranje vremenskih oznaka na razinama PHY i MAC.
- Za IPsec implementirano je podrška za mehanizam agregacije i fragmentacije enkapsuliranih IP paketa – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- U sustav mrežnih soketa dodana podrška prijenosa informacija o prioritetu (SO_PRIORITY) u obliku kontrolnih poruka (cmsg — control messages). Za mrežne sokete dodana opciju SO_RCVPRIORITY, koja uključuje funkcionalnost recvmsg() za prijenos informacija o prioritetu soketa.
- Oprema
- Dodano vozač amdxdna za integrirane u CPU AMD akceleratore NPU (Neural Processing Unit) bazirane na arhitekturi XDNA, namijenjene za ubrzavanje operacija vezanih uz strojno učenje. NPU na bazi arhitekture XDNA dostupna je u serijama 7040 i 8040 procesora AMD Ryzen, akceleratorima AMD Alveo V70 i SoC AMD Versal.
- U vozaču i915 dodane su identifikatori novih GPU-a, implementiran je handler za greške inicijalizacije HDMI, poboljšana je pouzdanost resetiranja GPU motora na Haswell i starijim sustavima.
- Nastavljena rad na drm vozaču (Direct Rendering Manager) Xe za GPU-ove bazirane na Intel Xe arhitekturi, koji se koristi u Intel grafičkim karticama Arc i integriranoj grafici, počevši od procesora Tiger Lake.
- U vozaču Nouveau dodana je mogućnost prijenosa buffera s logovima GSP-RM putem debugfs.
- U vozaču AMDGPU implementirana je podrška za DRM panic mehanizam, koji prikazuje sličan 'plavi ekran smrti' prilikom grešaka. Nastavljena je priprema za podršku budućoj seriji grafičkih kartica Radeon RX 9000 baziranim na RDNA4 arhitekturi. Ažurirana je podrška za 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 i ISP.
- U DRM vozaču msm (GPU Qualcomm Adreno) dodana je podrška za Qualcomm SM6150 (QCS615) platformu.
- U DRM vozaču panfrost dodana je podrška za SoC MediaTek MT8188 s GPU-om Mali-G57.
- U DRM vozaču vc4 dodana je podrška za SoC Broadcom BCM2712 (Raspberry Pi 5).
- U vfio vozaču nvgrace-gpu dodana podrška čipova NVIDIA Grace Blackwell 200.
- U sastavu uključen vozač za Intel THC (Touch Host Controller) kontrolere, korišten za interakciju s dodirnim ekranima i touchpadima na nekim prijenosnim računalima. Dodana podrška za Wacom uređaje s PCI sučeljem. Dodana podrška za igre kontrolere QH Electronics.
- Dodana podrška ARM platforme, SoC i uređaji: 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. Dodana podrška za SoC SpacemiT K1 na bazi RISC-V arhitekture.
- U zvučnoj podsklopu ALSA za MIDI 2.0 proširene API rawmidi i sequencer. U API-u za prebacivanje operacija kompresije na stranu zvučne kartice dodana podrška za ASRC (Asynchronous Sample Rate Conversion).
- Dodana podrška za zvučne sustave uređaja Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 i 18i20. Dodana podrška za bežične slušalice SteelSeries Arctis 9.
Izvor: linux.org.ru
