Nakon dva mjeseca razvoja, Linus Torvalds predstavio je verziju jezgre Linux 6.14. Među najvažnijim promjenama su: ntsync vozač s Windows NT sinkronizacijskim primitivima, podešavanje balansiranja operacija čitanja u Btrfs RAID1, podrška za reflink u XFS u stvarnom vremenu, mogućnost nepredmemoriranog baferiranog unosa/izlaza, dmem cgroup za ograničavanje GPU memorije, korištenje io_uring u FUSE-u, delegiranje atributa u NFS-u, podrška za atomsko pisanje u Device mapperu, ubrzanje simboličkih veza, upravljanje mogućnošću izvršavanja skripti, podrška za Qualcomm Snapdragon 8 Elite čipove, vozač za AMD NPU.
U novu verziju uključeno je 12115 ispravki od 1984 programera, veličina zakrpe je 39 MB (promjene su zahvatile 10170 datoteka, dodano je 531586 redaka koda, uklonjeno 235999 redaka). U prošloj verziji bilo je 14172 ispravki od 2086 programera, veličina zakrpe bila je 46 MB. Oko 41% svih promjena predstavljenih u 6.14 odnosi se na upravljačke vozače uređaja, otprilike 13% promjena je vezano uz ažuriranje koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stek, 7% na datotečne sustave i 4% na unutarnje podprocese jezgre.
Glavne novine u jezgri 6.14:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- U datotečnom sustavu Btrfs uvedena je podrška za nove metode balansiranja operacija čitanja između pohrana uključenih u RAID1 skup. Pored ranije postojećeg rasporeda opterećenja temeljenog na identifikatorima procesa (pid), nova verzija nudi tri nova načina balansiranja: „rotation“ (ravnomjerno raspoređivanje opterećenja po svim pohrana, način je prema zadanim postavkama uključen); „latency“ (raspoređivanje uzimajući u obzir latencije, može biti korisno u slučaju kvarova ili nestabilnog rada pohrana); devid (ručno upravljanje). Za promjenu načina balansiranja dodano je sučelje „/sys/fs/btrfs//read_policy“. Među ostalim promjenama u Btrfs-u je implementacija ioctl FS_IOC_READ_VERITY_METADATA.
- Dodana je opcija necacheiranog baferiranog ulaza/izlaza, pri čemu se podaci brišu iz stranica cachea odmah nakon što su operacije čitanja ili pisanja završene. Ova promjena može biti korisna prilikom korištenja vrlo brzih uređaja za pohranu, gdje je keširanje operacija u RAM-u suvišno. Za takve uređaje novi režim omogućava smanjenje nepotrebne potrošnje memorije od strane stranica cachea bez potrebe za složenim API-jem za direktni ulaz/izlaz (Direct I/O).
- U fsnotify, mehanizmu za praćenje promjena u datotečnom sustavu, dodan je novi događaj FS_PRE_ACCESS, koji se generira u fazi prije pristupa sadržaju datoteke. Događaj se obrađuje u sinkronom načinu, tj. jezgra šalje događaj i čeka na odgovor. Ako se odgovor primi — operacija se izvršava, a u slučaju greške — sistemski poziv vraća kod greške u korisnički prostor. Uz pomoć FS_PRE_ACCESS, proces u korisničkom prostoru može, primjerice, organizirati popunjavanje datoteke kada su podaci spremni u sporijem spremištu.
- U FUSE podsistemu, koja omogućava kreiranje implementacija datotečnih sustava u korisničkom prostoru, dodana je podrška za razmjenu podataka između jezgre i obraditelja u korisničkom prostoru koristeći mehanizam ulaza/izlaza io_uring. Ova promjena poboljšava performanse FUSE-a smanjenjem prekida konteksta između jezgre i korisničkog prostora.
- U datotečni sustav XFS dodana je mogućnost korištenja obratnog mapiranja (rmap, reverse-mapping) u načinu rada s predvidivim kašnjenjima ("realtime device"). Obratno mapiranje omogućava određivanje koja datoteka koristi određeni blok na uređaju za pohranu. Pomoću rmap-a u XFS za realtime-režim implementirana je podrška za operaciju reflink, koja omogućava kreiranje kopija datoteka kloniranjem metapodataka datoteke i stvaranjem veze na već postojeće podatke bez njihovog stvarnog kopiranja.
- U VFS-u implementirano je keširanje veličine simboličkih linkova, što je povećalo brzinu 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 implementaciji NFSv4.2 dodana je podrška za delegiranje atributa datoteka, omogućujući upravljanje atributima datoteka poput vremena izmjene (mtime) s NFS klijenta, bez potrebe za vraćanjem promjena na server. Također je poboljšana podrška protokola „LOCALIO“, koji omogućuje utvrđivanje nalaze li se NFS klijent i server na istom hostu, kako bi se aktivirale odgovarajuće optimizacije, poput korištenja izravnog unosa/izlaza (Direct I/O) od strane klijenta.
- Povećana je izvedba operacija čitanja u datotečnim sustavima NETFS, CIFS i AFS (Andrew File System).
- U Squashfs je uključen način izravnog učitavanja blokova u stranice predmemorije (SQUASHFS_FILE_DIRECT), što omogućuje izbjegavanje potrebe za zasebnom predmemorijom read_page. Ova promjena je smanjila količinu memorije potrebne za rad Squashfs-a.
- U sustavnom pozivu statx() implementirana je oznaka STATX_DIO_READ_ALIGN, za određivanje potrebnog poravnavanja za operacije čitanja iz datoteke.
- U datotečnom sustavu Bcachefs ažuriran je i stabiliziran format diskovnih struktura. Sve daljnje promjene formata bit će klasificirane kao neobavezne i bit će implementirane kao opcijska proširenja. Značajno je povećana brzina provjere cjelovitosti FS-a. Osim toga, poboljšan je rad Bcachefs-a u načinu samo za čitanje; riješeni su problemi koji su dovodili do pristupanja memoriji nakon što je oslobođena (use after free); riješeni su problemi s reflink pokazateljima u fsck-u; i ispravljena je obrada ponovnog pokretanja transakcije.
- Vraćen je modul md-linear, koji je namijenjen spajanju blokovnih uređaja. Ovaj modul je ranije bio proglašen zastarjelim i uklonjen iz jezgre 6.8, ali se pokazalo da je bio tražen, te je sada vraćen.
- Datotečni sustavi F2FS i SQUASHFS prešli su na korištenje knjiga stranica memorije (page folios).
- Datotečni sustavi OCFS2 i DLMFS prešli su na korištenje novog API-ja za montiranje particija.
- U null_blk vozaču implementiran je atribut „rotational“, koji se postavlja putem configfs-a i omogućuje simulaciju rada s uređajem na bazi rotirajućih diskova radi olakšanja testiranja funkcija jezgre.
- U sustavu Device mapper i u modulima dm-mirror, dm-io, dm-table, dm-linear, dm-stripe i dm-raid1 implementirana je podrška za atomsko pisanje.
- Memorija i sistemske usluge
- Završena je integracija u jezgru drajvera ntsync, koji implementira simbolsku jedinicu /dev/ntsync i skup primitiva za sinkronizaciju korištenih u jezgru sustava Windows NT. Implementacija takvih primitava na razini jezgre značajno poboljšava performanse Windows igara pokrenutih putem Winea. Povećanje performansi postiže se eliminacijom troškova povezanih s korištenjem RPC-a u prostoru korisnika. Stvaranje posebnog drajvera za jezgru Linuxa objašnjava se problematičnošću ispravne implementacije API-ja za sinkronizaciju NT iznad postojećih primitava u jezgru.
- Dodan je novi kontroler cgroup DMEM za razdvojeno praćenje područja memorije uređaja, poput GPU-a. DMEM omogućuje stvaranje posebnih cgroup-a za različite zadatke koji rade s GPU-om, kako bi se mogli izvršavati neovisno jedno o drugom. Nova funkcionalnost rješava problem prisilnog prekida operacija s GPU-om kada istekne dostupna memorija, zahvaljujući praćenju reflektirane memorije GPU-a i memorije CPU-a koju koriste drajveri u posebnim cgroup-ima.
- Unesene su optimizacije za skaliranje operacije ispuštanja (flush) TLB-a (Translation Lookaside Buffer), koji se koristi za ubrzanje pretvorbe virtualnih adresa u fizičke. Dodane optimizacije svode se na odgođeno ažuriranje nekih struktura podataka tijekom prebacivanja konteksta, što omogućuje poboljšanje performansi tijekom prolaska određenih testova.
- Povećane su performanse MGLRU mehanizma (Multi-Generational LRU), koji se koristi za određivanje koje stranice memorije se koriste, a koje se mogu izbaciti u swap dio memorije.
- Nastavlja se prijenos promjena 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 zadano i ne dovodi do uključivanja Rusta u obavezne ovisnosti pri gradnji jezgre). Omogućeno je korištenje makroa "derive(CoercePointee)" u kodu jezgre, što omogućuje korištenje pametnih pokazivača s trait-objektima. U jezgru su uključene Rust-omotače za PCI, platforme, Open Firmware, simboličke uređaje i neke funkcije ulaza/izlaza. Greg Kroah-Hartman, odgovoran za podršku stabilnoj grani jezgre Linux, opisao je trenutačno stanje kao "gotovost za pisanje pravog drajvera na Rustu".
- U scenarijima gradnje predložen je novi kod za generiranje verzija debug simbola za učitane module, koji sada koristi informacije iz debug zapisa u formatu DWARF, a ne raspakirava izvorni kod izravno. Promjena omogućuje primjenu verzioniranja debug simbola za module napisane na jeziku Rust. Stara implementacija također je ostavljena u jezgre, a izbor generatora provodi se na razini opcija gradnje.
- Za PowerPC arhitekturu implementirana je podrška za način lenjog izbacivanja zadataka (PREEMPT_LAZY), koji odgovara načinu potpunog izbacivanja („full preemption”) za realtime zadatke (RR/FIFO/DEADLINE), ali odgađa izbacivanje uobičajenih zadataka (SCHED_NORMAL) do granice takta.
- U podskup sustava profiliranja performansi „perf” dodana je podrška za brojače potrošnje energije procesora AMD. Dodana je mogućnost rada na sustavima koji imaju do 2048 CPU jezgri.
- Omogućeno je korištenje sysctl-parametra pid_max s prostorima imena identifikatora procesa (ID namespace). Parametar pid_max namijenjen je ograničavanju maksimalne vrijednosti identifikatora procesa (PID) i sada se može koristiti za ograničavanje maksimalnog broja procesa koji se mogu pokrenuti u zadanom prostoru imena. Obrada parametra provodi se hijerarhijski, tj. ograničenja u vanjskim prostorima imena primjenjuju se na ugniježdene prostore imena.
- Kada se koristi za pokretanje procesa sistemskog poziva execveat, u datotečnom sistemu /proc će se sada prikazivati ime pokrenutog fajla, a ne broj datotečnog deskriptora.
- U izvorni kod jezgra (u direktoriju samples/vfs) dodan je alat mountinfo, koji demonstrira korišćenje sistemskih poziva statmount() i listmount().
- U BPF podsystemu predložene su nove funkcije bpf_local_irq_save() i bpf_local_irq_restore() za privremeno isključivanje prekida na lokalnom CPU. Ove funkcije mogu se koristiti za implementaciju struktura čija obrada ne prekida prekidima.
- U sistemskom pozivu madvise() pri korišćenju oznaka MADV_DONTNEED i MADV_FREE obezbeđeno je oslobađanje tabela stranica memorije povezanih sa oslobađanim opsegom adresa, jer u nekim situacijama prazne stranice memorije mogu zauzeti značajnu količinu memorije.
- Za arhitekturu OpenRISC implementirana je podrška za mehanizam ponovo pokrenutih sekvenci (rseq, restartable sequences), namenjenih za brzo atomsko izvršavanje operacija koje se, u slučaju prekida od strane drugog niti, čiste i ponovo pokušavaju izvršiti.
- 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 sistem asinkronog ulaza/izlaza io_uring dodat je interfejs za prenos dodatnih metapodataka o integritetu prilikom izvršavanja operacija čitanja i pisanja.
- Virtualizacija i sigurnost
- U sistemski poziv execveat dodat je oznaka AT_EXECVE_CHECK, koja omogućava proveru dozvoljenosti izvršavanja fajla bez njegovog stvarnog pokretanja, uzimajući u obzir bezbednosne politike, prava pristupa i aktivne LSM module. Za korišćenje zajedno sa AT_EXECVE_CHECK predložene su securebit oznake SECBIT_EXEC_RESTRICT_FILE i SECBIT_EXEC_DENY_INTERACTIVE, koje se mogu koristiti za ograničavanje izvršavanja fajlova sa skriptama u interpretiranim programskim jezicima. Oznaka SECBIT_EXEC_RESTRICT_FILE nalaže linkerima i interpreterima da koriste opciju AT_EXECVE_CHECK za proveru dozvoljenosti izvršavanja, dok oznaka SECBIT_EXEC_DENY_INTERACTIVE zabranjuje obradu interaktivnih komandi. Osnovna ideja izmene je mogućnost primene bezbednosnih politika ne samo na tradicionalne izvršne fajlove, već i na tekstualne fajlove sa skriptama koje se mogu učitati putem pokretanja interpreterom (t. j., zabrana izvršavanja može biti realizovana ne samo prilikom pokretanja './script.sh' već i prilikom izvršavanja u obliku 'sh script.sh').
- Na x86 sustavima implementirana je podrška za zaštićene brojila vremena za gostujuće sustave, koja ne dopuštaju promjene sustavnog sata gostujućeg sustava iz okruženja domaćina. Mogućnost je implementirana na temelju mehanizma AMD SEV (Secure Encrypted Virtualization), koji se koristi u sustavima virtualizacije za zaštitu virtualnih mašina od upada hipervizora ili administratora sustava domaćina.
- Sustavu mandantne kontrole pristupa SELinux dodana je podrška za xperm pravila, koja omogućuju povezivanje SELinux politika s određenim pozivima ioctl() ili netlink porukama.
- Za potpisivanje modula jezgre digitalnim potpisom umjesto SHA1, zadan je algoritam SHA512.
- U vozačima za gostujuće sustave VirtualBox uključena je podrška za ARM64 arhitekturu.
- U hiper VIZORU KVM nastavljena je obrada mehanizma Intel TDX (Trusted Domain Extensions) za šifriranje memorije gostujućih sustava.
- U virtio_blk dodana je podrška za način oporavka od grešaka.
- Mrežni subsistem
- U implementaciji RxRPC protokola omogućeno je korištenje velikih UDP paketa za povećanje propusnosti.
- Za TCP dodana je podrška za RACK-TLP algoritam za određivanje gubitaka paketa.
- Dodana je nova sysctl tcp_tw_reuse_delay opcija, koja djeluje u vezi s mrežnim imenom prostora (network namespace) i omogućuje određivanje kašnjenja prije nego što sustav može ponovno upotrebljavati broj mrežne usluge nakon zatvaranja TCP soketa.
- Dodana je mogućnost odabira davatelja točnog vremena (PTP) za formiranje vremenskih oznaka na razinama PHY i MAC.
- Za IPsec implementirana 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 je podrška za prijenos informacija o prioritetu (SO_PRIORITY) u obliku upravljačkih poruka (cmsg — control messages). Za mrežne sokete dodana je opcija SO_RCVPRIORITY, koja uključuje prijenos informacija o prioritetu soketa u funkciji recvmsg().
- Oprema
- Dodan je vozač amdxdna za integrirane u CPU AMD akceleratore NPU (Neural Processing Unit) temeljen na arhitekturi XDNA, namijenjen za ubrzanje operacija vezanih uz strojno učenje. NPU temeljen na arhitekturi XDNA isporučuje se u serijama 7040 i 8040 procesora AMD Ryzen, AMD Alveo V70 akceleratora i AMD Versal SoC.
- U i915 drajver dodani su identifikatori novih GPU, implementiran je obrada grešaka inicijalizacije HDMI, poboljšana je pouzdanost ponovnog pokretanja GPU jezgri na Haswell i starijim sustavima.
- Nastavljena su radovi na drm drajveru (Direct Rendering Manager) Xe za GPU zasnovane na Intel Xe arhitekturi, koja se koristi u Intelovim Arc grafičkim karticama i integriranoj grafici, počevši od Tiger Lake procesora.
- U vozaču Nouveau dodana je mogućnost prijenosa buffera s logovima GSP-RM putem debugfs.
- U AMDGPU drajveru implementirana je podrška za DRM panic mehanizam, koji prikazuje sličnost «plavog ekrana smrti» u slučaju grešaka. Nastavljena je priprema za podršku buduće serije Radeon RX 9000 grafičkih kartica zasnovanih 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 drajveru msm (Qualcomm Adreno GPU) 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 drajveru nvgrace-gpu dodana je podrška za čipove NVIDIA Grace Blackwell 200.
- U sastav je uključen drajver za Intel THC (Touch Host Controller), korišten za interakciju sa dodirnim ekranima i touchpad-ima na nekim laptopima. Dodana je podrška za Wacom uređaje s PCI sučeljem. Dodana je podrška za QH Electronics igre kontrolere.
- Dodana je podrška za ARM platforme, SoC i uređaje: 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 je podrška za SoC SpacemiT K1 zasnovan na RISC-V arhitekturi.
- U ALSA audio sustavu za MIDI 2.0 prošireni su API rawmidi i sequencer. U API za izvođenje operacija kompresije na strani zvučne kartice dodana je podrška za ASRC (Asynchronous Sample Rate Conversion).
- Dodana je podrška za audio sustave uređaja Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 i 18i20. Dodana je podrška za bežične slušalice SteelSeries Arctis 9.
Izvor: opennet.ru
