Nakon dva mjeseca razvoja, Linus Torvalds izdanje jezgre . Među najistaknutijim promjenama su: podrška za AMD Navi GPU, Zhaoxi procesore i Intel Speed Select tehnologiju upravljanja potrošnjom, te mogućnost korištenja umwait instrukcija za čekanje bez korištenja petlji,
povećava interaktivnost režim 'utilization clamping' za asimetrične CPU, sistemski poziv pidfd_open, mogućnost korištenja IPv4 adresa iz podmreže 0.0.0.0/8, mogućnost hardverske akceleracije nftables, podrška za HDR u DRM podsystemu, integracija hipervizora ACRN.
U novog izdanja Linus je podsjetio sve programere na glavno pravilo razvoja jezgre — očuvanje nepromijenjenog ponašanja za komponente korisničkog prostora. Promjene u jezgre ne smiju na bilo koji način narušiti postojeće aplikacije i uzrokovati regresije na korisničkoj razini. Međutim, narušavanje ponašanja može uzrokovati ne samo promjenu ABI, uklanjanje zastarjelog koda ili pojavu grešaka, nego i posredno utjecati na ispravno funkcioniranje korisnih poboljšanja. Kao ilustrativan primjer, korisno u Ext4 kodu, koja smanjuje broj pristupa disku isključivanjem prefetchinga inode tablice za male ulaze/izlaze.
Optimizacija je dovela do toga da je zbog smanjenja aktivnosti diska entropija za generator slučajnih brojeva getrandom() počela sporije akumulirati, te su se u nekim konfiguracijama pod određenim okolnostima mogli uočiti zastoji tijekom podizanja sustava dok se ne napuni bazen entropije. Kako je optimizacija zapravo korisna, među programerima je nastala rasprava u kojoj je predloženo rješavanje problema isključivanjem po defaultu blokirajućeg načina rada poziva getrandom() uz dodavanje opcionalne oznake za čekanje entropije, no takva bi promjena utjecala na kvalitetu slučajnih brojeva u ranim fazama podizanja sustava.
U novu verziju prihvaćeno je 15794 ispravki od 1974 programera,
veličina zakrpe je 92 MB (promjene su se dotaknule 13986 datoteka, dodano 258419 linija koda,
uklonjeno 599137 linija). Oko 39% svih predstavljenih promjena u 5.3
vezano je uz upravljačke programe uređaja, otprilike 12% promjena ima
odnos s ažuriranjem koda specifičnog za hardverske arhitekture, 11%
se odnosi na mrežni stog, 3% na datotečne sisteme i 3% na unutarnje
pod sustave jezgre.
:
- Memorija i sistemske usluge
- Nastavljeno je razvijanje funkcionalnosti 'pidfd', koja pomaže u obradi situacija s ponovnim korištenjem PID-a (pidfd je povezan s određenim procesom i ne mijenja se, dok se PID može dodijeliti drugom procesu nakon završetka trenutnog procesa povezanog s tim PID-om). Već je ranije u jezgri dodan
sistem poziv pidfd_send_signal() i oznaka CLONE_PIDFD u pozivu clone(), koja omogućava dobivanje pidfd-a za korištenje u idfd_send_signal(). Prilikom korištenja poziva clone() s oznakom CLONE_PIDFD mogli su nastati problemi s menadžerima usluga ili sustavom prisilnog završavanja procesa kada je nedostatak memorije na platformi Android. U tom slučaju koristi se poziv fork() ili clone() bez CLONE_PIDFD.U jezgri 5.3 predstavljen je sistemski poziv , koji omogućava dobivanje provjerenog pidfd-a za bilo koji postojeći proces, stvaran ne putem poziva clone() s oznakom CLONE_PIDFD. Također je dodana podrška za polling pidfd-a putem poll() i epoll(), što omogućava menadžerima procesa praćenje završetaka bilo kojih procesa, bez straha od stanja utrke u slučaju dodjele PID-a novom procesu. Mehanizam obavještavanja o završetku rada procesa povezanog s pidfd-om sličan je obavještavanju o završetku vlastitog podprocesa;
- U planer zadataka dodana je podrška mehanizmu ograničavanja opterećenja (), omogućujući pridržavanje minimalnih ili maksimalnih raspona frekvencija, ovisno o aktivnim zadacima na CPU-u. Predstavljen mehanizam ubrzava zadatke koji izravno utječu na kvalitetu interakcije s korisnikom, pokretanjem tih zadataka barem na donjoj granici 'tražene' frekvencije. Zadaci niskog prioriteta koji ne utječu na rad korisnika pokreću se koristeći gornju granicu 'dozvoljene' frekvencije. Limiti se postavljaju putem atributa sched_uclamp_util_min i sched_uclamp_util_max u sistemskom pozivu sched_setattr().
- Dodana je podrška tehnologiji upravljanja potrošnjom energije , dostupne na nekim poslužiteljima s Intel Xeon procesorima. Spomenuta tehnologija omogućava postavljanje performansi i propusnosti particija za različita CPU jezgra, što omogućuje prioritetizaciju performansi za zadatke koji se izvode na određenim jezgrama, žrtvujući performanse na drugim jezgrama;
- Procesima u korisničkom prostoru mogućnost čekanja tijekom kratkog vremena bez korištenja ciklusa pomoću instrukcije umwait. Ova instrukcija, zajedno s instrukcijama umonitor i tpause, bit će dostupna u budućim čipovima Intel 'Tremont', te omogućiti implementaciju odgoda koje su učinkovite što se tiče potrošnje energije i ne utječu na performanse drugih niti uz Hyper Threading;
- Za RISC-V arhitekturu dodana je podrška za velike stranice memorije (huge pages);
- U mehanizam praćenja 'kprobes' dodana je mogućnost dereferenciranja pokazivača jezgre u korisnički prostor, što se može koristiti, primjerice, za procjenu sadržaja struktura koje se prosljeđuju u sistemske pozive. Također je dodana mogućnost postavljanja provjera u fazi podizanja sustava.
- U konfiguracijski datoteku dodana je opcija PREEMPT_RT za rad u realnom vremenu. Sam kod za podršku rada u realnom vremenu još nije dodan u jezgru, ali pojava opcije je dobar znak da se višegodišnja saga oko Realtime-Preempt zakrpa bliži svom finalu;
- Dodana je sistemska poziv clone3() s implementacijom proširene verzije sučelja clone(), koja dopušta veći broj zastavica;
- Dodan je handler bpf_send_signal(), koji omogućuje BPF programima slanje signala proizvoljnim procesima;
- Za perf događaje u okruženju hipervizora KVM dodan je novi mehanizam filtriranja događaja, koji omogućuje administratoru da odredi vrste događaja koje su dopuštene ili zabranjene za praćenje na strani gostujućeg sustava;
- U mehanizam provjere eBPF aplikacija dodana je mogućnost obrade programa s petljama, ako je izvršenje petlje ograničeno i ne može dovesti do prekoračenja limita na maksimalni broj instrukcija;
- Nastavljeno je razvijanje funkcionalnosti 'pidfd', koja pomaže u obradi situacija s ponovnim korištenjem PID-a (pidfd je povezan s određenim procesom i ne mijenja se, dok se PID može dodijeliti drugom procesu nakon završetka trenutnog procesa povezanog s tim PID-om). Već je ranije u jezgri dodan
- Sistem diska, ulaz/izlaz i datotečni sustavi
- Za XFS datotečni sustav implementirana je mogućnost višedretvenog prolaska inode-a (na primjer, pri provjeri kvota). Dodani su novi ioctl BULKSTAT i INUMBERS, koji omogućuju pristup mogućnostima koje su se pojavile u petoj verziji formata FS, kao što su vrijeme nastanka inode-a i mogućnost postavljanja parametara BULKSTAT i INUMBERS za svaku grupu AG (Allocation Groups);
- U Ext4 praznina u direktorijima (nepridruženih blokova).
flaga „i” (nepromjenjiv) za otvorene datoteke (zabrana pisanja u situaciji kada je oznaka bila postavljena u trenutku kada je datoteka već bila otvorena); - U Btrfs je osigurana brzo implementiranje crc32c na svim arhitekturama;
- U CIFS, oznaka za podršku smbdirect uklonjena je iz eksperimentalnog razvoja. U SMB3 dodana je mogućnost korištenja kriptografskih algoritama u GCM načinu. Dodana je nova opcija za montiranje kako bi se izvukli parametri načina iz ACE (Access Control Entry) zapisa. Optimizirana je izvedba poziva open();
- U F2FS dodana je opcija za ograničenje sakupljača smeća tijekom rada u načinu checkpoint=disable. Dodan je ioctl za brisanje raspona blokova iz F2FS, što omogućuje prilagodbu veličine particije u hodu. Dodana je mogućnost smještanja swap datoteke u F2FS uz osiguravanje izravnog ulaza/izlaza. Za sve korisnike dodana je podrška za zaključavanje datoteke i dodjelu blokova za slične datoteke;
- U sučelje za asinkrono ulaz/izlaz io_uring dodana je podrška za asinkrone operacije sendmsg() i recvmsg();
- U datotečni sustav UBIFS dodana je podrška za kompresiju koristeći algoritam zstd i mogućnost verifikacije potpisanih slika FS;
- U FS Ceph dodana je podrška za SELinux sigurnosne oznake za datoteke;
- Za NFSv4 implementirana je nova opcija montiranja „nconnect=”, koja određuje broj uspostavljenih veza sa serverom. Promet između ovih veza bit će raspodijeljen korištenjem balansa opterećenja. Nadalje, NFSv4 server sada stvara direktorij /proc/fs/nfsd/clients s informacijama o trenutnim klijentima, uključujući podatke o otvorenim datotekama;
- Virtualizacija i sigurnost
- U sastav jezgre uključen je hipervizor za ugrađene uređaje , koji je napisan s obzirom na spremnost za izvođenje zadataka u stvarnom vremenu i prikladnost za korištenje u kritično važnim sustavima. ACRN osigurava minimalne troškove, jamči niske latencije (low latency) i adekvatnu odzivnost pri interakciji s hardverom. Podržava virtualizaciju resursa CPU-a, ulaza/izlaza, mrežnog podsustava, operacija s grafikom i zvukom. ACRN se može primijeniti za pokretanje više izoliranih virtualnih strojeva u elektroničkim kontrolnim jedinicama, instrumentnim pločama, automobilskim informatičkim sustavima, potrošačkim IoT uređajima i drugim ugrađenim uređajima;
- U User-mode Linuxu režim 'putovanja u vremenu', koji omogućava usporavanje ili ubrzavanje vremena u virtualnom okruženju UML za olakšavanje otklanjanja pogrešaka u kodu povezanim s vremenom. Također je dodana opcija
time-travel-start, koja omogućava pokretanje sustavnog sata od određenog trenutka u epoch formatu; - Dodane su nove opcije naredbenog retka jezgre 'init_on_alloc' i 'init_on_free', pri čemu se, kada su navedene, omogućuje nulte ponovljive memorije (popunjavanje nulama pri malloc i free), što poboljšava sigurnost dodatnim troškovima inicijalizacije;
- Dodani su novi upravljački programi s implementacijom polu-virtualiziranog uređaja, koji omogućava slanje IOMMU zahtjeva, poput ATTACH, DETACH, MAP i UNMAP, putem virtio transporta bez emulacije tablica stranica memorije;
- Dodani su novi upravljački programi , koji predstavlja pristup uređajima za pohranu, odraženim u fizičkom adresnom prostoru, poput NVDIMM-a;
- Implementirana je mogućnost vezivanja kriptografskih ključeva na korisničko ili mrežno ime prostora (ključevi postaju nedostupni izvan odabranog imenskog prostora), kao i zaštita ključeva putem ACL-a;
- U kriptosustavu podrška za vrlo brzi algoritam nekryptografske hashiranje , čija se brzina oslanja na performanse memorije;
- Mrežni subsistem
- Osigurana je obrada IPv4 adresa u rasponu 0.0.0.0/8, koji ranije nije bio dostupan za upotrebu. Uvođenje ove podmreže distribuciju još 16 milijuna IPv4 adresa;
- U Netfilter za nftables podrška za mehanizme hardverskog ubrzanja filtriranja paketa kroz primjenu dodanog u upravljače . Na strane mrežnih adaptera može se postaviti cijela pravila s svim lancima. Aktivacija se vrši vezanjem oznake NFT_TABLE_F_HW na tablicu. Podržani su jednostavni metapodaci protokola 3. i 4. razreda, radnje prihvati/odbaci, usklađivanja prema IP-u i mrežnim portovima pošiljatelja/primatelja i vrsti protokola;
- ugrađena podrška za praćenje veza za mrežne mostove, bez potrebe za upotrebom emulacijske slojnice br_netfilter;
- U nf_tables podrška za modul SYNPROXY, ponavljajući sličnu funkcionalnost iz iptables, te je implementirana mogućnost provjere unutar pravila prema pojedinačnim opcijama u IPv4 zaglavlju;
- Dodana je mogućnost vezivanja BPF programa na sistemske pozive setsockopt() i getsockopt(), što, na primjer, omogućava vezivanje vlastitih handlera pristupa tim pozivima. Osim toga, dodana je nova točka poziva (hook), putem koje se može organizirati poziv BPF programa jedanput po svakom intervalu RTT (round-trip-time, vrijeme pinganja);
- Za IPv4 i IPv6 novi mehanizam za pohranu podataka o usmjeravanju nexthop, usmjeren na povećanje skalabilnosti tablica usmjeravanja. Testiranja su pokazala da je upotreba novog sustava omogućila učitavanje 743 tisuće ruta u kernel za samo 4.3 sekunde;
- Za Bluetooth funkcionalnost potrebna za podršku LE pingu;
- Oprema
- podrška za x86-kompatibilne procesore tvrtke , koji se razvijaju kao rezultat zajedničkog projekta VIA Technologies i gradske uprave Šangaja. Obitelj CPU ZX izgrađena je na bazi x86-64 Isaiah arhitekture, koja nastavlja razvoj tehnologija ;
- U DRM (Direct Rendering Manager) podsustav, kao i u grafičkim vozačima amdgpu i i915, dodana je podrška za razradu, obradu i slanje putem HDMI porta metapodataka HDR (prošireni dinamički raspon), omogućujući korištenje HDR panela i ekrana koji mogu prikazati dodatne razine svjetline;
- U amdgpu vozaču dodana je početna podrška za GPU AMD NAVI (RX5700), koja uključuje osnovni vozač, kod za interakciju s ekranima (DCN2), podršku za GFX i izračune (GFX10),
SDMA 5 (System DMA0), sredstva za upravljanje napajanjem i multimedijalne enkodere/dekodere (VCN2). U amdgpu je također poboljšana podrška za kartice temeljene na GPU Vega12 i Vega20, za koje su dodane dodatne mogućnosti upravljanja memorijom i potrošnjom energije; - U drajveru amdkfd (za diskretne GPU, kao što su Fiji, Tonga, Polaris) dodana je podrška za grafičke kartice na bazi GPU VegaM;
- U DRM drajveru za Intel grafičke kartice za Icelake čipove novi multisegmentni način gamma korekcije. Dodana je mogućnost izlaza preko DisplayPort u YCbCr4:2:0 formatu. Dodana su nova ažuriranja firmvera za SKL, BXT, KBL, GLK i ICL. Implementirana je mogućnost isključivanja napajanja ekrana u asinkronom režimu. podrška za čuvanje i obnavljanje konteksta rendering-a za Ironlake (gen5) i gen4 (Broadwater — Cantiga) čipove, što omogućava obnavljanje stanja GPU-a iz korisničkog prostora prilikom prelaska s jednog paketa operacija na drugi;
- U Nouveau drajveru omogućeno je prepoznavanje NVIDIA Turing TU116 čipseta;
- Proširene su mogućnosti DRM/KMS drajvera za ARM Komeda (Mali D71) akceleratore ekranih operacija, dodana je podrška za skaliranje, razdvajanje/spajanje slojeva, rotaciju, odloženo snimanje, AFBC, SMMU i formate kodiranja boje Y0L2, P010, YUV420_8/10BIT;
- U MSM drajveru dodana je podrška za seriju A540 GPU Adreno, koja se koristi u Qualcomm procesorima, kao i podrška za DSI kontroler MSM8998 za Snapdragon 835;
- Dodani su drajveri za LCD panele Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 i VXT VL050-8048NT-C01; - drajver za korištenje sredstava ubrzanja dekodiranja
video sadržaja dostupnog na SoC Amlogic Meson; - U v3d drajveru (za GPU Broadcom Video Core V, korišten u Raspberry Pi) pojavila se dispečerizacija računalnih šejdera;
- drajver za SPI tastature i touchpade korištene u modernim modelima Apple MacBook i MacBookPro;
- dodatna zaštita za ioctl pozive povezane s drajverom za floppy, a sam drajver je označen kao napušten
(„orphaned“), što podrazumijeva prekid njegovog testiranja. Drajver se za sada čuva u jezgru, ali njegova ispravna funkcionalnost nije garantovana. Drajver se smatra zastarjelim, jer je teško pronaći radnu opremu za njegovo testiranje — svi aktuelni eksterni skladišni uređaji obično koriste USB interfejs. - cpufreq drajver za Raspberry Pi ploče, koji omogućava dinamičko upravljanje promjenom frekvencije procesora;
- Dodana je podrška za nove ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP-a + MMA) i Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), kao i za ploče:
- ,
- Aspeed BMC,
- Microsoft Olympus BMC,
- Kontron SMARC,
- Novtech Meerkat96 (i.MX7),
- ST Micro Avenger96,
- Google Cheza (Qualcomm SDM845),
- Qualcomm Dragonboard 845c (Qualcomm SDM845),
- Hugsun X99 TV Box (Rockchip RK3399),
- Khadas Edge/Edge-V/Captain (Rockchip RK3399),
- HiHope RZ/G2M,
- NXP LS1021A-TSN.
Istovremeno Latinskoamerička Zajednica slobodnog softvera
varijantu — , očišćen od elemenata firmvera i drajvera koji sadrže neslobodne komponente ili delove koda čija je primena ograničena od strane proizvođača. U novom izdanju onemogućeno je učitavanje blobova u drajverima qcom, hdcp drm, allegro-dvt i meson-vdec.
Ažuriran je kod za čišćenje blobova u drajverima i podsistemima amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, zvučnom drajveru za skylake, kao i u dokumentaciji za mikro kod.
Izvor: opennet.ru
