После двух месяцев разработки Линус Торвальдс релиз ядра . Med najbolj opaznimi spremembami so: omejitev uvoza simbolov iz lastniških modulov v GPL module, pospešitev operacij preklapljanja konteksta z uporabo procesorske instrukcije FSGSBASE, podpora za stiskanje jedrskih slik s pomočjo Zstd, prenova razporeditve prioritet za niti v jedru, podpora protokolu PRP (Parallel Redundancy Protocol), načrtovanje ob upoštevanju širine pasu v načrtovalniku deadline, proaktivno pakiranje pomnilniških strani, zastavica capability CAP_CHECKPOINT_RESTOR, sistemski klic close_range(), izboljšanje zmogljivosti dm-crypt, odstranitev kode za 32-bitne gostiteljske sisteme Xen PV, nov mehanizem upravljanja s pomnilnikom slab, možnost „rescue“ v Btrfs, podpora za inline šifriranje v ext4 in F2FS.
V novo različico je bilo sprejetih 16074 popravkov od 2011 razvijalcev,
velikost popravka je 62 MB (spremembe so se dotaknile 14548 datotek, dodanih je bilo 782155 vrstic kode, 314792 vrstic je bilo odstranjenih). Približno 45 % vseh sprememb v 5.9
je povezanih z gonilniki naprav, približno 15 % sprememb se nanaša
na posodabljanje kode, specifične za strojne arhitekture, 13 %
je povezanih z omrežnim stebrom, 3 % z datotečnimi sistemi in 3 % z notranjimi
podsystemi jedra.
:
- Pomnilnik in sistemske storitve
- zaščita pred uporabo GPL-ploskev za povezovanje lastniških gonilnikov s komponentami jedra, ki so na voljo le za module pod GPL licenco. Zastavica TAINT_PROPRIETARY_MODULE zdaj podeduje vse module, ki uvozijo simbole iz modulov s to zastavico. Če GPL modul poskusi uvoziti simbole iz ne-GPL modula, ta GPL modul podeduje oznako TAINT_PROPRIETARY_MODULE in ne more dostopati do komponent jedra, dostopnih samo za module pod GPL licenco, celo če je modul prej uvozil simbole iz kategorije „gplonly“. Nazaj blokiranje (izvoz samo EXPORT_SYMBOL_GPL v modulih, ki so uvozili EXPORT_SYMBOL_GPL), kar bi lahko motilo delovanje lastniških gonilnikov, ni realizirano (podeduje se samo zastavica lastniškega modula, vendar ne GPL-prikaz).
- podpora mehanizmu kcompactd za v ozadju, ki omogoča povečanje števila velikih strani pomnilnika, dostopnih jedru. Predvideva se, da ozadnje pakiranje s minimalnimi prevoznimi stroški zmanjša zakasnitve pri dodeljevanju velikih strani pomnilnika (huge-page) za 70–80-krat v primerjavi z prej uporabljenim mehanizmom pakiranja, ki se zažene po potrebi (on-demand). Za določitev meja zunanje fragmentacije, ki jo bo zagotavljal kcompactd, je bila dodana sysctl vm.compaction_proactiveness.
- podpora za stiskanje jedrskih slik z uporabo algoritma (zstd).
- Za sisteme x86 je bila uvedena podpora za procesorsko ukazno četico , ki omogoča branje in spreminjanje vsebine registrov FS/GS iz uporabniškega prostora. V jedru se FSGSBASE uporablja za pospeševanje operacij preklapljanja kontekstov s črpanjem odvečnih zapisov MSR za GSBASE, medtem ko v uporabniškem prostoru omogoča obvladovanje brez nepotrebnih sistemskih klicev za spremembo FS/GS.
- parameter »allow_writes«, ki preprečuje spremembe MSR-register z procesorja iz uporabniškega prostora in omejuje dostop do vsebine teh registrov z operacijami branja, saj lahko sprememba MSR povzroči težave. Privzeto zapis še ni prepovedan, spremembe MSR pa se beležijo v dnevniku, a v prihodnosti je načrtovano, da se privzeti dostop prevede v način samo za branje.
- V vmesnik asinhronega vnosa/izvoda je bila dodana popolna podpora za asinhrone operacije predpomnjenega branja, ki ne zahtevajo vključitve jeder. Podpora za zapis je predvidena v naslednji izdaji.
- V načrtovalniku vnosa/izvoda deadline načrtovanje ob upoštevanju propustnosti, sprejemati pravilne odločitve na asimetričnih sistemih, kot so ARM sistemi na osnovi arhitektur in big.LITTLE, ki kombinirajo močna in manj zmogljiva energetsko učinkovita CPU jedra v eni čipu. Še posebej, nov način omogoča izogibanje neskladjem pri načrtovanju, ko počasno jedro CPU nima dovolj virov za opravljanje naloge v določenem času.
- Model porabe energije v jedru (Okvir Energy Model) zdaj ne samo vedenje porabe energije CPU, temveč zajema tudi periferne naprave.
- Uveden je sistemski poziv close_range(), koji omogućava procesu da zatvori ceo opseg otvorenih deskriptora datoteka odjednom.
- Iz implementacije tekstualne konzole i drajvera fbcon , koji omogućava programsko pomeranje teksta unazad (CONFIG_VGACON_SOFT_SCROLLBACK) za više od veličine video memorije tekstualnog moda VGA.
- algoritam dodeljivanja prioriteta za niti unutar jezgra. Nova verzija pruža bolju konzistentnost u svim podsystemima jezgra prilikom dodeljivanja prioriteta zadacima u realnom vremenu.
- Dodana je sysctl za upravljanje parametrima forsiranja frekvencije CPU za zadatke u realnom vremenu (na primer, moguće je u hodu menjati ponašanje prilikom izvršavanja zadataka u realnom vremenu radi uštede energije nakon prelaska na napajanje iz baterije ili na mobilnim sistemima).
- Pripremljena je podrška za implementaciju tehnologije Transparent Huge Pages u stranici keša.
- U mehanizmu fanotify implementirane su nove zastavice FAN_REPORT_NAME i FAN_REPORT_DIR_FID za prenosenje informacija o roditeljskom imenu i jedinstvenom identifikatoru FID prilikom nastanka događaja kreiranja, brisanja ili premestanja elemenata direktorijuma, kao i objekata koji nisu povezani sa direktorijumima.
- Za cgroups novi kontroler raspodele memorije slab (slab memory controller), koji se ističe prebacivanjem računanja slab sa nivoa stranica memorije na nivo objekata jezgra, što omogućava zajedničko korišćenje slab-stranica u različitim cgroup, umesto dodeljivanja odvojenih kešova slab za svaku cgroup. Predloženi pristup omogućava povećanje efikasnosti korišćenja slab, smanjenje za 30-45% veličine korišćene memorije za slab, značajno smanjenje ukupne potrošnje memorije od strane jezgra i smanjenje fragmentacije memorije.
- U zvučnoj podsistemu in , u skladu sa preporukama za korišćenje inkluzivne terminologije u jezgru Linux, izvršena je pročišćenje nepoličkih termina. Kod je očišćen od upotrebe reči „slave“, „master“, „blacklist“ i „whitelist“.
- Virtualizacija in varnost
- Pri kompajliranju jezgra koristeći kompajler Clang omogućena je opcija (CONFIG_INIT_STACK_ALL_ZERO) automatske inicijalizacije svim varijablama koje se čuvaju na steku sa nulom (prilikom kompajliranja se navodi „-ftrivial-auto-var-init=zero“).
- U podsistem seccomp, pri korišćenju režima kontrole procesa u korisničkom prostoru, nadomestki v sledenem procesu datotečnih descriptorjev za popolno emulacijo sistemskih klicev, ki vodijo do ustvarjanja datotečnih descriptorjev. Funkcionalnost je iskana v izoliranih kontejnerskih sistemih in implementaciji peskovnika za Chrome.
- Za arhitekturi xtensa in csky je dodana podpora za omejevanje sistemskih klicev s pomočjo podsystema seccomp. Za xtensa je dodatno implementirana podpora za mehanizem audita.
- nov capability-flag CAP_CHECKPOINT_RESTORE, ki omogoča dostop do možnosti, povezanih z zamrznitvijo in obnovitvijo stanja procesov, brez prenosa dodatnih privilegijev.
- V GCC 11 so implementirane vse možnosti, potrebne za
oddebuggerskega orodja KCSAN (Kernel Concurrency Sanitizer), namenjenega dinamičnemu odkrivanju stanj dirke znotraj jedra. Tako se lahko KCSAN zdaj uporablja z jedri, sestavljenimi v GCC. - Za AMD Zen in novejše modele CPU podpora tehnologiji P2PDMA, ki omogoča uporabo DMA za neposredno prenos podatkov med pomnilnikom dveh naprav, povezanih z vodilom PCI.
- V dm-crypt je dodan način, ki omogoča zmanjšanje zakasnitev s pomočjo izvajanja kriptografskega obdelovanja podatkov brez uporabe delovnih vrst. Ta način je prav tako potreben za pravilno delovanje z bloki naprav (naprave z območji, ki jih je treba zapisovati zaporedno s posodobitvijo celotne skupine blokov). Opravljeno je bilo delo na povečevanju propustnosti in zmanjševanju zakasnitev v dm-crypt.
- Odstranjena je podpora za 32-bitne gostujoče sisteme, ki delujejo v načinu paravirtualizacije pod nadzorom hipervizorja Xen. Uporabnikom takih sistemov se priporoča prehod na uporabo 64-bitnih jeder v gostujočih okoljih ali uporaba popolne (HVM) ali kombinirane (PVH) virtualizacije namesto paravirtualizacije (PV).
- Дисковая подсистема, ввод/вывод и файловые системы
- V datotečnem sistemu Btrfs možnost montaže „rescue“, ki enotno omogoča dostop do vseh drugih možnosti za obnovitev. Odstranjena je podpora za možnosti „alloc_start“ in „subvolrootid“, zastarala je možnost „inode_cache“. Opravljena je bila optimizacija zmogljivosti, še posebej opazno je pospešeno izvajanje operacij fsync(). možnost uporabe alternativnih vrst kontrolnih sum, ki se razlikujejo od CRC32c.
- možnost uporabe inline-šifriranja (Inline Encryption) v datotečnih sistemih ext4 in F2FS, za kar je predvidena možnost montaže »inlinecrypt«. Način inline-šifriranja omogoča uporabo vgrajenih mehanizmov šifriranja v krmilniku pogona, ki opravljajo prozorno šifriranje in dešifriranje vhodno/izhodnih podatkov.
- V XFS izpust inode (flush) v popolnoma asinhronem načinu, ki ne blokira procesov med izvajanjem operacije čiščenja pomnilnika. Rešena je dolgoletna težava s kvotami, zaradi katere so bili opozorila o prekomernih mehkih omejitvah in omejitvah števila inode nepravilno spremljani. Poenotena je bila implementacija podpore DAX za ext4 in xfs.
- V Ext4 predhodno nalaganje bitnih kartic za razporeditev blokov. V kombinaciji z omejitvijo skeniranja neiniciranih skupin je optimizacija omogočila skrajšanje časa montaže zelo velikih particij.
- V F2FS ioctl F2FS_IOC_SEC_TRIM_FILE, ki omogoča uporabo ukazov TRIM/discard za fizično izničitev določenih podatkov v datoteki, na primer za odstranitev ključev dostopa brez ostanka podatkov na pomnilniku.
V F2FS prav tako nov način zbiranja odpadkov GC_URGENT_LOW, ki deluje agresivno z izklopom nekaterih preverjanj stanja neaktivnosti (idle) pred zagonjem zbiralnika odpadkov. - V bcache je bila velikost bucket_size za ekstenzije povečana s 16 na 32 bitov v okviru priprav na omogočitev uporabe za predpomnilnik območnih naprav.
- V podizdelku SCSI je bila dodana možnost uporabe inline-šifriranja na osnovi vgrajenih sredstev strojnega šifriranja, ki jih zagotavljajo UFS-krmilniki ().
- Dodana je nova parameter ukazne vrstice jedra »debugfs«, ki omogoča upravljanje z dostopnostjo istoimenskega pseudo-FS.
- V odjemalcu NFSv4.2 je omogočena podpora za razširjene datotečne atribute (xattr).
- V dm-dust vmesnik za izpis seznama vseh odkritih slabljenih blokov na disku (»dmsetup message dust1 0 listbadblocks«).
- Za md/raid5 je bil dodan parameter /sys/block/md1/md/stripe_size za nastavitev velikosti STRIPE-bloka.
- Za naprave za shranjevanje NVMe podpora ukazom za zoniranje pomnilnika (ZNS, NVM Express Zoned Namespace), ki omogoča razdelitev prostora za shranjevanje na cone, ki sestavljajo skupine blokov, za boljše upravljanje razporeditve podatkov na pomnilniku.
- Mrežna podsistem
- V Netfilter možnost zavrnitve paketov pred preverjanjem usmerjanja (izraza REJECT zdaj ne moremo uporabljati samo v verigah INPUT, FORWARD in OUTPUT, temveč tudi v fazi PREROUTING za icmp in tcp).
- V nftables možnost revizije dogodkov, povezanih s spremembo konfiguracije.
- V nftables v API netlink podpora anonimnim verigam, katerih ime dodeli dinamično jedro. Ko se odstrani pravilo, povezano z anonimno verigo, se samodejno odstrani tudi veriga.
- V BPF je bila dodana podpora za iteratorje za obhod, filtriranje in spreminjanje elementov asociativnih tabel (map) brez kopiranja podatkov v prostor uporabnika. Iteratorji se lahko uporabljajo za TCP in UDP sokete, kar omogoča BPF programom prečesavanje seznamov odprtih soketov in pridobivanje potrebnih informacij iz njih.
- Dodana je nova vrsta BPF programov BPF_PROG_TYPE_SK_LOOKUP, ki se izvajajo, ko jedro išče ustrezen poslušajoč soket za prihajajoče povezave. S takšno BPF programom je mogoče ustvariti handlerje, ki odločajo, kateremu soketu je treba dodeliti povezavo, brez omejitev sistemskega klica bind(). Na primer, možno je organizirati dodelitev enega soketa na območje naslovov ali portov. Poleg tega je v bpf_setsockopt() dodana podpora za zastavico SO_KEEPALIVE in omogočeno je nastavljanje handlerjev BPF_CGROUP_INET_SOCK_RELEASE, ki se kličejo ob sprostitvi soketa.
- Izvedena je bila podpora za protokol (Parallel Redundancy Protocol), ki omogoča, da se na osnovi Ethernet implementira preklapljanje na rezervni kanal, ki je prozorno za aplikacije v primeru okvare katerega koli omrežnega komponenta.
- V okviru mac80211 podpora štiristopenjskemu dogovoru o kanalu WPA/WPA2-PSK v načinu dostopne točke.
- Dodana je možnost preklopa na obvladovanje čakalnih vrst qdisc (queuing discipline) za privzeto uporabo algoritma za upravljanje omrežnih čakalnih vrst FQ-PIE (Flow Queue PIE), ki je usmerjen v zmanjšanje negativnega vpliva vmesnega buffanja paketov na meji omrežne opreme (bufferbloat) v omrežjih z kablovnimi modemi.
- Dodane so nove možnosti v MPTCP (MultiPath TCP), razširitvi protokola TCP za organizacijo delovanja TCP-povezave z dostavo paketov hkrati po več poteh preko različnih omrežnih vmesnikov, povezanih z različnimi IP-naslovi. Dodana je podpora za syn cookie, DATA_FIN, samodejno nastavitev pomnilnikov, diagnostiko socketov in uporabo zastavic REUSEADDR, REUSEPORT in V6ONLY v setsockopt.
- Za virtualne tabele usmerjanja VRF (Virtual Routing and Forwarding), ki omogočajo organizacijo delovanja več usmerjevalnih domen v enem sistemu, je bil implementiran način »strict«. V tem načinu je virtualna tabela lahko povezana samo z usmerjevalno tabelo, ki se ne uporablja v drugih virtualnih tabelah.
- V brezžičnem gonilniku ath11k podpora za frekvenco 6GHz in .
- Oprema
- Odstranjen je bil koda za podporo arhitekturi UniCore, ki jo je razvilo mikroprocesorsko središče Pekingške univerze in je bila vključena v jedro Linuxa leta 2011. Ta arhitektura od leta 2014 nima podpore in ni več podprta v GCC.
- Za arhitekturo RISC-V je bila implementirana podpora (debugfs vmesnik za analizo pokritosti jedrskega kode), kmemleak (sistem za odkrivanje pomnilniških izgub), zaščita sklada, oznake prehoda in tickless operacije (neodvisna od signalov časovnika razporeditev).
- Za arhitekturo PowerPC je bila implementirana podpora za čakajoče vrste pri spinlock, kar je znatno povečalo učinkovitost v situacijah konflikta zaklepov.
- Za arhitekture ARM in ARM64 je bil privzeto uporabljen mehanizem regulacije frekvence procesorja (cpufreq governor), ki za odločitev o spremembi frekvence neposredno uporablja informacije od načrtovalnika nalog in lahko takoj pokliče gonilnike cpufreq za takojšnje spreminjanje frekvence, takoj prilagajajući parametre delovanja CPU trenutni obremenitvi.
- V DRM-gonilniku i915 za grafične kartice Intel je bila vključena podpora za čipe, temelječe na mikroarhitekturi in dodana začetna podpora za diskretne kartice .
- V gonilniku amdgpu je bila dodana začetna podpora za GPU AMD (Navy Flounder) in (Sienna Cichlid). Dodana je podpora za motorje pospeševanja kodiranja in dekodiranja videa UVD/VCE za GPU Southern Islands (Radeon HD 7000).
Dodana je lastnost za vrtenje prikaza za 90, 180 ali 270 stopinj.Zanimivo je, da je gonilnik za GPU AMD največji vodilni gonilnik v jedru — obsega približno 2,71 milijona vrstic kode, kar je približno 10 % celotne velikosti jedra (27,81 milijona vrstic). Pri tem 1,79 milijona vrstic predstavljajo samodejno generirane glave s podatki za registre GPU, medtem ko C-koda obsega 366 tisoč vrstic (za primerjavo, gonilnik Intel i915 vključuje 209 tisoč vrstic, Nouveau pa 149 tisoč).
- V gonilniku Nouveau podpora za preverjanje celovitosti na osnovi okvirov preko (Cyclic Redundancy Checks) v grafičnih motorjih GPU NVIDIA. Implementacija temelji na dokumentaciji, ki jo je zagotovilo podjetje NVIDIA.
- Dodani so gonilniki za LCD-panele: Frida FRD350H54004, KOE TX26D202VM0BWA, CDTech S070PWS19HP-FC21, CDTech S070SWV29HG-DC44, Tianma TM070JVHG33 in Xingbangda XBD599.
- V zvočni podsistemi ALSA je bila dodana podpora za (način trajne moči za zunanje HDMI naprave za odpravo zamude ob zagonu predvajanja) ter za upravljanje osvetlitve gumbov za aktivacijo mikrofona in izklop zvoka, kot tudi dodana podpora za novo opremo, vključno s krmilnikom .
- Dodana podpora za ARM-platforme, naprave in platforme: Pine64 PinePhone v1.2, Lenovo IdeaPad Duet 10.1, ASUS Google Nexus 7, Acer Iconia Tab A500, Qualcomm Snapdragon SDM630 (uporabljen v Sony Xperia 10, 10 Plus, XA2, XA2 Plus in XA2 Ultra), Jetson Xavier NX, Amlogic WeTek Core2, Aspeed EthanolX, pet novih plošč na osnovi NXP i.MX6, MikroTik RouterBoard 3011, Xiaomi Libra, Microsoft Lumia 950, Sony Xperia Z5, MStar, Microchip Sparx5, Intel Keem Bay, Amazon Alpine v3, Renesas RZ/G2H.
Istovremeno latinskoamerička Fondacija slobodnog softvera
varijantu — , očiščen od elementov strojne programske opreme in gonilnikov, ki vsebujejo neproste komponente ali odseke kode, katerih obseg uporabe je omejen s strani proizvajalca. V novi različici je bila onemogočena nalaganje blobov v gonilnikih za WiFi rtw8821c in SoC MediaTek mt8183. Koda za čiščenje blobov v gonilnikih in podsistemih Habanalabs, Wilc1000, amdgpu, mt7615, i915 CSR, Mellanox mlxsw (Spectrum3), r8169 (rtl8125b-2) in x86 touchscreen je bila posodobljena.
Izvor: opennet.ru
