После двух месяцев разработки Линус Торвальдс представил izdavač jezgra Linux 6.14. Među najistaknutijim promenama su: drajver ntsync sa primitivima sinhronizacije Windows NT, podešavanje balansiranja operacija čitanja u Btrfs RAID1, podrška za reflink u XFS u realtime režimu, mogućnost nekaskiranog baferisanog ulaza/izlaza, dmem cgroup za ograničavanje RAM-a GPU, korišćenje io_uring u FUSE, delegiranje atributa u NFS, podrška za atomski zapis u Device mapper, ubrzanje simboličkih linkova, upravljanje mogućnošću izvršavanja skripti, podrška za čipove Qualcomm Snapdragon 8 Elite, drajver za NPU AMD.
U novu verziju je uključeno 12115 ispravki od 1984 developera, veličina patch-a je 39 MB (promene su zahvatile 10170 datoteka, dodato je 531586 linija koda, uklonjeno 235999 linija). U prošlom izdanju je bilo 14172 ispravki od 2086 developera, veličina patch-a je bila 46 MB. Približno 41% svih predstavljenih promena u 6.14 se odnosi na drajvere uređaja, oko 13% promena se tiče ažuriranja koda specifičnog za hardverske arhitekture, 14% se odnosi na mrežni stek, 7% na datotečne sisteme i 4% na unutrašnje pod sisteme jezgra.
- Дисковая подсистема, ввод/вывод и файловые системы
- V datotečnem sistemu Btrfs vykoukly podrška za nove metode balansiranja operacija čitanja između uređaja koji čine RAID1 niz. Pored ranijeg raspoređivanja opterećenja na osnovu identifikatora procesa (pid), u novoj verziji su predložena tri nova režima balansiranja: „rotation” (ravnomerno raspoređivanje opterećenja po svim uređajima, režim je podrazumevano uključen); „latency” (raspoređivanje sa obzirom na latencije, može biti korisno u slučaju kvara ili nestabilnog rada uređaja); devid (ručno upravljanje). Za promenu režima balansiranja dodano interfejs /sys/fs/btrfs//read_policy. Među drugim promenama u Btrfs – izvedba ioctl FS_IOC_READ_VERITY_METADATA.
- Dodano režim nekaskiranog baferisanog ulaza/izlaza, pri čemu se podaci uklanjaju iz keša stranica odmah nakon što se završe operacije čitanja ili pisanja. Promena može biti korisna pri korišćenju jako brzih uređaja za skladištenje, čije je keširanje operacija u RAM-u suvišno. Za takve uređaje, novi režim omogućava da se izbegne nepotrebno trošenje memorije na keš stranica bez korišćenja složenog API-ja za direktni ulaz/izlaz (Direct I/O).
- U fsnotify, mehanizmu za praćenje promena u FS, dodano novi događaj FS_PRE_ACCESS, koji 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 greške, sistemski poziv vraća kod greške u korisnički prostor. Pomoću FS_PRE_ACCESS proces u korisničkom prostoru može, na primjer, organizirati popunjavanje datoteke kako podaci postaju dostupni u sporom spremištu.
- U FUSE podsustav, koji omogućuje stvaranje implementacija datotečnih sustava u korisničkom prostoru, dodano je podpora razmjenu podataka između jezgre i obradnika u korisničkom prostoru koristeći mehanizam ulaz/izlaz io_uring. Promjena omogućava poboljšanje performansi FUSE smanjenjem konteksta između jezgre i korisničkog prostora.
- U datotečni sustav XFS dodano je možnost korisljenje obrnute mape (rmap, reverse-mapping) u načinu rada sa predvidljivim kašnjenjima („real-time uređaj”). Obrnuta mapa omogućava određivanje koji se datoteka pohranjuje koristeći određeni blok na uređaju za pohranu. Pomoću rmap u XFS za real-time način implementirana je podrška za operaciju reflink, omogućujući stvaranje kopija datoteka kloniranjem metapodataka datoteke i stvaranjem veze na već postojeće podatke bez stvarnog kopiranja.
- U VFS je bila keširanje veličine simboličkih veza, što je omogućilo ubrzanje izvršenja 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 delegiranja atributa datoteka, što omogućava upravljanje atributima datoteka, poput vremena izmjene (mtime), na strani NFS klijenta, bez potrebe da se promjene vrate na poslužitelj. U NFS-u je također poboljšana podrška za protokol „LOCALIO”, koji omogućava otkrivanje nalaze li se klijent i NFS poslužitelj na istom hostu, kako bi se aktivirale odgovarajuće optimizacije, poput korištenja direktnog ulaza/izlaza (Direct I/O) od strane klijenta.
- Povečana performanse operacija čitanja u datotečnim sustavima NETFS, CIFS i AFS (Andrew File System).
- U Squashfs vključen režim neposrednega nalaganja blokov v strančni predpomnilnik (SQUASHFS_FILE_DIRECT), ki omogoča, da se izognemo ločenemu predpomnilniku read_page. Sprememba je omogočila zmanjšanje porabe pomnilnika pri delovanju Squashfs.
- v sistemskem klicu statx() je realiziran flags STATX_DIO_READ_ALIGN za določitev potrebnega poravnanja za bralne operacije iz datoteke.
- v datotečnem sistemu Bcachefs je ažuriran in stabilizirano format diskovnih struktur. Vsake nadaljnje spremembe formata bodo uvrščene med neobvezne in se bodo izvajale v obliki dodatkov po izbiri. Znatno je povečana hitrost preverjanja celovitosti FS. Poleg tega je bila v Bcachefs izboljšana funkcionalnost v načinu samo za branje; odpravljene so težave, povezane z dostopom do pomnilnika po njegovem sproščanju (use after free); rešene so težave z reflink kazalci v fsck; popravljena je obdelava ponovnega zagon transakcij.
- vrnjen modul md-linear, namenjen združevanju blokovnih naprav. Ta modul je bil prej razglašen za zastarelega in odstranjen iz jedra 6.8, a se je izkazalo, da je bil v povpraševanju, zato je zdaj obnovljen.
- Datotečni sistemi F2FS in SQUASHFS so bili preneseni na uporabo фолиантов страниц памяти (page folios).
- V gonilniku null_blk je bil implementiran atribut "rotational", ki se nastavi preko configfs in omogoča simulacijo dela z napravo na osnovi vrtečih diskov za lažje testiranje funkcij jedra.
- V sistemu Device mapper in v modulih dm-mirror, dm-io, dm-table, dm-linear, dm-stripe in dm-raid1 je bila uvedena podpora atomskemu pisanju.
- Pomnilnik in sistemske storitve
- Zaključeno je integracija v jedro gonilnika ntsync, ki implementira simbolno napravo /dev/ntsync in niz primitivov za sinhronizacijo, uporabljenih v jedru Windows NT. Implementacija takšnih primitivov na ravni jedra znatno povečuje zmogljivost iger Windows, ki se izvajajo preko Wine. Povečanje zmogljivosti nastane zaradi odprave stroškov, povezanih z uporabo RPC v prostoru uporabnika. Uvedba ločenega gonilnika za jedro Linux je razložena z zapletenostjo pravilne implementacije NT sinhronizacijskega API nad obstoječimi primitivi v jedru.
- Dodajanje novega krmilnika cgroup DMEM za ločeno spremljanje pomnilniških področij naprav, kot je GPU. DMEM omogoča ustvarjanje ločenih cgroup za različne naloge, ki delujejo z GPU, tako da lahko tečejo brez vpliva druga na drugo. Nova funkcija rešuje težavo z nasilnim končanjem operacij z GPU, ko zmanjka razpoložljivega pomnilnika, zahvaljujoč ločenemu spremljanju pomnilnika GPU in pomnilnika CPU, ki ga uporabljajo gonilniki, v ločenih cgroup.
- Izvedene so bile optimizacije za razširitev operacije praznjenja (flush) predpomnilnika TLB (Translation Lookaside Buffer), ki se uporablja za pospeševanje pretvorbe virtualnih naslovov v fizične. Dodane optimizacije vključujejo odloženo posodabljanje nekaterih podatkovnih struktur med preklapljanjem konteksta, kar povečuje zmogljivost pri prehodu nekaterih testov.
- Povečana zmogljivost mehanizma MGLRU (Multi-Generational LRU), ki se uporablja za določitev, katere strani pomnilnika se uporabljajo, in katere je mogoče izprazniti v razdelke za izmenjavo.
- Nadaljevanje prenos sprememb iz veje Rust-for-Linux, povezane z uporabo jezika Rust kot drugega jezika za razvoj gonilnikov in modulov jedra (podpora za Rust ni privzeto aktivna in ne vodi do vključitve Rust v zbirne odvisnosti jedra). Omogočena je možnost uporabe v kodi jedra makroja „derive(CoercePointee)“, ki omogoča uporabo pametnih kazalcev s trait-objekti. V jedro vključeni Rust-vrvice za PCI, platforme, Open Firmware, simbolnih naprav in nekaterih funkcij vhod/izhod. Greg Kroah-Hartman, odgovoren za podporo stabilne veje jedra Linux, je opisal trenutno stanje kot „skoraj pripravljeno za pisanje pravega gonilnika v Rustu.“
- V scenarijih sestavljanja je bil predlagan nov koda za generiranje različic razhroščevalnih simbolov za nalagane module, ki zdaj uporablja informacije iz razhroščevalnih zapisov v formatu DWARF, namesto da bi neposredno analiziral izvorno kodo. Sprememba omogoča uporabo različic razhroščevalnih simbolov za module, napisane v jeziku Rust. Stara implementacija je prav tako ohranjena v jedru, izbira generatorja pa se izvede na ravni možnosti sestavljanja.
- Za arhitekturo PowerPC je bila uvedena podpora lenivého předčasného ukončení úloh (PREEMPT_LAZY, lazy preemption), které odpovídá režimu plného předčasného ukončení («full preemption») pro realtime úlohy (RR/FIFO/DEADLINE), ale odkládá předčasné ukončení běžných úloh (SCHED_NORMAL) do hranice ticku.
- V subsystému profilování výkonu perf je dodana podpora počítadel energetické spotřeby procesorů AMD. Dodana možnost provozu na systémech s až 2048 jádry CPU.
- Dostavljena je možnost použití parametru sysctl pid_max s prostory ID procesu (ID namespace). Parametr pid_max slouží k omezení maximální hodnoty identifikátorů procesů (PID) a nyní může být použit k omezení maximálního počtu procesů spuštěných v uvedeném prostoru. Zpracování parametru probíhá hierarchicky, tj. omezení ve vnějších prostorech se vztahují na vnořené prostory.
- Při použití pro spuštění procesu systémového volání execveat v souborovém systému /proc se nyní zobrazuje název spuštěného souboru místo čísla souborového deskriptoru.
- Do zdrojového kódu jádra (ve složce samples) byla přidána utilita mountinfo, která demonstruje použití systémových volání statmount() a listmount().
- V podsystemu BPF predloženi nové funkce bpf_local_irq_save() a bpf_local_irq_restore() pro dočasné vypnutí přerušení na lokálním CPU. Funkce mohou být použity k realizaci struktur, jejichž zpracování není přerušováno přerušeními.
- Ve systémovém volání madvise() při použití flagů MADV_DONTNEED a MADV_FREE je zagotovljeno uvolnění tabulek stránek paměti spojených s uvolňovaným rozsahem adres, protože v některých situacích mohou prázdné stránky paměti zabírat docela dost paměti.
- Pro architekturu OpenRISC byla implementována podpora mechanismu restartovatelných sekvencí (rseq, restartable sequences), určeného pro rychlé atomické provedení operací, které v případě přerušení jiným vláknem jsou vyčištěny a pokusí se o opakované provedení.
- Izvedena je bila reorganizacija kode z implementacijo algoritemov CRC32 in CRC-T10DIF, ki se več ne prekrivata s podsistemom crypto in se neposredno kliče iz knjižničnega vmesnika. Sprememba je omogočila poenostavitev kode in povečanje njene učinkovitosti.
- V sistem asinhonega vnosa/izdaje io_uring dodano rozhraní pro přenos dalších metadat o integritě při vykonávání operací čtení a zápisu.
- Virtualizacija in varnost
- V sistemski klic execveat dodano flag AT_EXECVE_CHECK, který umožňuje provést kontrolu dovoljenost izvršavanja datoteke bez njenog stvarnog pokretanja, uzimajući u obzir sigurnosne politike, prava pristupa i aktivne LSM module. Za korišćenje zajedno sa AT_EXECVE_CHECK predloženi su securebit flagovi SECBIT_EXEC_RESTRICT_FILE i SECBIT_EXEC_DENY_INTERACTIVE, koji se mogu koristiti za ograničenje izvršavanja datoteka sa skriptama na interpretiranim programskim jezicima. Flag SECBIT_EXEC_RESTRICT_FILE nalaže linkerima i interpreterima korišćenje opcije AT_EXECVE_CHECK za proveru dozvoljenosti izvršavanja, dok flag SECBIT_EXEC_DENY_INTERACTIVE zabranjuje obradu interaktivnih komandi. Osnovna ideja promene leži u mogućnosti primene sigurnosnih politika ne samo na tradicionalne izvršne datoteke, već i na tekstualne datoteke sa skriptama koje se mogu učitati pokretanjem interpreter (tj. zabrana izvršavanja može biti ostvarena ne samo prilikom pokretanja ‘./script.sh’ već i prilikom izvršavanja u formi ‘sh script.sh’).
- Na x86 sistemima implementirana je podrška za zaštićene brojčanike vremena za gostujuće sisteme, koji ne dozvoljavaju promenu sistemskog sata gostujućeg sistema iz host okruženja. Mogućnost je realizovana na osnovu mehanizma AMD SEV (Secure Encrypted Virtualization), korišćenog u sistemima virtuelizacije za zaštitu virtuelnih mašina od ometanja sa strane hipervizora ili administratora host sistema.
- U sistemu mandatne kontrole pristupa SELinux je dodana podpora xperm pravila, koja omogućavaju vezivanje SELinux politika za određene pozive ioctl() ili netlink poruke.
- Za potpisivanje modula kernela digitalnim potpisom umesto SHA1 po defaultu uporabljen koristi se SHA512 algoritam.
- U drajverima za gostujuće sisteme VirtualBox je vključena postoji podrška za ARM64 arhitekturu.
- U hipervizoru KVM nastavljeno rad o korišćenju mehanizma Intel TDX (Trusted Domain Extensions) za enkripciju memorije gostujućih sistema.
- U virtio_blk je dodana postoji podrška za režim oporavka grešaka.
- Mrežna podsistem
- U implementaciji protokola RxRPC vykoukly omogućena je upotreba velikih UDP okvira za povećanje propusnosti.
- Za TCP je dodatna podrška za algoritam RACK-TLP za identifikaciju gubitka paketa.
- Dodano novi parametar sysctl tcp_tw_reuse_delay, koji deluje u vezi sa prostorom imena (network namespace) i omogućava da se definiše kašnjenje koje se unosi pre nego što se sistem može ponovo koristiti broj mrežnog porta nakon zatvaranja TCP сокета.
- Dodana možnost izbire ponudnika natančnega časa (PTP) za generiranje časovnih žigov na ravneh PHY in MAC.
- Za IPsec je bila uvedena podpora mehanizmu agregacije in fragmentacije inkapsuliranih IP paketov – IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- V sistemu omrežnih vtičnic je dodana podpora za prenos informacij o prioriteti (SO_PRIORITY) v obliki nadzornih sporočil (cmsg — control messages). Za omrežne vtičnice je dodana možnost SO_RCVPRIORITY, ki vključuje v funkcije recvmsg() prenos informacij o prioriteti vtičnice.
- Oprema
- Dodano motor amdxdna za integrirane v CPU AMD pospeševalnike NPU (Neural Processing Unit) na osnovi arhitekture XDNA, namenjene za pospeševanje operacij povezanih z strojniškim učenjem. NPU na osnovi arhitekture XDNA je na voljo v serijah 7040 in 8040 procesorjev AMD Ryzen, pospeševalci AMD Alveo V70 in SoC AMD Versal.
- V gonilniku i915 dodano identifikatorji novih GPU, določen obdelovalnik napak inicializacije HDMI, povečana zanesljivost ponovnega zagona GPU motorjev na Haswell in starejših sistemih.
- Nadaljuje se delo na drm gonilniku (Direct Rendering Manager) Xe za GPU na osnovi arhitekture Intel Xe, ki se uporablja v grafičnih karticah Intel družine Arc in integrirani grafiki, od procesorjev Tiger Lake naprej.
- V gonilniku Nouveau je dodana možnost prenosa predpomnilnikov s koti GSP-RM preko debugfs.
- V gonilniku AMDGPU je bila implementirana podpora za mehanizem DRM panic, ki prikazuje podobo «modrega zaslona smrti» ob napakah. Nadaljuje se priprava na podporo za prihodnjo serijo grafičnih kart Radeon RX 9000 na osnovi arhitekture RDNA4. Posodobljena podpora 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 in ISP.
- V DRM gonilniku msm (GPU Qualcomm Adreno) je bila dodana podpora za platformo Qualcomm SM6150 (QCS615).
- V DRM-gonilniku panfrost je dodana podpora za SoC MediaTek MT8188 s GPU Mali-G57.
- V DRM-gonilniku vc4 je dodana podpora za SoC Broadcom BCM2712 (Raspberry Pi 5).
- V vfio gonilniku nvgrace-gpu je dodana podpora čipov NVIDIA Grace Blackwell 200.
- V sestavi vključen gonilnik za krmilnike Intel THC (Touch Host Controller), ki se uporablja za interakcijo z zasloni na dotik in sledilnimi ploščicami na nekaterih prenosnih računalnikih. Dodana je podpora za naprave Wacom z vmesnikom PCI. Dodana podpora za igralne krmilnike QH Electronics.
- Dodana podpora ARM plošč, SoC in naprav: 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 podpora za SoC SpacemiT K1 na osnovi arhitekture RISC-V.
- V zvočni podsistemi ALSA za MIDI 2.0 širijo API rawmidi in sequencer. V API za prenos operacij stiskanja na zvočno kartico je bila dodana podpora ASRC (Asynchronous Sample Rate Conversion).
- Dodana je podpora zvočnih sistemov naprav Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 in 18i20. Dodana podpora brezžičnih slušalk SteelSeries Arctis 9.
Izvor: linux.org.ru
