Po dvou měsících vývoje Linus Torvalds představen vydání jádra Linux 6.19Mezi nejvýznamnější změny patří: subsystém Live Update Orchestrator, podpora šifrování PCIe Link, systémové volání listns, režim Zero-Copy Receive v io_uring, podpora rozšíření ARM MPAM, klp-build pro generování živých záplat, podpora architektury LoongArch32, QoS pro s2idle, optimalizace subsystému auditu, Intel LASS pro ochranu Spectre, podpora hashů SHA-3 a BLAKE2b, mechanismus Confidential VMBus, optimalizace TX v síťovém subsystému, protokol CAN XL, API pro hardwarovou akceleraci HDR výstupu.
V oznámení nové verze Linus oznámil, že další vydání jádra bude označeno 7.0, protože větev 6.x nashromáždila dostatek vydání, aby bylo nutné změnit první číslici čísla verze (verze 6.0 následovala po verzi 5.19). Změna číslování je provedena z estetických důvodů a je formálním krokem ke zmírnění nepohodlí způsobeného nahromaděním velkého počtu vydání v sérii. Linus žertoval, že ho mate velká čísla, která vyžadují prsty na rukou a nohou. Formálně však existuje důvod pro významnou změnu čísla verze, protože počínaje další podpora vydání pro Rust rozhodl přesunout se od experimentálních k základním funkcím jádra.
Nová verze obsahuje 15 657 oprav od 2 237 vývojářů s velikostí opravy 52 MB (změny ovlivnily 13 682 souborů, přidaly 794 649 řádků kódu a odstranily 335 498 řádků). Předchozí verze obsahovala 15 035 oprav od 2 217 vývojářů s velikostí opravy 45 MB. Asi 40 % všech změn ve verzi 6.19 se týká ovladačů zařízení, přibližně 13 % aktualizací kódu specifického pro hardwarové architektury, 12 % síťového zásobníku, 5 % souborových systémů a 3 % interních subsystémů jádra.
Klíčové nové funkce v jádře 6.19 (1, 2, 3):
- Diskový subsystém, I/O a souborové systémy
- В Btrfs Procesy kontroly FS (scrub) a výměny zařízení – více neblokují Systém přejde do režimu spánku (stav kontroly čištění se uloží před usínáním; po probuzení z režimu spánku kontrola pokračuje a operace výměny zařízení se restartuje). Implementace RAID56 byla aktualizována, aby podporovala bloky větší než velikost paměťové stránky. Pro tuto podporu byly provedeny přípravy. fscryptVylepšený výkon při manipulaci se zámky při provádění operací souvisejících s rezervací prostoru. Přidal podpora operace shutdown ioctl, která umožňuje uvedení souborového systému do stavu, kdy se sice provádí pokus o dokončení již spuštěných operací, ale všechny nové operace jsou blokovány.
- V souborovém systému Ext4 zahrnuta podpora bloků větších než velikost stránky paměti (>4KB na systémech x86). Použití velkých bloků umožňuje zlepšuje výkon operací zápisu s bufferem v průměru o 50 %, ale snižuje výkon přímého I/O kvůli prodloužené době výpočtu kontrolního součtu. Nová verze také přidal optimalizace, které zvýšily propustnost při provádění online defragmentace.
- V subsystému FUSE Vylepšená podpora pro čtení z bufferu při použití velkých svazky stránek paměti (velká folia). iomap se nyní používá ke sledování částečně aktuálních folií a stahuje se pouze data, která nejsou ve vyrovnávací paměti.
- В VFS Přidána podpora pro odvolatelné delegace adresářů, která umožňuje implementovat NFS Přenos řízení adresáře ze serveru na klienta, což umožňuje klientovi NFS nezávisle monitorovat stav adresáře pomocí jeho lokální mezipaměti bez kontaktování serveru NFS. Pokud jiný klient NFS provede v tomto adresáři změny, delegování řízení bude prvnímu klientovi odvoláno.
- Pro NFS přidal podpora čtení v režimu přímého I/O. Realizováno Nastavení /sys/kernel/debug/nfsd/io_cache_read a /sys/kernel/debug/nfsd/io_cache_write pro řízení zahrnutí ukládání do mezipaměti a přímých I/O operací; manipulace s těmito nastaveními může snížit režijní zátěž na straně klienta NFS při provádění rozsáhlých I/O operací.
- В NTFS Byla implementována podpora pro operaci vypnutí ioctl. zahrnuta Výchozí možnosti připojení acl a prealloc, přidána podpora pro časová razítka před 1. lednem 1970.
- pro bloková zařízení a FS zahrnuty ve výchozím nastavení oddělené ukládání objektů do mezipaměti pro každý procesorbio» (Blok I/O), definující aktivní vstupně/výstupní operace.
- Paměťové a systémové služby
-
Do jádra zahrnuta subsystém Orchestrator živých aktualizací (LUO), který umožňuje úplný restart a aktualizaci jádra bez přerušení provozu nebo ztráty stavu systému, zařízení a procesů. Subsystém LUO je založen na mechanismu, který byl do jádra dříve přidaný. KHO (Kexec HandOver) kromě umožnění spuštění nového jádra ze starého bez ztráty stavu systému řeší také problémy, jako je zachování stavu zařízení a RAM a zajištění kontinuity operací souvisejících s DMA a zpracováním přerušení. Stav je zachován před přepnutím na nové jádro a je obnoven po aktivaci nového jádra, aniž by došlo k narušení nepřetržitých operací zařízení prováděných systémem a uživatelskými aplikacemi.
-
Přidat Systémové volání listns() se používá k výpisu existujících jmenných prostorů v systému bez nutnosti iterovat přes /proc/. /ns/ pro všechny procesy.
Asynchronní I/O systém io_uring nyní podporuje umisťování prvků různých velikostí do položky fronty odesílání (SQE), podobně jako předchozí verze umožňovala míchání velikostí obsahu fronty výsledků (CQE). Dříve musely mít všechny prvky ve frontě stejnou velikost, což vedlo k nadměrné spotřebě paměti kvůli nutnosti použít maximální velikost pro všechny prvky ve frontě.
io_uring také přidává podporu pro mechanismus zcrx (Zero-Copy Receive) pro příjem dat bez jejich kopírování mezi jádrem a uživatelským prostorem. Byla přidána podpora pro dotazy na rozložení paměti pro fronty SQ (Submission Queue) a CQ (Completion Queue), což umožňuje získat informace o velikosti kruhové vyrovnávací paměti potřebné pro uživatelem definovanou alokaci paměti pomocí příznaků IORING_SETUP_NO_MMAP a IORING_MEM_REGION_TYPE_USER.
Pro umožnění rychlého trasování zásobníku pomocí nástrojů, jako je perf, byla přidána podpora pro formát SFrame s informacemi o odpojení zásobníku volání. SFrame je již podporován GCC a binutils, neovlivňuje výkon a na rozdíl od formátu DWARF obsahuje pouze minimální sadu informací nezbytných pro trasování zásobníku.
-
V utilitě perf přidal Podpora jednotných popisů metrik a událostí ve formátu JSON a také odloženého ukončení zásobníku volání v uživatelském prostoru.
pro Procesory AMD Byl implementován mechanismus substituce dat, který umožňuje vstupně/výstupním zařízením přímo nahrazovat data do mezipaměti L3 procesoru, aniž by je bylo nutné nejprve umístit do RAM.
Přidána podpora MPAM (Rozdělení a monitorování systémových paměťových prostředků), rozšíření architektury instrukční sady ARMv8-A pro označení každého přístupu k paměti pomocí ID oddílu (PARTID) a ID monitorovací skupiny (PMG). Pomocí PARTID lze omezit spotřebu zdrojů, jako je šířka pásma paměti nebo velikost mezipaměti, aby se zabránilo tomu, aby jedna skupina úloh spotřebovala všechny zdroje. V kontextu monitorování lze kombinaci PMG a PARTID použít ke sledování spotřeby paměťových zdrojů při specifických úlohách.
Pokud proces po přijetí signálu abnormálně ukončí svou činnost, jiný proces, který má pidfd ukončeného procesu, nyní může určit číslo signálu, které způsobilo ukončení procesu.
Přepracovaná implementace restartovatelných sekvencí (restartovatelné sekvence), umožňuje aplikacím organizovat pseudoatomické, nepřerušitelné provádění skupiny instrukcí (pokud je přerušeno jiným vláknem, sekvence se znovu pokusí o provedení). Nová implementace se vyznačuje vylepšeným výkonem.
-
pro Programy BPF implementováno Instrukce BPF_JMP, BPF_X a BPF_JA pro provádění nepřímých skoků na specifickou pozici z tabulky skoků. Byl přidán koncept dynamických ukazatelů (dynptr), což vám umožňuje číst data ze strukturovaných souborů. Přidal možnost připojit k síťovým paketům více bajtů metadat.
Moduly Pythonu, používané pro zpracování dokumentace jádra, byly přesunuty do samostatného adresáře tools/lib/python.
-
Funkce přidána mempool_alloc_bulk() bezpečně alokovat prvky z paměťového fondu pro několik objektů najednou.
-
Pokračování přesunutí změn z větve Rez-pro-Linux, související s použitím Rez jazyk jako druhý jazyk pro vývoj ovladačů a modulů jádra (podpora Rustu není ve výchozím nastavení aktivní a nevede k tomu, že by Rust byl zahrnut do seznamu povinných závislostí pro sestavení jádra). V nové verzi je jádro zahrnuto v vestavěný knihovna"Syn„s analyzátorem kódu Rust, což zjednodušuje psaní složitých maker. Možnosti knihoven kernel, pin-init a rbtree byly rozšířeny. Byla přidána knihovna num s vlastností Integer pro manipulaci s celými čísly. Do makra module! byla přidána podpora pro celočíselné parametry. Byla implementována možnost zadávat parametry při načítání modulů jádra napsaných v Rustu. Byly implementovány abstrakce pro subsystémy.“ I2C и PWM (Modulace šířky impulsů).
-
Přidat Makro at_least (například param[at_least 7]) informuje o minimální povolené velikosti pole předaného funkci. Pokud je funkci předáno pole s menším počtem prvků, kompilátor vydá varování.
-
Struktura v ceně Skript klp-build pro generování modulů jádra, které upravují běžící jádro (livepatch) na základě souboru s opravou. Nástroj objtool byl aktualizován, aby podporoval generování živých oprav.
-
В User-mode Linux (spouštění jádra jako uživatelského procesu) přidalo omezenou podporu pro multiprocessing, ale vlákna v rámci stejného procesu zatím nemohou běžet souběžně. Začal портирование User-mode Linux на библиотеку nolibc.
-
Přidal podpora architektury LoongArch32 (LA32R, LA32S) kromě LoongArch64.
-
Přidal možnost nastavit limity QoS pro rychlost probuzení procesoru v úsporném režimu s2idle (Suspend-To-Idle), které zmrazí provádění procesů v uživatelském prostoru, ale ponechá některé obslužné rutiny v jádře aktivní.
-
Přidal podpora správy tabulky stránek paměti pro řadiče IOMMU (Jednotka správy vstupně-výstupní paměti), které převádějí virtuální adresy viděné hardwarovým zařízením na fyzické adresy s možností filtrovat operace DMA podle virtuálních adres a omezovat a izolovat I/O operace.
Události trasování systémových volání nyní podporují čtení vyrovnávacích pamětí z uživatelského prostoru a zahrnutí jejich obsahu (např. názvů souborů) do výstupu trasování.
-
**Stránky paměti watchdog(( (stránka strážce), přístup k nimž způsobí výjimku a abnormální ukončení procesu (SIGSEGV), jsou nyní jsou označeny speciální značka v souboru /proc/PID/smaps.
-
Přidal ovladatelnost velké stránky paměti (průhledná obrovská stránka) v soukromé paměti zónovaných zařízení.
-
V zařízení zram, používaný pro komprimované ukládání odkládacího oddílu v paměti, implementováno podpora pro dávkové vyprázdnění více „bio“ struktur (blokový I/O) (dávkový zápis).
Písmo je součástí. Terminál 10×18, což zlepšuje čitelnost informací z konzole na obrazovkách notebooků se středním rozlišením (1440×900).
-
Hodně optimalizovaný práce auditní subsystémy — je zaznamenáno dvojnásobné snížení režijních nákladů.
-
- Virtualizace a bezpečnost
- Přidána podpora pro funkci poskytovanou procesory Intel pro divize Lineární oddělení adresního prostoru (LASS), které umožňuje hardwarové oddělení adresních rozsahů uživatelského prostoru a prostoru jádra pro zvýšení zabezpečení. Adresní prostor je rozdělen nejvyšším bitem adresy – polovina adresního prostoru s nastaveným nejvyšším bitem je používána jádrem, zatímco dolní polovina je používána uživatelským prostorem. Na začátku provádění instrukcí (před spekulativním prováděním) se provádí kontrola, která zajistí, že jsou povoleny přístupy z uživatelského prostoru k adresám s nastaveným nejvyšším bitem a naopak. Toto oddělení zabraňuje únikům paměti jádra do uživatelského prostoru postranním kanálem, a to i během spekulativního provádění, díky čemuž je LASS vhodný pro ochranu před útoky Meltdown a Spectre bez významných režijních nákladů.
- Přidána možnost povolit rozšíření Vylepšení zabezpečení sběrnice PCI Express – PCIe Link Encryption a PCIe Device Authentication – umožňují ověřování a šifrování komunikačního kanálu mezi zařízením PCIe a virtuálním počítačem chráněným technologiemi Intel TDX (Trusted Domain Extensions) a AMD SEV-SNP (Secure Nested Paging). Tyto technologie zabraňují zachycení, analýze a vkládání dat do provozu DMA při přístupu k hostitelskému systému nebo jiným zařízením.
- Ve vestavěné kryptografické knihovně přidal podpora pro algoritmy SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512) SHAKE128, SHAKE256 a BLAKE2b.
- Для LSM-модулей (Linux Security Modules) и, в частности для SELinux, implementováno schopnost sledovat vytváření deskriptorů memfd a aplikovat bezpečnostní zásady na objekty, které jsou s nimi spojeny.
- V modulu LSM IPE (Vymáhání zásad integrity), která definuje obecnou politiku integrity pro celý systém, byla přidána podpora pro příznak AT_EXECVE_CHECK ve funkci vykonat(), což zahrnuje kontrolu integrity skriptu před jeho spuštěním interpretem.
- Přidány primitiva scoped_user_read_access(), scoped_user_write_access a scoped_user_rw_access() pro omezený přístup k datům v uživatelském prostoru. ochrana spekulativní útoky.
- Přidal podpora mechanismu Důvěrný VMBus, používaný v hypervisoru HyperV pro komunikaci chráněnou před neoprávněnou manipulací mezi hostovaným systémem běžícím v důvěrném režimu (se šifrováním paměti a izolací registrů založenou na technologiích AMD SNP a Intel TDX) a paravizorem zodpovědným za přístup k zařízením zpracovávajícím důvěrná data.
- Přidal Možnost přenosu informací o havarovaném procesu (pro generování coredumpu) pomocí mechanismu pidfd. Identifikátor PIDFD je přiřazen ke konkrétnímu procesu a nemění se, zatímco PID lze přiřadit jinému procesu po ukončení aktuálního procesu přidruženého k tomuto PID. Použití pidfd umožňuje blokovat provádění útoky nahrazením havarovaného procesu SUID jiným procesem, čímž se dosáhne stavu závodu v okamžiku poté, co jádro začne zpracovávat havárii, ale předtím, než obslužná rutina v uživatelském prostoru zkontroluje parametry procesu.
- Síťový subsystém
- K síťovému subsystému vyrobeno Optimalizace pro zlepšení efektivity přenosu dat (TX). Odstranění spinlocku z funkce __dev_queue_xmit() a použití struktury llist bez zámků. povoleno Zvyšte výkon čtyřikrát při velkém zatížení a zdvojnásobte rychlost odesílání paketů a zároveň snižte zatížení CPU na polovinu.
- Pokud příležitost odpojení Pro jednotlivé síťové sockety budou limity systémové paměti zakázány (v tomto případě budou použity celkové limity paměti nastavené pro jednotlivé kontejnery). Chcete-li tyto limity zakázat, použijte sysctl net.core.bypass_prot_mem a příznak SK_BPF_BYPASS_PROT_MEM ve funkci bpf_setsockopt.
- Přidal podpora rozšíření RFC 5837, který přidává informace o příchozích síťových rozhraních do zpráv ICMP Time Exceeded vrácených po vypršení doby trvání paketu (TTL), aby se získaly podrobnější informace při trasování tras pomocí utility traceroute.
- Přidal Podpora pro nepřetržité dotazování v samostatném vlákně jádra pro extrakci deskriptorů z front RX/TX pro aplikace, které vyžadují minimální latenci.
- Přidána podpora protokolů PLECHOVKA XL (Controller Area Network eXtended Length), в котором размер поля с данными увеличен до 2048 байт для обеспечения интеграции с сетями TCP/IP, реализована возможность туннелирования Ethernet-кадров и добавлена поддержка pulzně šířková modulace, což umožňovalo přenos dat rychlostí 20 Mbps a vyšší.
- Přidal nosná konstrukce sockaddr_unsized, varianta struktury sockaddr, která používá pole s flexibilní prvky místo pole s pevnou velikostí (sa_data[] místo sa_data[14], které se v podstatě používalo k odkazování na jiné větší struktury).
- Přidána možnost používat funkce getsockname a getpeername prostřednictvím subsystému io_uring.
- Přidán sysctl net.ipv4.tcp_rcvbuf_low_rtt и net.ipv4.tcp_comp_sack_rtt_percent optimalizovat TCP.
- Přidal podpora spojení s propustností 1600 Gb/s (1.6T).
- Оборудование
- Do subsystému DRM (Direct Rendering Manager) bylo přidáno API pro využití hardwarových možností transformace barev, čímž se eliminuje potřeba shaderů nebo spouštění kódu na bázi CPU. U výstupu HDR obsahu může nyní řadič displeje provádět komplexní transformace barev před a po prolnutí, namísto softwarového skládání obsahu do finální vyrovnávací paměti displeje. Kromě snížení režijních nákladů a spotřeby energie při organizaci HDR výstupu lze tuto funkci využít k zajištění přesného vykreslení barev ve video nebo obrazových editorech.
- Přidat Ovladač ethosu pro nervově-proudé jednotky Arm Ethos U65 a U85, určený pro hardwarovou akceleraci modelů umělé inteligence.
- Ovladač i915 pro Lunar Lake a novější grafické karty přidává podporu pro hardwarově asistované ostření.
- Pokračování Práce na ovladači Xe DRM (Direct Rendering Manager) pro GPU založené na architektuře Intel Xe, která se používá v grafických kartách řady Intel Arc a integrovaných grafických kartách, počínaje procesory Tiger Lake. Byla přidána počáteční podpora pro architekturu Xe3P, používanou v GPU Crescent Island a v rodině procesorů Nova Lake s integrovanou grafikou.
- Ovladač AMDGPU nyní plně podporuje grafické karty řady AMD GCN 1.0 "Southern Island" a 1.1 "Sea Islands", které dříve využívaly ovladač Radeon. Ovladač AMDGPU byl srovnatelný s ovladačem Radeon a je pro tyto grafické karty ve výchozím nastavení povolen. Karty GCN 1.x byly vydávány v letech 2012 až 2019 a zahrnují modely jako Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790 / 8870 a další grafické karty řady Radeon Rx 200 / Rx 300. Kromě toho... zvýšit S průměrným zvýšením výkonu o 24 % umožnil přechod na AMDGPU podporu grafického API Vulkan 1.3 pro tyto GPU. AMDGPU také přidal podporu pro analogové konektory a Video Coding Engine 1.0 a ve výchozím nastavení povolil stack Display Core (DC) pro GPU založené na mikroarchitektuře Bonaire (Radeon HD 7790).
- V ovladači Nouveau implementováno podpora hardwarového akcelerátoru NVJPG přítomného v SoC Tegra210.
- V řidiči Panthoru přidal Podpora grafického procesoru Mali-G1 a počáteční podpora čipu MediaTek MT8196.
- Přidal Podpora zvukového subsystému čipů Intel Nova Lake S, notebooků HP s HDA CS35L41 a také zvukových rozhraní CIX IPBLOQ HD a Onkyo SE-300PCIE.
- Integrace komponent ovladače Nova pro grafické karty NVIDIA vybavené firmwarem GSP, používaným počínaje řadou NVIDIA GeForce RTX 2000 založenou na mikroarchitektuře Turing, pokračuje. Ovladač je napsán v Rustu. Práce na RPC a dokončeno implementace načítání koprocesoru GSP (GPU System Processor).
- Přidal Podpora desek ARM, SoC a zařízení: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 možností desek Enclustra Mercury.
- Přidána podpora pro chytré telefony a tablety založené na SoC Mediatek MT6582 (Alcatel YarisXL), Nvidia Tegra124 (Xiaomi Mi Pad) a Qualcomm MSM8939 (ASUS ZenFone 2). Přidána podpora pro notebooky založené na SoC Qualcomm SDM850, jako například Huawei MateBook E 2019.
- Přidána podpora pro SoC a desky založené na architektuře RISC-V: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.
Ve stejné době Latinská Amerika Free Software Foundation vytvořený вариант zcela bezplatné jádro 6.19 - Linux-libre 6.19-gnu, očištěn od prvků firmwaru a ovladačů obsahujících proprietární komponenty nebo sekce kódu s omezeným rozsahem výrobce. Ve verzi 6.19 byl ze zvukového subsystému SDCA odstraněn kód pro načítání binárního firmwaru. V ovladačích pro zvukové kodeky Intel XE, Nova-Core, Qualcomm Iris, Venus a Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 a TI tas2783 byl aktualizován kód pro čištění blobů. Byly vyčištěny názvy blobů v souborech dts (devicetree) pro čipy ARM. Čištění ovladače STM C8SECTPFE DVB, který byl z jádra odstraněn, bylo ukončeno.
Zdroj: linux.org.ru
