Nakon dva mjeseca razvoja, Linus Torvalds predstavio je izdanje Linux kernela 5.12. Među najznačajnijim promjenama su: podrška za zonirane blokove u Btrfs, mogućnost mapiranja identifikatora korisnika za datotečne sustave, uklanjanje zastarjelih ARM arhitektura, način "nestrpljivo" pisanje u NFS, mehanizam LOOKUP_CACHED za određivanje putanja datoteka iz predmemorije, podrška za atomske instrukcije u BPF, sustav za debagiranje KFENCE za otkrivanje grešaka pri radu s memorijom, radni način NAPI pollinga u mrežnom stogu u zasebnom jezgru, hiper-vizor ACRN, mogućnost promjene preempt modela u scheduler-u zadataka, i podrška za LTO optimizacije prilikom kompilacije s Clangom.
U novu verziju uključeno je 14170 (u prethodnoj verziji 15480) ispravki od 1946 (1991) programera, veličina zakrpe iznosi 38 MB (promjene su obuhvatile 12102 (12090) datoteka, dodano je 538599 (868025) redaka koda, uklonjeno 333377 (261456) redaka). Otprilike 43% svih promjena u 5.12 odnosi se na upravljačke programe uređaja, približno 17% promjena odnosi se na ažuriranje koda specifičnog za hardverske arhitekture, 12% je vezano uz mrežni stog, 5% uz datotečne sustave i 4% na unutarnje podsustave kernela.
Glavne novine:
- Sistem diska, ulaz/izlaz i datotečni sustavi
- Implementirana je mogućnost mapiranja identifikatora korisnika za montirane datotečne sustave (mogu se mapirati datoteke jednog korisnika na montiranom nečijem disku s drugim korisnikom u trenutnom sustavu). Mapiranje se podržava za FAT, ext4 i XFS datotečne sustave. Predložena funkcionalnost omogućava olakšano dijeljenje datoteka od strane različitih korisnika i na različitim računalima, uključujući primjenu mapiranja u mehanizmu prenosivih kućnih direktorija systemd-homed, omogućavajući korisnicima premještanje svojih kućnih direktorija na vanjske medije i njihovo korištenje na različitim računalima, čija mapa identifikatora korisnika nije podudarna. Druga korisna primjena je organizacija zajedničkog pristupa datotekama s vanjskog hosta, bez stvarne promjene podataka o vlasnicima datoteka u datotečnom sustavu.
- U jezgru su prihvaćene zakrpe LOOKUP_CACHED, koje omogućuju izvršavanje operacija određivanja putanje datoteka iz korisničkog prostora bez blokiranja, isključivo na temelju podataka koji su dostupni u predmemoriji. Način LOOKUP_CACHED aktivira se pozivom openat2() putem prosljeđivanja zastavice RESOLVE_CACHED, pri čemu se podaci daju isključivo iz predmemorije, a ako određivanje putanje zahtijeva pristup pohrani, vraća se greška EAGAIN.
- U datotečnom sustavu Btrfs dodana je osnovna podrška za zonirane blokovne uređaje (uređaje na tvrdim diskovima ili NVMe SSD-ima, gdje je prostor za pohranu razdijeljen na zone koje čine grupe blokova ili sektora, u koje je dopušteno samo sekvencijalno dodavanje podataka uz potpuno ažuriranje cijele grupe blokova). U načinu samo za čitanje implementirana je podrška za blokove s metapodacima i podacima manjim od stranice (subpage).
- U datotečnom sustavu F2FS dodana je mogućnost odabira algoritma i razine kompresije. Dodana je podrška za visoku razinu kompresije za algoritam LZ4. Implementirana je opcija montiranja checkpoint_merge.
- Implementirana je nova ioctl naredba FS_IOC_READ_VERITY_METADATA za čitanje metapodataka iz datoteka zaštićenih pomoću fs-verity.
- U NFS klijentu implementiran je način "nestrpljivog" pisanja (writes=eager), pri čemu se operacije pisanja u datoteku odmah šalju na poslužitelj, zaobilazeći predmemoriju stranica. Ovaj način smanjuje potrošnju memorije, omogućuje trenutno dobivanje informacija o završenom slobodnom mjestu u FS-u i u nekim situacijama može povećati performanse.
- U CIFS (SMB) dodane su nove opcije montiranja: acregmax za upravljanje predmemorijom datoteka i acdirmax za upravljanje predmemorijom metapodataka direktorija.
- U XFS je uključen način višestruke provjere kvota, ubrzano je izvršavanje fsync-a, a kod growfs-a je pripremljen za implementaciju funkcije smanjenja veličine FS-a.
- Memorija i sistemske usluge
- Dodana je podtema DTMP (Dynamic Thermal Power Management), koja omogućuje dinamičko reguliranje potrošnje energije različitih uređaja na temelju postavljenih zajedničkih ograničenja temperature.
- Implementirana je mogućnost sastavljanja jezgre pomoću Clang kompajlera uz uključivanje optimizacija tokom faze povezivanja (LTO, optimizacija tokom povezivanja). LTO optimizacije se razlikuju po tome što uzimaju u obzir stanje svih datoteka uključenih u proces sastavljanja, dok tradicionalnom metodama optimizacije optimiziraju svaku datoteku posebno i ne uzimaju u obzir uvjete poziva funkcija definiranih u drugim datotekama. Na primjer, pri LTO može doći do inliniranje funkcija iz drugih datoteka, ne koristi se neiskorišteni kod, provjerava se tip i vrši se opća optimizacija na nivou projekta. Podrška za LTO je trenutno ograničena na arhitekture x86 i ARM64.
- Omogućeno je biranje načina premošćivanja (PREEMPT) u planeru zadataka tokom podizanja sustava (preempt=none/voluntary/full) ili tokom rada putem debugfs (/debug/sched_debug), ukoliko je prilikom sastavljanja jezgre postavljena opcija PREEMPT_DYNAMIC. Ranije, način premošćivanja se mogao postaviti samo na nivou opcija sastavljanja. Ova promjena omogućava distribucijama da isporučuju jezgre sa uključenim načinom PREEMPT, koji osigurava minimalne odgode za radne površine uz malo smanjenje propusnosti, i omogućava povratak na načine PREEMPT_VOLUNTARY (prelazni način za radne površine) ili PREEMPT_NONE (osigurava maksimalnu propusnost). poslužitelja).
- Sustavu BPF dodana je podrška za atomske operacije BPF_ADD, BPF_AND, BPF_OR, BPF_XOR, BPF_XCHG i BPF_CMPXCHG.
- BPF programima omogućen je pristup podacima na steku putem pokazivača sa promjenjivim pomakom. Na primjer, ranije se za pristup nizu na steku mogla koristiti samo konstantna indeksna vrijednost, dok je sada moguće koristiti promjenjivu. Kontrola pristupa unutar postojećih ograničenja vrši se pomoću BPF verifikatora. Ova mogućnost je dostupna samo privilegiranih programima zbog zabrinutosti oko iskorištavanja ranjivosti povezanih sa spekulativnim izvođenjem koda.
- Dodana je mogućnost pridruživanja BPF programa 'golem' tačkama praćenja (bare tracepoints), koje nisu povezane s vidljivim događajima praćenja u korisničkom prostoru (za takve tačke praćenja ne garantuje se očuvanje ABI).
- Implementirana je podrška za CXL 2.0 (Compute Express Link), koja se koristi za organizaciju visok brzi interakcije CPU-a s uređajima za pohranu (omogućuje korištenje vanjskih uređaja za pohranu kao dijela RAM-a ili trajne pohrane, kao da je ta pohrana spojena putem standardnog kontroller za pohranu na CPU-u).
- Dodani su nvmem drajveri za dohvat podataka iz rezerviranih područja memorije, koja su direktno nedostupna Linuxu (na primjer, EEPROM memorija, fizički dostupna samo firmveru, ili podaci dostupni samo u ranoj fazi pokretanja).
- Uklonjena je podrška za sustav profiliranja „oprofile”, koji nije stekao široku popularnost i zamijenjen je modernijim mehanizmom perf.
- U sučelju asinkronog ulaza/izlaza io_uring osigurana je integracija s cgroup koji kontroliraju korištenje memorije.
- Za RISC-V arhitekturu implementirana je podrška za NUMA sustave, kao i mehanizme kprobes i uprobes.
- Dodana je mogućnost korištenja sistemskog poziva kcmp() neovisno od funkcionalnosti snimanja stanja procesa (checkpoint/restore).
- Uklonjeni su makroi EXPORT_UNUSED_SYMBOL() i EXPORT_SYMBOL_GPL_FUTURE(), koji se već dugi niz godina ne koriste u praksi.
- Virtualizacija i sigurnost
- Dodan je KFence mehanizam zaštite (Kernel Electric Fence), koji hvata greške prilikom rada s memorijom, kao što su prekoračenje baferi i pristup nakon oslobađanja memorije. Za razliku od debuggerskog mehanizma KASAN, KFence podsistem se odlikuje visokom brzinom rada i niskim troškovima, što omogućuje hvatanje grešaka u radu s memorijom koje se javljaju samo na radnim sustavima ili prilikom dugotrajnog rada.
- Dodana je podrška za hipervizor ACRN, napisan s fokusom na spremnost za izvršavanje zadataka u stvarnom vremenu i prikladnost za korištenje u kritičnim sustavima. ACRN osigurava minimalne troškove, jamči niske kašnjenja (low latency) i adekvatnu reakciju prilikom interakcije s hardverom. Podržava virtualizaciju resursa CPU, ulaza/izlaza, mrežnih sustava, operacija s grafikom i zvukom. ACRN se može koristiti za pokretanje nekoliko izoliranih. virtualnih mašina u elektroničkim kontrolnim jedinicama, instrument pločama, informacijskim sustavima za vozila, potrošačkim IoT uređajima i drugim ugrađenim sustavima. ACRN podržava dva tipa gostujućih sustava — privilegirane Service VM, koje se koriste za upravljanje resursima sustava (CPU, memorija, ulaz/izlaz itd.), i korisničke User VM, na kojima se mogu pokretati Linux distribucije, Android i Windows.
- U IMA podsustavu (Integrity Measurement Architecture), koja osigurava održavanje baze hash za provjeru integriteta datoteka i povezanih metapodataka, dodana je mogućnost provjere integriteta podataka samog jezgra, na primjer, za praćenje promjena u pravilima SELinux.
- U hipervizoru KVM dodana je mogućnost presretanja hiperviza poziva Xen i njihovog proslijeđivanja emulatoru koji radi u korisničkom prostoru.
- Dodana je mogućnost korištenja Linux-a kao korijenskog okruženja za hipervizor Hyper-V. Korijensko okruženje ima izravan pristup hardveru i koristi se za pokretanje gostujućih sustava (analogno Dom0 u Xen). Do sada je Hyper-V (Microsoft Hypervisor) podržavao Linux samo u gostujućim okruženjima, dok je sam hipervizor bio upravljan iz okruženja temeljenog na Windows-u.
- Dodana je podrška za inline šifriranje za eMMC kartice, što omogućava korištenje mehanizama šifriranja ugrađenih u kontroler pohrane, koji provode transparentno šifriranje i dešifriranje ulaza/izlaza.
- Iz kripto podsustava uklonjena je podrška za neiskorištene hash-eve RIPE-MD 128/256/320 i Tiger 128/160/192, kao i za stream cipher Salsa20, a uvođenjem je algoritam ChaCha20. Algoritam blake2 ažuriran je na implementaciju blake2s.
- Mrežni subsistem
- Dodana je mogućnost premještanja NAPI upravljačkog poling-a mrežnih uređaja u zaseban procesorski thread, što omogućava povećanje performansi za određene tipove opterećenja. Prije toga, poling se izvodio u kontekstu softirq i nije bio pokriven raspoređivačem zadataka, što je otežavalo fino podešavanje za postizanje maksimalnih performansi. Izvođenje u zasebnom threadu omogućava praćenje poling upravljača iz korisničkog prostora, vezivanje na pojedine CPU jezgre i uzimanje u obzir prilikom raspoređivanja prebacivanja zadataka. Kako bi se omogućio novi način, u sysfs je predložen parametar /sys/class/net//threaded.
- Nastavljena je integracija u MPTCP (MultiPath TCP), proširenje TCP protokola za organizaciju TCP veze s isporukom paketa istovremeno preko više ruta kroz različite mrežne sučelje vezane uz različite IP adrese. U novom izdanju dodana je mogućnost dodavanja prioriteta određenim tokovima, što omogućava, na primjer, organiziranje rada rezervnih tokova koji se aktiviraju samo u slučaju problema s primarnim tokom.
- U IGMPv3 dodana je podrška za mehanizam EHT (Explicit Host Tracking).
- U mehanizmu filtriranja paketa netfilter implementirana je mogućnost vlasništva nad određenim tablicama radi dobivanja ekskluzivne kontrole (na primjer, pozadinski proces vatrozida može pridržavati određene tablice, zabranjujući nekome drugome da se u njih miješa).
- Oprema
- Provedeno je čišćenje zastarjelih i napuštenih ARM platformi. Izbrisan je kod platformi efm32, picoxcell, prima2, tango, u300, zx i c6x, kao i povezani drajveri.
- U drajveru amdgpu omogućeno je overclocking (OverDrive) kartica temeljenih na GPU Sienna Cichlid (Navi 22, Radeon RX 6xxx). Dodana je podrška za format piksela FP16 za DCE (display controller engine) od 8. do 11. generacije. Za GPU Navy Flounder (Navi 21) i APU Van Gogh omogućeno je resetiranje GPU-a.
- U drajveru i915 za grafičke kartice Intel implementirana je funkcija i915.mitigations za isključivanje mehanizama izolacije i zaštite u korist poboljšanja performansi. Za čipove od Tiger Lake uvedena je podrška za mehanizam VRR (Variable Rate Refresh) koji omogućava adaptivnu promjenu brzine osvježavanja monitora radi osiguravanja glatkoće i izbjegavanja trzanja tijekom igranja. Uvedena je podrška za tehnologiju Intel Clear Color za povećanje točnosti prikaza boja. Dodana je podrška za DP-HDMI 2.1. Implementirana je mogućnost upravljanja pozadinskim osvjetljenjem panela eDP. Za GPU Gen9 s podrškom za LSPCON (Level Shifter and Protocol Converter) omogućena je podrška za HDR.
- U drajveru nouveau dodana je osnovna podrška za GPU NVIDIA temeljen na arhitekturi GA100 (Ampere).
- U drajveru msm dodana je podrška za GPU Adreno 508, 509 i 512, koji se koriste u čipovima SDM (Snapdragon) 630, 636 i 660.
- Dodana je podrška za zvučne kartice Sound BlasterX AE-5 Plus, Lexicon I-ONIX FW810s i Pioneer DJM-750. Dodana je podrška za zvučnu podskupinu Intel Alder Lake PCH-P. Implementirana je podrška za softversku simulaciju priključivanja i isključivanja audio priključka za debagiranje rukovatelja u korisničkom prostoru.
- Dodana je podrška za igraće konzole Nintendo 64, koje su se proizvodile od 1996. do 2003. godine (prethodni pokušaji portiranja Linuxa za Nintendo 64 nisu završeni i imali su status Vaporware). Motiv za stvaranje novog porta za zastarjelu platformu koja se ne proizvodi već gotovo dvadeset godina je želja za poticanjem razvoja emulatora i olakšavanjem prijenosa igara.
- Dodan je drajver za igraći kontroler Sony PlayStation 5 DualSense.
- Dodana je podrška za ARM platforme, uređaje i platforme: PineTab, Snapdragon 888 / SM8350, Snapdragon MTP, Two Beacon EmbeddedWorks, Intel eASIC N5X, Netgear R8000P, Plymovent M2M, Beacon i.MX8M Nano, NanoPi M4B.
- Dodana je podrška za pametne telefone Purism Librem5 Evergreen, Xperia Z3+/Z4/Z5, ASUS Zenfone 2 Laser, BQ Aquaris X5, OnePlus6, OnePlus6T, Samsung GT-I9070.
- Dodana je bcm-vk podrška za Broadcom VK dodatne kartice (na primjer, PCIe kartice Valkyrie i Viper), koje se mogu koristiti za vanjske uređaje za obradu zvuka, videa i slika, kao i aktivnosti vezane uz šifriranje.
- Dodana je podrška za platformu Lenovo IdeaPad s mogućnošću upravljanja stalnim punjenjem i pozadinskim osvjetljenjem tipkovnice. Također je osigurana podrška za ACPI profil platforme ThinkPad s mogućnošću upravljanja načinima potrošnje energije. Dodan je drajver za HID pod-sustav Lenovo ThinkPad X1 Tablet Gen 2.
- Dodan je drajver ov5647 s podrškom za modul s kamerom za Raspberry Pi.
- Dodana je podrška za RISC-V SoC FU740 i HiFive Unleashed ploče. Također je dodat novi drajver za čip Kendryte K210.
Izvor: opennet.ru
