Uvoľnenie jadra Linux 6.16

Po dvoch mesiacoch vývoja predstavil Linus Torvalds vydanie jadra Linux 6.16. Medzi najvýraznejšími zmenami sú: ovládač na urýchlenie OpenVPN, mechanizmus Kexec HandOver, predvolené zapnutie päťúrovňových tabuliek strán pamäte pre x86, odstránenie protokolu DCCP, blokový ovládač zloop, možnosť odosielania core dumpov cez UNIX soket, podpora atómového zápisu v XFS, offload spracovanie zvuku pre USB zariadenia, optimalizácie v Ext4, virtuálny ovládač TPM (Trusted Platform Module), úplná implementácia Device Memory TCP, podpora pomenovaných kanálov v io_uring, príprava na integráciu DRM ovládača Asahi, mechanizmus „usermode queue“ v ovládači AMDGPU, podpora Intel TDE (Trusted Domain Extensions) a Intel APE (Advanced Performance Extensions).

Nová verzia obsahuje 15924 opráv od 2145 vývojárov, veľkosť záplaty – 50 MB (zmeny sa dotkli 13793 súborov, pridalo sa 655451 riadkov kódu, odstránilo 316441 riadkov). V predchádzajúcom vydaní to bolo 15945 opráv od 2154 vývojárov, veľkosť záplaty – 59 MB. Približne 45 % všetkých zmien vo verzii 6.16 sa týka ovládačov zariadení, asi 16 % zmien sa viaže na aktualizáciu kódu špecifického pre hardvérové architektúry, 13 % sa týka sieťového zásobníka, 4 % súvisí so súborovými systémami a 3 % s internými subsystémami jadra.

Hlavné novinky v jadre 6.16:

  • Diskový subsystém, I/O a súborové systémy
    • Bol pridaný ovládač zloop na vytváranie zonovaných blokových loopback zariadení, ktoré sa montujú v loop režime. Ovládač emuluje prácu bežných blokových zariadení, pričom používa niekoľko súborov z existujúceho súborového systému (po jednom súbore na uloženie každej zóny). Táto možnosť môže byť užitočná na testovanie súborových systémov, spracovateľov device mapper a aplikácií na podporu zonovaných zariadení, ktoré používajú delenie na zóny skupín blokov alebo sektorov, do ktorých je povolené iba sekvenčné pridávanie údajov s aktualizáciou celej skupiny blokov.
    • V súborovom systéme XFS bola implementovaná podpora atómového zápisu veľkých porcií údajov – niekoľko blokov môže byť teraz zapísaných v atómovom režime (buď všetky bloky budú úspešne zapísané, alebo žiadny blok nebude zapísaný).
    • Vo файловom systéme Ext4 bola zvýšená výkonnosť mechanizmu „fast commit“. Bola pridaná podpora veľkých stránkových zväzkov (large folios) pre bežné súbory, čo v vykonaných testoch zvýšilo výkon o 37 % pri intenzívnom sekvenčnom vstupe/výstupe. Pridaná podpora atomických operácií zápisu, ktoré pokrývajú niekoľko blokov.
    • Vo vodiči pre súborový systém ext2 bola oznámená zastaranosť podpory mechanizmu DAX, ktorý zabezpečuje priamy prístup k FS obchádzajúci stránkovú cache. Odstránenie DAX z vodiča ext2 je naplánované na koniec roka. Ako dôvod je uvedené zohľadnenie vodiča ext2 ako stabilnej štandardnej implementácie, v ktorej nie je prijateľné používať špecifické funkcie, ktoré nezískali primerané rozšírenie.
    • Súborové systémy OrangeFS, UFS, BFS a OMFS prešli na používanie nového API na montovanie zväzkov.
    • Do sysctl bola pridaná nastavenie vfs_cache_pressure_denom, na správu počtu záznamov v cache „dentry“ (vnútorné zastúpenie prvkov adresárov) za podmienok nedostatku pamäte v systéme. Čím vyššia je hodnota, tým viac záznamov môže byť vyprázdnených z cache (menej záznamov zostane v cache) pri nedostatku pamäte.
    • Vo FS Bcachefs bola pridaná možnosť „rebalance_on_ac_only“, ktorá zakazuje vykonávanie operácií rebalančnej a pozadia kompresie pri napájaní systému z batérie. Urýchlené operácie mazania snímok a zariadení. Znížená spotreba pamäte pri montovaní v režime iba na čítanie. Pridaná možnosť spustiť niektoré operácie obnovy po zlyhaní na pozadí bez zastavenia práce so FS.
    • Podsystemu správy napájania bolo umožnené samostatne vykonávať zmrazenie súborových systémov a premenných EFI pre režimy suspend a sleep (ak sú už FS zamrznuté obsluhou v užívateľskom priestore, ďalšie zmrazenie sa nevykonáva).
    • Pridaná možnosť urýchliť prácu EROFS pomocou zabudovaného urýchľovača Intel QAT (QuickAssist Technology), ktorý ponúka prostriedky na urýchlenie výpočtov súvisiacich s kompresiou a šifrovaním.
    • V NFS bol maximálny veľkosť dávky údajov pre operácie čítania a zápisu zvýšený z 1 na 4 MB (predvolené nastavenie je 1 MB, pretože nie všetci klienti podporujú väčšiu veľkosť).
    • Neprevilegovanym používateľom, ktorí majú práva CAP_SYS_ADMIN v samostatnom priestore identifikátorov používateľov (user namespace), ale nemajú rozšírené práva v koreňovom priestore, bola poskytnutá možnosť využitia mechanizmu fanotify na sledovanie zmien v súborových systémoch.
    • Pre súborové systémy používajúce subsystém FUSE bola poskytnutá funkčnosť na jednorazové vyčistenie všetkých uložených záznamov o adresároch (dentries). Do subsystému FUSE bola pridaná podpora pre veľké stránky pamäte.
    • Vo FС OverlayFS bola implementovaná podpora pre vytváranie v nepodriadených priestoroch vrstiev s dátami, pre ktoré sa využíva kontrola integrity pomocou modulu dm-verity. Uvedená funkčnosť umožňuje kombinovať dôveryhodné vrstvy s metadátami s nedôveryhodnými vrstvami s dátami, spracovávanými v nepodriadených priestoroch.
  • Pamäť a systémové služby
    • Bol pridaný mechanizmus KHO (Kexec HandOver) na spustenie nového jadra zo starého bez straty stavu systému. Pred odovzdaním riadenia novej verzii jadra môže byť stav kľúčových subsystémov jadra pomocou KHO serializovaný do oblasti pamäte, ktorá nebude narušená ďalšími operáciami. Nové jadro, ktoré prevezme kontrolu, obnoví serializovaný stav späť. Na základe KHO sa vyvíja subsystém Live Update Orchestrator (LUO), ktorý umožňuje reštart jadra bez prerušenia činnosti zariadení.
    • Bol pridaný parameter zostavy jadra CONFIG_X86_NATIVE, ktorý umožňuje pri kompilácii použiť možnosť "-march=native" na optimalizáciu s ohľadom na schopnosti procesora v aktuálnom systéme.
    • Bol pridaný podpora rozšírenia architektúry sady inštrukcií Intel APX (Advanced Performance Extension), ktorá poskytuje 16 ďalších všeobecných registrov (okrem 16 existujúcich), čo umožňuje použiť v kóde menej operácií čítania a zapisovania do pamäte na zvýšenie výkonu a zníženie spotreby energie.
    • Bol pridaný režim automatického nastavenia politiky rozdeľovania pamäte v NUMA systémoch, pri ktorom sa váhy uzlov prepočítavajú pri objavení novej informácie o priepustnosti počas zavádzania alebo pri horúcom pripojení pamäte.
    • V implementácii futex-ov bola pridaná podpora lokálnej hash tabuľky procesov (local futex_hash_bucket), ktorá je na rozdiel od predtým podporovanej spoločnej hash tabuľky pre všetky procesy lokálna pre jednotlivý proces a je zdieľaná všetkými vláknami tohto procesu. Lokálne hash tabuľky sa používajú iba pre futex-operácie PROCESS_PRIVATE. Okrem toho, v novej verzii bola pridaná podpora možností FUTEX2_NUMA a FUTEX2_MPOL, ktoré umožňujú ovplyvniť umiestnenie futex-ov v pamäti tak, aby boli bližšie k procesom, ktoré ich využívajú.
    • Pre systémy x86_64 bola zapnutá trvalá podpora päťúrovňových tabuliek strán pamäte (parameter CONFIG_X86_5LEVEL, ktorý riadil zapnutie päťúrovňových tabuliek, bol odstránený).
    • Do ovládača intel_pstate, ktorý spravuje parametre spotreby energie (P-state) na systémoch s procesormi Intel, bola pridaná podpora fungovania plánovača úloh so zohľadnením spotreby energie (EAS — Energy Aware Scheduling) na hybridných procesoroch, ktoré kombinujú vysoko výkonné a energeticky efektívne jadra CPU, ako sú Intel Lunar Lake.
    • Do sysfs boli pridané rozhrania: „\/sys\/devices\/system\/cpu\/cpuN\/cpu_capacity“ pre získanie informácií o možnostiach rôznych CPU na hybridných procesoroch a „\/sys\/devices\/system\/cpu\/cpuidle\/intel_c1_demotion“ na riadenie možnosti ponechať CPU v výkonnejšom stave, aj keď jadro sa pokúša previesť CPU do nižšieho stavu spotreby energie (napríklad jadro môže požiadať o prechod do stavu spotreby energie C6, ale firmvér pri veľkej intenzite prebúdzania CPU môže nechať procesor v stave C1).
    • Pre architektúru ARM64 bola pridaná podpora režimu lenivého vytláčania úloh (PREEMPT_LAZY, lazy preemption), ktorý zodpovedá režimu úplného vytláčania („full preemption“) pre realtime-úlohy (RR\/FIFO\/DEADLINE), ale zdržiava vytláčanie bežných úloh (SCHED_NORMAL) až do hranice tikov.
    • Pre architektúru ARM64 bola pridaná podpora používania rozšírení SME (Scalable Matrix Extension), aktivovaná prostredníctvom parametra CONFIG_ARM64_SME.
    • Pokračuje prenášanie zmien z vetvy Rust-for-Linux, týkajúcich sa použitia jazyka Rust ako druhého jazyka pre vývoj ovládačov a modulov jadra (podpora Rust nie je predvolene aktivovaná a nevedie k zahrnutiu Rust medzi povinné závislosti kompilácie jadra). Pre moduly napísané v jazyku Rust je poskytnutá možnosť používať configfs. Pridali sa abstrakcie potrebné pre vývoj grafických ovládačov. Rozšírili sa možnosti modulov alloc, time, str, list, workqueue a page. Pridaná podpora makra „assert!“ v testoch na báze KUnit. Pridaná sada abstrakcií na správu frekvencie CPU a použitie API súvisiacich so správou spotreby energie. Pridaná podpora dátovej štruktúry 'xarray'.
    • Pre architektúru RISC-V bola prenesená implementácia systémového volania getrandom(), optimalizovaná pomocou mechanizmu vDSO (virtuálny dynamicky zdieľaný objekt), ktorý umožňuje preniesť spracovateľ systémového volania z jadra do priestoru používateľa a vyhnúť sa prepínaniu kontextu. V uskutočnených testoch optimalizácia urýchlila získavanie náhodných čísel 17-krát. Pre RISC-V bola tiež implementovaná podpora vektorových rozšírení Zicbop, Zabha a Svinval, ktoré sa používajú v procesoroch SiFive.
    • Pre architektúru LoongArch bol limit na počet CPU v systéme zvýšený z 256 na 2048. Pridaná podpora plánovača úloh SCHED_MC (Multi-core).
    • Pridaná možnosť používania Unix-soketov na prenos súborových popisovačov. Na zakázanie takejto možnosti môžu aplikácie použiť v setsockopt() príznak SO_PASSRIGHTS.
    • Poskytnutá možnosť mapovania kruhového bufferu, ktorý sa používa na sledovanie činnosti jadra, do pamäte používateľského priestoru.
    • Spracovatelia crash-dump, ktorí sa používajú na vytvorenie správy o problémoch po havárii jadra, teraz môžu využiť kľúče LUKS použité havarijným jadrom na uloženie crash-dumpov do šifrovaných FS.
    • Do systému asynchrónneho vstupu/výstupu io_uring bola pridaná operácia IORING_OP_PIPE na vytváranie neomenovaných kanálov, ktorá je podobná systémovému volaniu pipe2, s výnimkou podpory pevných súborových popisovačov.
    • Pridaná možnosť príkazového riadku jadra „rt_group_sched“ na riadenie aktivácie plánovača vykonávania skupín realtime-úloh (SCHED_RR). Možnosť je podobná nastaveniu RT_GROUP_SCHED v Kconfig.
    • Pre zariadenia na báze zbernice CXL (Compute Express Link), používaných na organizáciu vysokorýchlostnej komunikácie CPU s pamäťovými zariadeniami, bola implementovaná podpora rozšírení RAS (Reliability, Availability, Serviceability), ktoré umožňujú implementovať rôzne schémy detekcie a korekcie chýb. CXL umožňuje pripojiť nové oblasti pamäte poskytované externými pamäťovými zariadeniami a využívať ich ako ďalšie zdroje fyzického adresného priestoru na rozšírenie systémovej RAM (DDR) alebo trvalej pamäte (PMEM).
    • Potrebná verzia GCC na zostavenie jadra bola pre všetky architektúry zvýšená na vetvu GCC 8. Na zostavenie je teraz potrebná aj minimálne verzia balíka binutils 2.30.
    • Systémový volanie uselib() bolo odstránené, pretože bolo už dávno vyhlásené za zastarané. Namiesto toho sa na zdieľanie knižníc používa mmap().
  • Virtualizácia a bezpečnosť
    • Bola pridaná počiatočná podpora používania mechanizmu Intel TDX (Trusted Domain Extensions) na ochranu hosťujúcich systémov bežiacich pod hypervízorom KVM pred zásahom a analýzou zo strany administrátora hostiteľského systému a fyzickými útokmi na hardvér. Ochrana je zabezpečená šifrovaním pamäte. virtuálních strojů.
    • Bol pridaný virtuálny ovládač TPM (Trusted Platform Module), ktorý umožňuje virtuálnym strojom komunikovať s TPM zariadeniami emulovanými modulom SVSM (Secure VM Service Module).
    • Bola obnovená možnosť používať GCC plugin randstruct, ktorý náhodne usporadúva rozloženie dátových štruktúr počas kompilácie za účelom sťaženia exploitácie zraniteľností.
    • Pridala sa možnosť využitia technológie IMA (Integrity Measurement Architecture) na overenie integrity pri spúšťaní nových jadier pomocou systémového volania kexec.
    • Bola vykonaná práca na znížení vplyvu používania SELinux na výkon. Pre zrýchlenie bol pridaný cache s výsledkami prístupových kontrol k adresárom. Do pravidiel genfscon bola pridaná možnosť používania masiek.
    • V kóde na interakciu s EFI bola pridaná možnosť zabudovania sekcie SBAT (UEFI Secure Boot Advanced Targeting) s metadátami o zrušených verziách bootovacích komponentov.
    • Vo načítavaných moduloch bola sekcia '.static_call_sites' preložená do režimu iba na čítanie po dokončení inicializácie.
    • Pre 64-bit ARM systems in the KVM hypervisor, support for nested virtualization has been implemented (disabled by default).
    • The KVM hypervisor has announced stable support for the RISC-V architecture.
  • Sieťový subsystém
    • The ovpn driver has been adopted, significantly improving OpenVPN performance by offloading encryption, packet processing, and channel management operations to the Linux kernel. This driver eliminates overhead related to context switching, optimizes performance through direct access to the kernel's internal APIs, and avoids slow data transfer between the kernel and user space (encryption, decryption, and routing are performed by the module without sending traffic to a user space handler). This offloading to the kernel eliminates unnecessary context switches.
    • Support for sending data from device memory (TX path) has been added to the Device Memory TCP mechanism. Previously, to simplify the integration of Device Memory TCP into the kernel, the functionality was limited to receiving data (RX path). Device Memory TCP allows the use of network sockets for directly transmitting the contents of peripheral device memory over the network (zero-copy mode), as well as directly placing the contents of network packets in the memory area of the recipient's device. Data transmitted in packets goes from the network card to the peripheral device's memory (DMABUF), such as GPU video memory, or from device memory to the network card directly, bypassing the CPU, while packet headers end up in the usual kernel buffers.
    • The ability to send core dump contents through the AF_UNIX socket has been provided, allowing the creation of more secure user-space core dump handlers that are not tied to privileged processes called by the kernel.
    • Support for the DCCP (Datagram Congestion Control Protocol) has been removed, as it has not gained widespread use and has remained in the kernel without maintenance for five years. The removal of DCCP from the kernel will eliminate barriers that hinder the restructuring of the inet_connection_sock data structure to improve TCP stack efficiency. Support for netfilter modules for filtering DCCP packets has been retained.
    • Na zjednodušenie správy chýb pri používaní soketov SO_PEERPIDFD môže teraz jadro prenášať pidfd pre už ukončené procesy (pidfd je spojený s konkrétnymi procesmi a na rozdiel od pid nie je znovu priradený).
    • Pomocou BPF je teraz možné vytvárať ovládače riadenia frontov paketov v sieťovom zásobníku (qdiscs) na ovplyvnenie poradia spracovania sieťových paketov.
    • V sieťovom súborovom systéme AFS sa používa GSSAPI (Generic Security Services API) na správu šifrovania pripojení s servermi YFS a OpenAFS.
    • Bol zavedený veľký objem optimalizácií. Preorganizovali sa zámky pre tabuľky smerovania IPv6 (niektoré operácie s trasami sa teraz vykonávajú až 3-krát rýchlejšie). Zrýchlila sa softvérová výpočtová kontrola súčtov crc32c. Motor GRO pre tunelovaný UDP prenos bol zrýchlený o 10 %. Vylepšil sa automatický nastavenie prijímacieho buffera pre TCP a zvýšili sa predvolené limity (v uskutočnených testoch sa priepustnosť pre jednotlivé prúdy cez 200Gbs kanál zvýšila o 60 %).
    • Do Netfilteru bola pridaná možnosť používania masiek v názvoch sieťových zariadení, ktoré sa používajú v netdev a flowtable. Do infraštruktúry nft trace bola integrovaná informácia o sledovaní pripojení (conntrack). Zrýchlila sa extrakcia tabuliek sledovania pripojení (conntrack) cez procfs.
  • Zariadenie
    • Bola pridaná podpora presunu spracovania zvukových prúdov na stranu zvukových zariadení s rozhraním USB (offload zvuku cez USB). Táto zmena umožňuje výrazne znížiť spotrebu energie prenosných zariadení pokračovaním spracovania zvukového prúdu počas spánkového režimu zvyšku systému. Predtým boli v jadrách pre platformu Android poskytnuté špecifické implementácie offload spracovania zvuku pre USB zariadenia, a teraz sa v hlavnom jadre objavila univerzálna implementácia, ktorú môžu využívať akékoľvek projekty.
    • Pokračovala integrácia komponentov ovládača Nova pre GPU NVIDIA, vybavených GSP firmvérmi, ktoré sa používajú od série NVIDIA GeForce RTX 2000 založenej na mikroarchitektúre Turing. Ovládač je napísaný v jazyku Rust. Okrem komponentu nova-core, ktorý bol pridaný v predchádzajúcom vydaní a implementuje základnú úroveň abstrakcií nad programovými rozhraniami firmvéru GSP, je vo verzii 6.16 zahrnutá počiatočná implementácia DRM ovládača nova-drm (Direct Rendering Manager) pre interakciu s GPU z užívateľského priestoru.
    • Začal sa proces integrácie do jadra DRM ovládača Asahi pre GPU Apple AGX, používané v čipoch Apple Silicon. Ovládač je napísaný v Rust. V tejto fáze sú do jadra zahrnuté len hlavičkové súbory s UAPI od ovládača Asahi, potrebné pre Mesa, a hlavný kód ovládača Asahi bude integrovaný neskôr.
    • Do ovládača Nouveau bola pridaná podpora GPU NVIDIA rodiny Hopper a Blackwell.
    • Pokračovala práca na drm-ovládači (Direct Rendering Manager) Xe pre GPU založené na architektúre Intel Xe, ktorá sa používa vo grafických kartách Intel rodiny Arc a integrovaných grafických zariadeniach od procesorov Tiger Lake. Bola pridaná možnosť využívania rôznych súborov firmvéru pre rôzne rodiny GPU Intel.
    • V ovládači AMDGPU bola implementovaná podpora mechanizmu „usermode queue“, ktorý umožňuje vytvárať vlastné fronty úloh v užívateľskom priestore a posielať ich priamo do GPU bez oslovenia plánovača v jadre. Podpora „usermode queue“ je zahrnutá pre GPU Navi 4X a GFX 12.
    • Bola pridaná podpora zvukových systémov Intel WCL (Whiskey Lake), AMD ACP 7.x (Audio Co-Processor), Cirrus Logic CS35L63 a CS48L32, Everest Semiconductor ES8375 a ES8389, Pioneer DJM-V10, Longsoon-1 AC’97, NVIDIA Tegra264, Richtek ALC203, RT9123 a Rockchip SAI, ako aj nových platforiem Intel AVS.
    • Bola pridaná podpora ARM platforiem, SoC a zariadení: Samsung Exynos7870, Qualcomm Snapdragon X1P42100, Qualcomm MSM8926, RK3562, NXP i.MX94, Renesas RZ/V2N, Amlogic S6/S7/S7D, WonderMedia wm8950, Amlogic s805y, Allwinner A523, Toradex Verdin AM62P, ROCK 5B+, Nitrogen8M Plus, Retronix R-Car V4H Sparrow Hawk, MT8186 Ponyta Chromebook, VIA APC Rock/Paper, Renesas rz/t2h, ASUS Transformer Pad LTE TF300TL, LG Nexus 4, Google Pixel 4a, Raspberry Pi 2.
    • Bol odstránený ovládač pre karty na zachytávanie videa na čipoch STA2X11.

Latinskoamerický Fond voľného softvéru zároveň vytvoril plne voľnú verziu jadra 6.16 — Linux-libre 6.16-gnu, zbavenú komponentov firmvéru a ovládačov, ktoré obsahovali voľné komponenty alebo úseky kódu, ktorých použitie je obmedzené výrobcom. V vydaní 6.16 bola neutralizovaná načítanie blobov v nových ovládačoch Intel qat 6xxx crypto, ST vd55g1 sensor, ath12k AHB wifi, Aeonsemi AS21xxx a MediaTek 25Gb Ethernet. Prebehla úprava názvov blobov v dts súboroch (devicetree) pre ARM čipy Qualcomm a MediaTek. Obnovil sa kód na čistenie blobov v ovládačoch Nova Core, Nouveau, Realtek r8169 Ethernet, Qualcomm Iris, Venus, Mediatek mt7996 wifi, Qualcomm ath11k a ath12k wifi, Texas Instruments tas2781 a Renesas R-Car gen4 PCIe.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster