Vydanie jadra Linux 5.3

Po dvoch mesiacoch vývoja Linus Torvalds predstavil uvoľnenie jadra Linux 5.3. Medzi najvýraznejšie zmeny patrí podpora GPU AMD Navi, procesorov Zhaoxi a technológie správy spotreby Intel Speed Select, možnosť použitia inštrukcií umwait na čakanie bez použitia slučiek,
zvyšujúca interaktivitu režim 'utilization clamping' pre asymetrické CPU, systémový volanie pidfd_open, možnosť používania IPv4 adries z podsiete 0.0.0.0/8, možnosť hardvérového zrýchlenia nftables, podpora HDR v subsystéme DRM, integrácia hypervízora ACRN.

V oznámení nového vydania Linus pripomenul všetkým vývojárom hlavnú zásadu vývoja jadra — zachovanie nezmeneného správania pre komponenty užívateľského priestoru. Zmeny v jadre by nijako nemali narušovať už existujúce aplikácie a viesť k regresiám na užívateľskej úrovni. Pri tom porušenie správania môže spôsobiť nielen zmenu ABI, odstránenie zastaraného kódu alebo vznik chýb, ale aj nepriamy vplyv na správne fungujúce užitočné vylepšenia. Ako názorný príklad bola zamietnutá užitočná optimalizácia v kóde Ext4, znižujúca počet prístupov k úložisku deaktivovaním predbežného čítania tabuľky inode pri malých vstupno/výstupných požiadavkách.

Optimalizácia viedla k tomu, že z dôvodu zníženej diskovej aktivity sa entropia pre generátor náhodných čísel getrandom() začala hromadiť pomalšie a v niektorých konfiguráciách pri určitých okolnostiach mohli byť pozorované zaseknutia počas načítania do naplnenia zásobníka entropie. Keďže optimalizácia je naozaj užitočná, medzi vývojármi vypukla diskusia, kde sa navrhlo vyriešiť problém deaktivovaním blokovacieho režimu volania getrandom() ako predvoleného s pridaním voliteľnej vlajky na čakanie na entropiu, ale takáto zmena ovplyvní kvalitu náhodných čísel v počiatočnej fáze načítania.

Do novej verzie bolo prijatých 15794 opráv od 1974 vývojárov,
veľkosť patchu — 92 MB (zmeny sa dotkli 13986 súborov, pridalo sa 258419 riadkov kódu,
bolo odstránených 599137 riadkov). Približne 39% všetkých predložených zmien na 5.3
sa týka ovládačov zariadení, približne 12% zmien má
vzťah k aktualizácii kódu špecifického pre hardvérové architektúry, 11%
súvisiace so sieťovým zásobníkom, 3 % — súborovými systémami a 3 % s internými
pod systémami jadra.

Hlavné novinky:

  • Pamäť a systémové služby
    • Pokračuje vývoj funkčnosti 'pidfd', ktorá pomáha spracovať situácie s opätovným použitím PID (pidfd je spojený s konkrétnym procesom a nemení sa, zatiaľ čo PID môže byť priradený k inému procesu po ukončení aktuálneho procesu, ktorý je s týmto PID spojený). Predtým bol do jadra už pridaný
      systémový hovor pidfd_send_signal() a praporec CLONE_PIDFD v systéme volania clone(), čo umožňuje získať pidfd na použitie v idfd_send_signal(). Pri použití volania clone() s praporecom CLONE_PIDFD mohli vzniknúť problémy so správou služieb alebo systémom núteného ukončenia procesov pri nedostatku pamäte na platforme Android. V tomto prípade sa na spustenie používa volanie fork() alebo clone() bez CLONE_PIDFD.

      V jadre 5.3 bol predstavený systémový hovor pidfd_open(), ktorý umožňuje získať overený pidfd pre akýkoľvek existujúci proces, ktorý nebol vytvorený prostredníctvom volania clone() s praporecom CLONE_PIDFD. Bola tiež pridaná podpora polingovania pidfd pomocou poll() a epoll(), čo umožňuje v správcovských procesoch sledovať ukončenia ľubovoľných procesov bez obáv z pretekania v prípade priradenia PID novému procesu. Mechanizmus notifikácie o ukončení práce procesu súvisiaceho s pidfd je podobný oznamovaniu o ukončení svojho podradeného procesu;

    • Do plánovača úloh bola pridaná podpora mechanizmu obmedzovania zaťaženia (Utilization clamping), ktorý umožňuje dodržiavať minimálne alebo maximálne rozsahy frekvencií v závislosti od aktívnych úloh na CPU. Predstavený mechanizmus zrýchľuje úlohy, ktoré priamo ovplyvňujú kvalitu interakcie s používateľom, spustením týchto úloh minimálne na dolnej hranici „požadovanej“ frekvencie. Nízko priorizované úlohy, ktoré nemajú vplyv na prácu používateľa, sa spúšťajú s použitím hornej hranice „povolené“ frekvencie. Limity sú stanovené prostredníctvom atribútov sched_uclamp_util_min a sched_uclamp_util_max v systémovom hovore sched_setattr().
    • Pridaná podpora technológie riadenia spotreby energie Intel Speed Select, dostupná na niektorých serveroch s procesormi Intel Xeon. Uvedená technológia umožňuje nastaviť výkon a priepustnosť oddielov pre rôzne jadrá CPU, čo umožňuje prioritizovať výkon pre úlohy vykonávané na určitých jadrách, na úkor výkonu na iných jadrách;
    • Procesom v priestore používateľa bola poskytnutá možnosť čakať krátku dobu bez použitia cyklov pomocou inštrukcie umwait. Táto inštrukcia, spolu s inštrukciami umonitor a tpause, bude ponúknutá v pripravovaných čipoch Intel „Tremont“ a umožní realizovať oneskorenia, ktoré sú energeticky efektívne a neovplyvňujú výkon iných vlákien pri použití Hyper Threading;
    • Pre architektúru RISC-V bola pridaná podpora veľkých stránok pamäte (huge pages);
    • Do mechanizmu sledovania „kprobes“ bola pridaná možnosť dereferencovania ukazovateľov jadra do priestoru používateľa, čo môže byť využité napríklad na hodnotenie obsahu štruktúr odovzdávaných v systémových volaniach. Takisto bola pridaná možnosť nastavenia kontrol na etape spúšťania.
    • Do konfiguračného súboru bola pridaná možnosť PREEMPT_RT pre prácu v reálnom čase. Samotný kód na podporu režimu reálneho času zatiaľ nebol pridaný do jadra, ale vznik tejto možnosti je dobrým znakom, že mnohoročná epopeja okolo integrácie patchov Realtime-Preempt sa blíži ku koncu;
    • Bol pridaný systémový volanie clone3() s realizáciou rozšírenejšej verzie rozhrania clone(), umožňujúcej špecifikáciu väčšieho počtu príznakov;
    • Bol pridaný spracovateľ bpf_send_signal(), ktorý umožňuje BPF-programom posielať signály ľubovoľným procesom;
    • Pre události perf v prostredí hypervízora KVM bol pridaný nový mechanizmus filtrovania udalostí, ktorý umožňuje administrátorovi určiť typy udalostí, ktoré sú povolené alebo zakázané na monitorovanie na strane hosťovského systému;
    • Do mechanizmu verifikácie eBPF-aplikácií bola pridaná možnosť spracovávať programy s cyklami, ak je vykonávanie cyklu obmedzené a nemôže viesť k prekročeniu limita na maximálny počet inštrukcií;
  • Diskový subsystém, I/O a súborové systémy
    • Pre súborový systém XFS bola implementovaná možnosť viacerých vlákien na obchádzanie inode (napríklad pri kontrole kvót). Pridané sú nové ioctl BULKSTAT a INUMBERS, ktoré poskytujú prístup k funkciám, ktoré sa objavili v piatej edícii formátu FS, ako je čas vzniku inode a možnosť nastavovania parametrov BULKSTAT a INUMBERS pre každú skupinu AG (Allocation Groups);
    • V Ext4 bola pridaná podpora prázdnoty v adresároch (nepriradené bloky).
      Bola zabezpečená spracovanie pripínača „i“ (immutable) pre otvorené súbory (zákaz zápisu, ak bol prepínač nastavený v čase, keď bol súbor už otvorený);
    • V Btrfs bolo zabezpečené rýchle určovanie crc32c na všetkých architektúrach;
    • V CIFS bol z kódu na podporu smbdirect odstránený znak experimentálneho vývoja. V SMB3 bola pridaná možnosť používania kryptografických algoritmov v režime GCM. Pridaná nová možnosť montovania na extrakciu parametrov režimu z ACE (Access Control Entry). Výkon volania open() bol optimalizovaný;
    • V F2FS bola pridaná možnosť pre obmedzenie zberača odpadu pri práci v režime checkpoint=disable. Pridaný ioctl na odstraňovanie blokových rozsahov z F2FS, čo umožňuje implementovať korekciu veľkosti oddielu za behu. Pridaná možnosť umiestnenia v F2FS súborového priestoru s priamym vstupom/výstupom. Podpora zamknutia súborov a prideľovania blokov pre takéto súbory bola pridaná pre všetkých používateľov;
    • Do rozhrania pre asynchrónny vstup/výstup io_uring bola pridaná podpora asynchrónnych operácií sendmsg() a recvmsg();
    • Do súborového systému UBIFS bola pridaná podpora kompresie pomocou algoritmu zstd a možnosť verifikácie podpísaných obrazov FS;
    • V FS Ceph bola pridaná podpora bezpečnostných značiek SELinux pre súbory;
    • Pre NFSv4 bola realizovaná nová možnosť montovania „nconnect=“, ktorá určuje počet vytvorených spojení so serverom. Premávka medzi týmito spojeniami bude rozdeľovaná pomocou vyvažovania zaťaženia. Okrem toho, server NFSv4 teraz vytvára adresár /proc/fs/nfsd/clients s informáciami o aktuálnych klientoch, vrátane údajov o ich otvorených súboroch;
  • Virtualizácia a bezpečnosť
    • Do jadra bol zahrnutý hypervízor pre integrované zariadenia ACRN, ktorý je napísaný s ohľadom na pripravenosť na vykonávanie úloh v reálnom čase a vhodnosť na použitie v kriticky dôležitých systémoch. ACRN zabezpečuje minimálne režijné náklady, garantuje nízke oneskorenia (low latency) a adekvátnu reakčnosť pri interakcii s hardvérom. Podporuje virtualizáciu zdrojov CPU, vstupu/výstupu, sieťových subsystémov, operácií s grafikou a zvukom. ACRN môže byť použitý na spúšťanie niekoľkých izolovaných virtuálnych strojov v elektronických riadiacich jednotkách, prístrojových paneloch, automobilových informačných systémoch, spotrebiteľských IoT zariadeniach a inej vstavané technike;
    • V User-mode Linux bol pridaný režim „cestovania v čase“, ktorý umožňuje spomaliť alebo urýchliť čas vo virtuálnom prostredí UML na zjednodušenie ladenia časovo závislého kódu. Okrem toho bol pridaný parameter
      time-travel-start, ktorý umožňuje spustiť systémové hodiny z určeného okamihu v epoch-formáte;
    • Boli pridané nové možnosti príkazového riadku jadra „init_on_alloc“ a „init_on_free“, pri ich zadaní sa zapína nulovanie pridelených a uvoľňovaných oblastí pamäte (vyplnenie nulami pri malloc a free), čo zvyšuje bezpečnosť na úkor ďalších režijných nákladov na inicializáciu;
    • Bol pridaný nový ovládač virtio-iommu , ktorý implementuje paravirtualizované zariadenie umožňujúce posielať IOMMU-žiadosti, ako ATTACH, DETACH, MAP a UNMAP, nad transportom virtio bez emulácie tabuliek strán pamäte;
    • Bol pridaný nový ovládač virtio-pmem, ktorý predstavuje prístup k úložným zariadeniam zrkadleným do fyzického adresného priestoru, ako je NVDIMM;
    • Bola implementovaná možnosť pripevnenia kryptografických kľúčov k používateľskému alebo sieťovému priestoru mien (kľúče sa stávajú nedostupnými mimo zvoleného priestoru mien) a ochrana kľúčov pomocou ACL;
    • V kryptosystéme bola pridaná podpora veľmi rýchleho algoritmu nekryptografického hashovania xxhash, ktorého rýchlosť sa dostáva na úroveň výkonu pamäte;
  • Sieťový subsystém
    • Bola zabezpečená správa adries IPv4 v rozmedzí 0.0.0.0/8, ktoré predtým nebolo možné použiť. Zavedenie tejto podsiete umožní distribuovať ďalších 16 miliónov adries IPv4;
    • V Netfilter pre nftables bola pridaná podpora mechanizmov hardvérovej akcelerácie filtrovania paketov vďaka aplikovaniu pridaného v ovládačoch Flow Block API. Na stranu sieťových adaptérů mohou být vyváženy celé tabulky pravidel se všemi řetězci. Aktivace se provádí prostřednictvím připojení vlajky NFT_TABLE_F_HW k tabulce. Podporují se jednoduché metadatové protokoly 3. a 4. úrovně, akce přijmout/zamítnout, shody podle IP a síťových portů odesílatele/přijímače a typu protokolu;
    • Pridaná vestavěná podpora sledování připojení pro síťové mosty, která nevyžaduje použití emulující vrstvy br_netfilter;
    • V nf_tables bola pridaná podpora modulu SYNPROXY, který replikován podobnou funkcionalitu z iptables, a také byla implementována možnost kontroly v pravidlech podle jednotlivých možností v hlavičce IPv4;
    • Byla přidána možnost připojit BPF programy k systémovým voláním setsockopt() a getsockopt(), což například umožňuje připojit své zpracovatele přístupu k těmto voláním. Dále byla přidána nová bod volání (hook), pomocí které lze uspořádat vyvolání BPF programu jednou za každou RTT (round-trip-time, doba pingování);
    • Pro IPv4 a IPv6 bol pridaný nový mechanismus ukládání dat směrování nexthop, cílený na zvýšení škálovatelnosti směrovacích tabulek. Prováděné testy ukázaly, že při použití nového systému bylo nalezení 743 tisíc směrovacích tras nakládáno do jádra pouze za 4,3 sekundy;
    • Pro Bluetooth bola implementovaná funkcionalita nezbytná pro podporu LE ping;
  • Zariadenie
    • Pridaná podpora x86-kompatibilních procesorů společnosti Zhaoxin, vyvinutých v důsledku společného projektu VIA Technologies a městské správy Šanghaje. Rodina CPU ZX je postavena na základě architektury x86-64 Isaiah, která pokračuje ve vývoji technologií VIA Centaur;
    • Do subsystému DRM (Direct Rendering Manager) a také do grafických ovladačů amdgpu a i915 byla přidána podpora analýzy, zpracování a odesílání přes HDMI port metadat HDR (rozšířený dynamický rozsah), která umožňuje použití HDR panelů a obrazovek schopných zobrazovat další rozsahy jasu;
    • Do ovladače amdgpu byla přidána počáteční podpora GPU AMD NAVI (RX5700), která zahrnuje základní ovladač, kód pro interakci s obrazovkami (DCN2), podporu GFX a výpočtů (GFX10),
      SDMA 5 (System DMA0), prostředky pro řízení napájení a multimediální kodeky/dekodéry (VCN2). V amdgpu byla také zlepšena podpora karet založených na GPU Vega12 a Vega20, pro které byly přidány další možnosti řízení paměti a spotřeby energie;
    • Do ovládača amdkfd (pre diskrétne GPU, ako sú Fiji, Tonga, Polaris) bola pridaná podpora GPU na báze VegaM;
    • V DRM ovládači pre grafické karty Intel pre čipy Icelake implementovaný nový viacsegmentový režim gamma korekcie. Pridaná možnosť výstupu cez DisplayPort vo formáte YCbCr4:2:0. Pridané nové firmvér GuC pre SKL, BXT, KBL, GLK a ICL. Bola implementovaná možnosť vypnutia napájania obrazovky v asynchrónnom režime. Pridaná podpora ukladania a obnovenia kontextu renderovania pre čipy Ironlake (gen5) a gen4 (Broadwater — Cantiga), čo umožňuje z obnovenej užívateľskej domény vrátiť stav GPU pri prechode z vykonávania jedného dávkového operácia na iné;
    • V ovládači Nouveau bolo zabezpečené určenie čipovej sady NVIDIA Turing TU116;
    • Rozšírené možnosti DRM/KMS ovládača pre urýchľovače obrazových operácií ARM Komeda (Mali D71), bola pridaná podpora pre škálovanie, rozdelenie/zlučovanie vrstiev, rotáciu, odložené zapisovanie, AFBC, SMMU a formáty kódovania farieb Y0L2, P010, YUV420_8/10BIT;
    • V ovládači MSM bola pridaná podpora série A540 GPU Adreno, ktorá sa používa v procesoch Qualcomm, ako aj podpora DSI ovládača MSM8998 pre Snapdragon 835;
    • Boli pridané ovládače pre LCD panely Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 a VXT VL050-8048NT-C01;
    • Pridané ovládač na aktiváciu prostriedkov na urýchlenie dekódovania
      videí, dostupných v SoC Amlogic Meson;
    • V ovládači v3d (pre GPU Broadcom Video Core V, používaného v Raspberry Pi) sa objavil podpora rozdeľovač výpočtových shaderov;
    • Pridané ovládač pre SPI klávesnice a touchpady, používané v moderných modeloch notebookov Apple MacBook a MacBookPro;
    • Pridaná dodatočná ochrana ioctl volaní súvisiacich s ovládačom diskety, pričom samotný ovládač je označený ako pozastavený bez podpory
      („orphaned“), čo naznačuje ukončenie jeho testovania. Ovládač sa zatiaľ udržiava v jadre, ale jeho správna funkcia nie je zaručená. Ovládač sa považuje za zastaraný, pretože je ťažké nájsť funkčné zariadenie na jeho testovanie – všetky aktuálne externé úložné zariadenia zvyčajne používajú rozhranie USB.
    • Pridané cpufreq ovládač pre dosky Raspberry Pi, ktorý umožňuje dynamické riadenie zmeny frekvencie procesora;
    • Bola pridaná podpora nových ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) a Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), ako aj dosiek:
      • Purism Librem5,
      • 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.

Zároveň Latinskoamerická nadácia slobodného softvéru vytvorila
variantu úplne voľného jadra 5.3 — Linux-libre 5.3-gnu, očisteného od prvkov firmvéru a ovládačov, ktoré obsahujú nevhodné komponenty alebo úseky kódu, ktorých použitie je obmedzené výrobcom. V novej verzii je deaktivované načítanie blobov v ovládačoch qcom, hdcp drm, allegro-dvt a meson-vdec.
Opravený kód čistenia blobov v ovládačoch a subsystémoch amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, zvukovom ovládači pre skylake, ako aj v dokumentácii k mikrokódu.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster