Izdanje jezgre Linuxa 5.3

Nakon dva mjeseca razvoja Linus Torvalds podnijeti izdanje jezgre Linux 5.3. Značajne promjene uključuju: podršku za AMD Navi GPU-ove, Zhaoxi procesore i tehnologiju upravljanja energijom Intel Speed ​​​​Select, mogućnost korištenja umwait instrukcija za čekanje bez korištenja petlji,
interaktivni 'utilization clamping' mod za asimetrične procesore, pidfd_open sistemski poziv, mogućnost korištenja IPv4 adresa iz podmreže 0.0.0.0/8, mogućnost hardverske akceleracije nftables, HDR podrška u DRM podsustavu, integracija ACRN hipervizora.

В Obavijest S novim izdanjem, Linus je podsjetio sve programere na glavno pravilo razvoja kernela - održavanje nepromijenjenog ponašanja komponenti korisničkog prostora. Promjene kernela ne bi trebale ni na koji način razbiti postojeće aplikacije i dovesti do regresije na korisničkoj razini. Istodobno, kršenje ponašanja može uzrokovati ne samo promjenu ABI-ja, uklanjanje zastarjelog koda ili pojavu pogrešaka, već i neizravan utjecaj ispravnog rada korisnih poboljšanja. Kao ilustrativan primjer, postojao je odbačena koristan optimizacija u Ext4 kodu, koji smanjuje broj pristupa disku onemogućavanjem prethodnog dohvaćanja inode tablice za male I/O zahtjeve.

Optimizacija je rezultirala činjenicom da se, zbog smanjene aktivnosti diska, entropija za getrandom() generator slučajnih brojeva počela sporije akumulirati, au nekim konfiguracijama, pod određenim okolnostima, moglo je doći do zamrzavanja tijekom učitavanja dok skup entropije nije puna. Budući da je optimizacija doista korisna, došlo je do rasprave među programerima u kojoj je predloženo da se problem riješi onemogućavanjem zadanog ponašanja blokiranja getrandom() poziva uz dodatak opcijske oznake za čekanje entropije, ali takav promjena bi utjecala na kvalitetu nasumičnih brojeva u početnoj fazi učitavanja.

Nova verzija prihvatila je 15794 popravka od 1974 programera,
veličina zakrpe - 92 MB (promjene su zahvatile 13986 datoteka, dodano je 258419 linija koda,
599137 redaka uklonjeno). Oko 39% svih prikazanih u 5.3
promjene su povezane s upravljačkim programima uređaja, otprilike 12% promjena ima
stav prema ažuriranju koda specifičnog za hardverske arhitekture, 11%
odnosi se na mrežni stog, 3% na datotečne sustave i 3% na interne
podsustavi jezgre.

Glavni inovacije:

  • Memorija i usluge sustava
    • Kontinuirani razvoj funkcionalnosti 'pidfd' za pomoć u rješavanju situacija ponovne upotrebe PID-a (pidfd je vezan za određeni proces i ne mijenja se, dok se PID može vezati za drugi proces nakon što trenutni proces povezan s tim PID-om završi). Prethodno je kernel već dodan
      sistemski poziv pidfd_send_signal() i oznaku CLONE_PIDFD u pozivu clone() da bi se pidfd koristio u idfd_send_signal(). Pri korištenju poziva clone() s oznakom CLONE_PIDFD moglo bi doći do problema s upraviteljima usluga ili sustavom za prisilno prekidanje procesa s malo memorije na platformi Android. U ovom slučaju, za početak se koristi poziv fork() ili clone() bez CLONE_PIDFD.

      Kernel 5.3 uvodi sistemski poziv pidfd_open(), koji vam omogućuje da dobijete pidfd koji se može provjeriti za proizvoljni postojeći proces koji nije kreiran putem poziva za clone() s oznakom CLONE_PIDFD. Također smo dodali podršku za prozivanje pidfd-a s poll() i epoll(), što omogućuje upraviteljima procesa da prate prekid proizvoljnih procesa bez brige o stanju utrke ako se PID dodijeli novom procesu. Mehanizam za obavještavanje o izlasku procesa povezanog s pidfd-om sličan je obavještavanju o izlasku iz procesa djeteta;

    • Dodana podrška za mehanizam pričvršćivanja učitavanja u planer zadataka (Stezanje iskoristivosti), što vam omogućuje da se pridržavate minimalnih ili maksimalnih frekvencijskih raspona, ovisno o zadacima aktivnim na CPU-u. Predstavljeni mehanizam ubrzava zadatke koji izravno utječu na kvalitetu korisničke interakcije izvođenjem tih zadataka barem na donjoj granici "tražene" učestalosti. Zadaci niskog prioriteta koji ne utječu na rad korisnika pokreću se s gornjom granicom "dopuštene" frekvencije. Ograničenja se postavljaju putem atributa sched_uclamp_util_min i sched_uclamp_util_max u sistemskom pozivu sched_setattr().
    • Dodana podrška za tehnologiju upravljanja energijom Intel Speed ​​​​Select, dostupan na nekim poslužiteljima s Intel Xeon procesorima. Ova tehnologija vam omogućuje da postavite postavke performansi i propusnost particije za različite CPU jezgre, što vam omogućuje da odredite prioritete performansi za zadatke koji se izvode na određenim jezgrama, žrtvujući performanse na drugim jezgrama;
    • Procesi u korisničkom prostoru odobreno mogućnost kratkog čekanja bez korištenja petlji pomoću instrukcije umwait. Ova uputa, zajedno s umonitorom i uputama za tpauzu, bit će ponuđena u nadolazećim Intelovim "Tremont" čipovima i omogućit će kašnjenja koja su energetski učinkovita i ne utječu na performanse drugih niti pri korištenju Hyper Threadinga;
    • Podrška za velike memorijske stranice (ogromne stranice) dodana je za RISC-V arhitekturu;
    • Mogućnost dereferenciranja pokazivača jezgre na korisnički prostor dodana je mehanizmu praćenja "kprobes", koji se može koristiti, na primjer, za procjenu sadržaja struktura proslijeđenih sistemskim pozivima. Također je dodana mogućnost postavljanja provjera u fazi pokretanja.
    • Opcija PREEMPT_RT dodana je konfiguracijskoj datoteci za rad u stvarnom vremenu. Sam kod u stvarnom vremenu još nije dodan u kernel, ali pojavljivanje opcije dobar je znak da je dugotrajna saga o integracije zakrpe Realtime-Preempt su pri kraju;
    • Dodan je sistemski poziv clone3() s implementacijom proširenije verzije sučelja clone(), koja omogućuje određivanje većeg broja oznaka;
    • Dodan rukovatelj bpf_send_signal() koji omogućuje BPF programima slanje signala proizvoljnim procesima;
    • Za perf događaje u okruženju KVM hipervizora dodan je novi mehanizam za filtriranje događaja kako bi administrator mogao odrediti vrste događaja koji su dopušteni ili nedopušteni za praćenje na strani gosta;
    • Dodana je mogućnost obrade programa s ciklusima mehanizmu provjere aplikacije eBPF ako je izvođenje ciklusa ograničeno i ne može dovesti do prekoračenja ograničenja maksimalnog broja instrukcija;
  • Diskovni podsustav, I/O i datotečni sustavi
    • Za XFS datotečni sustav implementirana je mogućnost višenitnog obilaženja inode (na primjer, kod provjere kvota). Dodan novi ioctl BULKSTAT i INUMBERS, omogućavajući pristup značajkama predstavljenim u petom izdanju FS formata, kao što je vrijeme rođenja inode i mogućnost postavljanja BULKSTAT i INUMBERS parametara za svaku AG grupu (Grupe dodjele);
    • U Ext4 dodatnu podršku praznine u imenicima (nepripojeni blokovi).
      Obrada osigurana zastavica "i" (nepromjenjiva) za otvorene datoteke (zabrana pisanja u situaciji ako je zastavica postavljena u trenutku kada je datoteka već bila otvorena);

    • Btrfs pruža definiciju za brzu implementaciju crc32c na svim arhitekturama;
    • U CIFS-u, kod za podršku smbdirect je zastario. SMB3 dodaje mogućnost korištenja kriptografskih algoritama u GCM modu. Dodana je nova opcija montiranja za izdvajanje parametara načina iz ACE-ova (unos kontrole pristupa). Optimizirana izvedba open() poziva;
    • U F2FS je dodana opcija za ograničavanje skupljača smeća kada radi u načinu rada checkpoint=disable. Dodan ioctl za uklanjanje raspona blokova iz F2FS-a, omogućujući promjenu veličine particije u hodu. Dodana je mogućnost postavljanja stranične datoteke u F2FS s izravnim I/O. Dodana podrška za prikvačivanje datoteke i dodjeljivanje blokova za slične datoteke za sve korisnike;
    • Dodana podrška za asinkrone sendmsg() i recvmsg() operacije u io_uring asinkrono I/O sučelje;
    • Podrška za kompresiju korištenjem zstd algoritma i mogućnost provjere potpisanih FS slika dodani su u UBIFS datotečni sustav;
    • Podrška za SELinux sigurnosne oznake za datoteke dodana je u Ceph FS;
    • Za NFSv4 implementirana je nova opcija montiranja "nconnect=", koja određuje broj veza uspostavljenih s poslužiteljem. Promet između ovih veza će se distribuirati pomoću uravnoteženja opterećenja. Dodatno, direktorij /proc/fs/nfsd/clients sada stvara NFSv4 poslužitelj s informacijama o trenutnim klijentima, uključujući informacije o datotekama koje su otvorili;
  • Virtualizacija i sigurnost
    • Kernel uključuje hipervizor za ugrađene uređaje ACRN, koji je napisan imajući na umu spremnost u stvarnom vremenu i kritičnu upotrebljivost. ACRN pruža minimalne troškove, jamči nisku latenciju i odgovarajući odziv pri interakciji s opremom. Podržana je virtualizacija CPU resursa, I/O, mrežnog podsustava, grafičkih i zvučnih operacija. ACRN se može koristiti za pokretanje više izoliranih virtualnih strojeva u elektroničkim kontrolnim jedinicama, nadzornim pločama, automobilskim informacijskim sustavima, potrošačkim IoT uređajima i drugoj ugrađenoj opremi;
    • U korisničkom načinu Linuxa dodano način putovanja kroz vrijeme koji vam omogućuje da usporite ili ubrzate vrijeme u UML virtualnom okruženju kako biste olakšali otklanjanje pogrešaka koda povezanog s vremenom. Također dodan parametar
      time-travel-start, koji omogućuje da sistemski sat počne od navedenog vremena u formatu epohe;

    • Dodane su nove opcije naredbenog retka jezgre "init_on_alloc" i "init_on_free", koje, ako su navedene, omogućuju nuliranje dodijeljenih i oslobođenih memorijskih područja (ispunjavanje nulama tijekom malloc-a i free), što omogućuje povećanje sigurnosti zbog dodatnih troškova inicijalizacije;
    • Dodan novi upravljački program virtio-iommu s implementacijom paravirtualiziranog uređaja koji omogućuje slanje IOMMU zahtjeva, kao što su ATTACH, DETACH, MAP i UNMAP, preko virtio prijenosa bez emulacije tablica memorijskih stranica;
    • Dodan novi upravljački program virtio-pmemA koji predstavlja pristup uređajima za pohranu mapiranim u fizički adresni prostor, kao što su NVDIMM-ovi;
    • Implementirana je mogućnost pripajanja kriptografskih ključeva korisničkom ili mrežnom prostoru imena (ključevi postaju nedostupni izvan odabranog prostora imena), kao i zaštite ključeva pomoću ACL-ova;
    • Na kripto podsustav dodao podrška za vrlo brzi nekriptografski algoritam raspršivanja xxhash, čija brzina ovisi o performansama memorije;
  • Mrežni podsustav
    • Podržano rukovanje IPv4 adresama u rasponu 0.0.0.0/8, što je prije bilo neupotrebljivo. Uvođenje ove podmreže dozvolit će dodijeliti još 16 milijuna IPv4 adresa;
    • U Netfilteru za nftables dodao podrška za hardverski ubrzane mehanizme filtriranja paketa korištenjem onoga što je dodano u upravljačke programe Flow Block API. Cijele tablice pravila sa svim lancima mogu se postaviti sa strane mrežnih adaptera. Omogućavanje se vrši vezanjem oznake NFT_TABLE_F_HW na tablicu. Podržava jednostavne metapodatke protokola sloja 3 i 4, radnje prihvaćanja/odbijanja, mapiranja prema izvornom/odredišnom IP-u i mrežnim priključcima te vrsti protokola;
    • Dodano ugrađena podrška za praćenje veze za mrežne mostove, koja ne zahtijeva korištenje emulacijskog sloja br_netfilter;
    • U nf_tables dodao podrška za SYNPROXY modul, koji ponavlja sličnu funkcionalnost iz iptables, kao i mogućnost provjere u pravilima za pojedinačne opcije u IPv4 zaglavlju;
    • Dodana je mogućnost pripajanja BPF programa sistemskim pozivima setsockopt() i getsockopt(), što vam, na primjer, omogućuje da ovim pozivima priložite prilagođene rukovatelje pristupom. Osim toga, dodana je nova pozivna točka (hook) uz pomoć koje je moguće organizirati poziv BPF programu jednom za svaki RTT interval (round-trip-time, ping time);
    • Za IPv4 i IPv6 dodano novi mehanizam za pohranu podataka o usmjeravanju nexthop, usmjeren na povećanje skalabilnosti tablica za usmjeravanje. Provedeni testovi pokazali su da je korištenjem novog sustava skup od 743 tisuće ruta učitan u kernel za samo 4.3 sekunde;
    • Za Bluetooth implementiran funkcionalnost potrebna za podršku LE pingu;
  • Оборудование
    • Dodano podrška za procesore tvrtke kompatibilne s x86 Zhaoxinrazvijen kao rezultat zajedničkog projekta između VIA Technologies i općine Šangaj. Obitelj CPU ZX temelji se na x86-64 Isaiah arhitekturi, nastavljajući razvoj tehnologije VIA Centaur;
    • DRM (Direct Rendering Manager) podsustav, kao i amdgpu i i915 grafički upravljački programi, dodali su podršku za raščlanjivanje, obradu i slanje HDR (visokog dinamičkog raspona) metapodataka putem HDMI priključka, dopuštajući korištenje HDR panela i zaslona sposobnih za prikaz dodatnih raspona svjetlina ;
    • Amdgpu upravljački program dodaje početnu podršku za AMD NAVI GPU (RX5700), koji uključuje osnovni upravljački program, kod za interakciju zaslona (DCN2), GFX i podršku za računanje (GFX10),
      SDMA 5 (Sustav DMA0), upravljanje napajanjem i multimedijski koderi/dekoderi (VCN2). amdgpu također poboljšava podršku za GPU kartice temeljene na Vega12 i Vega20 s više mogućnosti upravljanja memorijom i napajanjem;

    • Amdkfd drajver (za diskretne GPU-e kao što su Fiji, Tonga, Polaris) dodao je podršku za kartice temeljene na VegaM GPU-ovima;
    • U DRM upravljačkom programu za Intel video kartice za Icelake čipove implementiran novi višesegmentni način gama korekcije. Dodana je mogućnost izlaza putem DisplayPort-a u formatu YCbCr4:2:0. Dodan novi firmware GuC za SKL, BXT, KBL, GLK i ICL. Implementirana je mogućnost isključivanja napajanja zaslona u asinkronom načinu rada. Dodano podrška za spremanje i vraćanje konteksta renderiranja za Ironlake (gen5) i gen4 (Broadwater - Cantiga) čipove, što omogućuje vraćanje stanja GPU-a iz korisničkog prostora pri prelasku s jedne skupne operacije na drugu;
    • Nouveau upravljački program omogućuje otkrivanje NVIDIA Turing TU116 čipseta;
    • Proširene mogućnosti DRM/KMS upravljačkog programa za ARM Komeda (Mali D71) akceleratore operacija zaslona, ​​dodana podrška za skaliranje, dijeljenje/spajanje slojeva, rotaciju, lijeno pisanje, AFBC, SMMU i Y0L2, P010, YUV420_8/10BIT formate kodiranja boja;
    • Dodana podrška za Qualcommov A540 GPU Adreno seriju u MSM upravljački program, kao i podrška za MSM8998 DSI kontroler za Snapdragon 835;
    • Dodani 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;

    • Dodano upravljački program za omogućavanje alata za ubrzanje dekodiranja
      video zapisi dostupni u SoC Amlogic Meson;

    • Predstavljen v3d drajver (za Broadcom Video Core V GPU koji se koristi u Raspberry Pi). podržati slanje računalnih shadera;
    • Dodano upravljački program za SPI tipkovnice i trackpadove koji se koriste u modernim modelima prijenosnih računala Apple MacBook i MacBook Pro;
    • Dodano dodatna zaštita za ioctl pozive povezane s pogonskim programom disketa, a sam upravljački program označen je kao neodržavan
      ("orphaned"), što podrazumijeva prekid njegovog testiranja. Upravljački program je i dalje pohranjen u kernelu, ali njegov ispravan rad nije zajamčen. Upravljački program se smatra zastarjelim jer je teško pronaći radni hardver za testiranje - svi trenutni vanjski pogoni u pravilu koriste USB sučelje.

    • Dodano cpufreq drajver za Raspberry Pi ploče, koji vam omogućuje dinamičku kontrolu promjene frekvencije procesora;
    • Dodana podrška za novi 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 ploče:
      • Purizam Librem5,
      • brzina 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),
      • Pozdrav RZ/G2M,
      • NXP LS1021A-TSN.

Istovremeno, Free Software Foundation Latin America formirana
opcija potpuno besplatna jezgra 5.3 - linux-libre 5.3-gnu, očišćen od elemenata firmvera i upravljačkih programa koji sadrže neslobodne komponente ili dijelove koda, čiji je opseg ograničen od strane proizvođača. Novo izdanje onemogućuje učitavanje blobova u upravljačke programe qcom, hdcp drm, allegro-dvt i meson-vdec.
Ažurirani kod za čišćenje blobova u upravljačkim programima i podsustavima amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake zvučni upravljački program i dokumentacija mikrokoda.

Izvor: opennet.ru

Dodajte komentar