Két hónap fejlesztés után Linus Torvalds a kernel kiadás . A legfontosabb változások között szerepel az AMD Navi GPU támogatása, a Zhaoxi processzorok, valamint az Intel Speed Select energiafogyasztás-kezelési technológia, továbbá az umwait utasítások használata, amelyek lehetővé teszik a várakozást ciklusok használata nélkül,
a ‘utilization clamping’ interaktív üzemmódja aszimmetrikus CPU-khoz, a pidfd_open rendszerhívás, az IPv4 címek használatának lehetősége a 0.0.0.0/8 alhálózatból, a nftables hardveres gyorsításának lehetősége, HDR támogatás a DRM alrendszerben, valamint az ACRN hipervizor integrálása.
A Az új verzió Linus emlékeztetett minden fejlesztőt a kernelfejlesztés alapvető szabályára - a felhasználói tér viselkedésének megsértésének elkerülésére. A kernelben végrehajtott változások semmilyen módon nem sérthetik meg a már működő alkalmazásokat, és nem okozhatnak visszalépéseket a felhasználói szinten. A viselkedés megsértését nemcsak az ABI változása, elavult kódok eltávolítása vagy hibák megjelenése okozhatja, hanem a jól működő hasznos fejlesztések közvetett hatása is. Kézzelfogható példaként a hasznos az Ext4 kódban, amely csökkenti a tárolóra való hivatkozások számát azáltal, hogy letiltja az inode tábla előzetes olvasását a kis I/O kérések során.
Az optimalizálás azt eredményezte, hogy a lemezaktivitás csökkenésével a getrandom() véletlenszám-generátorhoz tartozó entropia lassabban halmozódott fel, és bizonyos konfigurációk esetén, adott körülmények között, tapasztalható volt a felhasználói felületen a blokkolás a véletlenszám-tározó feltöltése előtt. Mivel az optimalizálás valóban hasznos, a fejlesztők között vita alakult ki, amelyben felmerült a probléma megoldása érdekében a getrandom() hívás blokkoló üzemmódjának alapértelmezett letiltása opcionális jelző hozzáadásával az entropia várakoztatásához, de egy ilyen változtatás hatással lenne a véletlenszámok minőségére a betöltés korai szakaszában.
Az új verzió 15794 javítást fogadott el 1974 fejlesztőtől,
a patch mérete 92 MB (a változtatások 13986 fájlt érintettek, 258419 kódsort adtak hozzá,
599137 kódsort távolítottak el). A 39%-a a 5.3-as
változásoknak a hardveres eszközök illesztőprogramjaival kapcsolatos, körülbelül 12%-a a
hardverarchitektúrákra specifikus kód frissítéséhez tartozik, 11%-a
a hálózati veremhez kapcsolódik, 3% — fájlrendszerekhez és 3% a belsőkhöz
kernel alrendszerekkel kapcsolatos.
:
- Memória és rendszerszolgáltatások
- Folytatódott a 'pidfd' funkció fejlesztése, amely segíti a PID újrahasználatával kapcsolatos helyzetek kezelését (a pidfd egy konkrét folyamathoz kapcsolódik és nem változik, míg a PID egy másik folyamathoz köthető, miután a hozzá tartozó aktuális folyamat befejeződött). Korábban már beépítették a kernelbe
a pidfd_send_signal() rendszerhívást és a CLONE_PIDFD flaget a clone() hívásba, amely lehetővé teszi a pidfd megszerzését a pidfd_send_signal() használatához. A CLONE_PIDFD flaggel végzett clone() hívás esetén problémák léphetnek fel a szolgáltatáskezelők vagy a folyamatok kényszerített leállítási rendszereivel, ha memóriahiány lép fel az Android platformon. Ilyen esetben a fork() vagy a clone() hívása használatos CLONE_PIDFD nélkül.Az 5.3-as kernelben bemutatásra került a , amely lehetővé teszi egy ellenőrizhető pidfd megszerzését egy tetszőleges, clone() hívással nem létrehozott, már meglévő folyamathoz. Továbbá hozzáadva a pidfd polling támogatását poll() és epoll() segítségével, amely lehetővé teszi a folyamatkezelők számára, hogy nyomon kövessék tetszőleges folyamatok befejezését, anélkül, hogy versenyhelyzetekkel kellene szembenézniük, amikor a PID-t egy új folyamatnak rendelik. A pidfd-hez tartozó folyamat befejezésének értesítési mechanizmusa hasonló a saját gyermekfolyamatának befejezéséről való értesítéshez;
- A feladatütemezőhöz hozzáadták a terheléscsökkentő mechanizmus támogatását (), amely lehetővé teszi a minimális vagy maximális frekvenciakörnyezetek betartását a CPU-n aktív feladatok függvényében. A bemutatott mechanizmus felgyorsítja azokat a feladatokat, amelyek közvetlen hatással vannak a felhasználói élmény minőségére, azoknak a feladatoknak a elindításával, amelyek legalább a „kért” frekvencia alsó határának megfelelően futnak. Az alacsony prioritású feladatok, amelyek nem befolyásolják a felhasználó munkáját, a „megengedett” frekvencia felső határának megfelelően indulnak. A határok a sched_setattr() rendszerhívásban a sched_uclamp_util_min és sched_uclamp_util_max attribútumokon keresztül kerülnek beállításra.
- Hozzáadva az energiafogyasztás-ellenőrző technológia támogatása , elérhető néhány Intel Xeon processzorral rendelkező szerveren. A megadott technológia lehetővé teszi a teljesítmény és a sávszélesség beállításait a különböző CPU magokra, amely révén prioritást adhatsz az egyes magokon végzett feladatok teljesítményének, cserébe más magok teljesítménye rovására;
- Felhasználói térben lévő folyamatok lehetősége van rövid ideig várakozni ciklusok használata nélkül az umwait utasítással. Ez az utasítás, az umonitor és tpause utasításokkal együtt, a közelgő Intel «Tremont» chippekben lesz elérhető, és lehetővé teszi az energiahatékony késleltetések megvalósítását, amelyek nem befolyásolják más szálak teljesítményét a Hyper Threading használata során;
- A RISC-V architektúra támogatja a nagy memóriablokkokat (huge pages);
- A kprobes nyomkövetési mechanizmushoz hozzáadódott a kernel mutatók felhasználói térbe való dereferálásának lehetősége, amely például a rendszerhívásokhoz átadott struktúrák tartalmának értékelésére használható. Emellett a betöltési szakaszban érvényesítések beállításának lehetősége is hozzáadódott.
- A konfigurációs fájlhoz hozzáadva a PREEMPT_RT opció a valós idejű üzemmódhoz. Maga a valós idejű üzemmód támogatásához szükséges kód még nem került be a kernelbe, de az opció megjelenése jó jel, hogy a hosszú évek óta tartó Realtime-Preempt patch-ek közelítenek a végéhez;
- Hozzáadva a clone3() rendszerhívás, amely egy bővíthetőbb clone() interfészt valósít meg, lehetővé téve több zászló megadását;
- Hozzáadva a bpf_send_signal() kezelő, amely lehetővé teszi a BPF programok számára, hogy jeleket küldjenek bármely egyes folyamatnak;
- A KVM hypervisor környezetben a perf eseményekhez új eseményfilterezési mechanizmus került hozzáadásra, amely lehetővé teszi az adminisztrátor számára, hogy meghatározza, mely eseménytípusok megfigyelése megengedett vagy tilos a vendég rendszer oldalán;
- Az eBPF alkalmazások ellenőrzési mechanizmusába hozzáadták a ciklusokat tartalmazó programok kezelési lehetőségét, ha a ciklus végrehajtása korlátozott, és nem okozhatja a megengedett utasításszám túllépését;
- Folytatódott a 'pidfd' funkció fejlesztése, amely segíti a PID újrahasználatával kapcsolatos helyzetek kezelését (a pidfd egy konkrét folyamathoz kapcsolódik és nem változik, míg a PID egy másik folyamathoz köthető, miután a hozzá tartozó aktuális folyamat befejeződött). Korábban már beépítették a kernelbe
- Lemezszubszisztéma, bemenet/kipontozás és fájlrendszerek
- Az XFS fájlrendszer számára megvalósították a több szálú inode bejárás lehetőségét (például quota ellenőrzéskor). Új ioctl BULKSTAT és INUMBERS került hozzáadásra, amelyek hozzáférést biztosítanak az ötödik kiadású FS formátumban megjelent lehetőségekhez, például az inode születési idejéhez és a BULKSTAT és INUMBERS paraméterek beállításához minden AG (Allocation Groups) számára;
- Az Ext4-ben a könyvtárakban lévő üres helyek (nem hozzárendelt blokkok) kezelését biztosították.
az «i» (immutable) flag esetében nyitott fájlokhoz (írás tilalma abban az esetben, ha a flag akkor került beállításra, amikor a fájl már meg volt nyitva); - A Btrfs-ben megvalósították a crc32c gyors implementációjának meghatározását minden architektúrára;
- A CIFS-ben a smbdirect támogatásához készült kódból eltávolították a kísérleti fejlesztés jelzőt. Az SMB3-ban hozzáadták a titkosító algoritmusok használatának lehetőségét GCM módban. Új csatolási opciót adtak hozzá, amely lehetővé teszi a mód paramétereinek kiemelését az ACE (Access Control Entry) feljegyzésekből. Optimalizálták az open() hívás teljesítményét;
- Az F2FS-ben hozzáadták a gyűjtőkorlátozási opciót, amikor a checkpoint=disable módban működik. Hozzáadtak egy ioctl-t a blokkok tartományának eltávolítására az F2FS-ből, amely lehetővé teszi a partíció méretének az élő módosítását. Lehetővé vált a swap fájl F2FS-be való elhelyezése közvetlen I/O biztosításával. Minden felhasználó számára hozzáadták a fájl rögzítésének támogatását és blokkok kijelölését az hasonló fájlokhoz;
- Az aszinkron I/O io_uring interfészhez hozzáadták az aszinkron sendmsg() és recvmsg() műveletek támogatását;
- Az UBIFS fájlrendszerhez hozzáadták a zstd algoritmus alapú tömörítés támogatását és a FS aláírt képeinek ellenőrzésének lehetőségét;
- A Ceph FS-be hozzáadták a fájlok SELinux biztonsági címkéinek támogatását;
- Az NFSv4-hez új csatolási opciót valósítottak meg, a «nconnect=» opciót, amely meghatározza a szerverhez csatlakoztatott kapcsolatok számát. A forgalmat ezek között a kapcsolatok között terheléselosztással osztják el. Ezen kívül az NFSv4 szerver most létrehozza a /proc/fs/nfsd/clients könyvtárat, amely a jelenlegi kliensek információit tartalmazza, beleértve a megnyitott fájljaikról szóló adatokat;
- Virtualizáció és biztonság
- A kernelbe beépített hypervisor tartozik beágyazott eszközök számára, , amely a valós idejű feladatok teljesítésére való felkészültség és a kritikus rendszerekhez való alkalmazhatóság szempontjából készült. Az ACRN minimális overheadet biztosít, garantálja az alacsony késleltetést és a megfelelő reakcióidőt a hardverrel való interakció során. Támogatja a CPU, I/O, hálózati alrendszerek, grafika és hang műveletek erőforrásainak virtualizálását. Az ACRN több elkülönített virtuális gép indítására használható elektronikus vezérlő egységek, műszerfalak, autós információs rendszerek, fogyasztói IoT-eszközök és egyéb beágyazott technikák számára;
- User-mode Linux időutazási mód, amely lehetővé teszi az idő lelassítását vagy felgyorsítását az UML virtuális környezetében a időhöz kötődő kód egyszerűsített hibakereséséhez. Ezen felül hozzáadva a
time-travel-start paraméter, amely lehetővé teszi a rendszeróra indítását a megadott epoch-formátumban; - Új parancssori opciók kerültek bevezetésre az „init_on_alloc” és „init_on_free” kernel beállításokhoz, amelyek aktiválják az allokált és felszabadított memória területek nullázását (nullával való feltöltés malloc és free esetén), így erősítve a biztonságot a kezdeti költségek révén;
- Új illesztőprogram került bevezetésre , egy para-virtualizált eszköz implementálásával, amely lehetővé teszi az IOMMU-kérések, mint az ATTACH, DETACH, MAP és UNMAP átadását a virtio szállítón belül, anélkül, hogy a memória oldalainak táblázatát emulálnánk;
- Új illesztőprogram került bevezetésre , amely hozzáférést biztosít a tárolóeszközökhöz, amelyek a fizikai címzési térben tükröződnek, mint például az NVDIMM;
- Lehetővé vált titkosítási kulcsok csatolása felhasználói vagy hálózati névtérhez (a kulcsok elérhetetlenek a választott névtéren kívül) és a kulcsok ACL segítségével történő védelme;
- A kriptográfiai rendszerbe támogatást kapott egy nagyon gyors, nem kriptográfiai hashalgoritmus , melynek sebessége a memória teljesítményébe ütközik;
- Hálózati alrendszer
- IPv4 címek 0.0.0.0/8 tartományának feldolgozása biztosítva van, amely korábban nem volt felhasználható. Ezen alhálózat bevezetése még 16 millió IPv4 cím elosztásához vezet;
- A Netfilter számára az nftables támogatja a csomagszűrési mechanizmusok hardveres gyorsításának alkalmazását az illesztőprogramokba beépített új funkciók révén A hálózati adapterekhez teljes szabálytáblák rendelhetők minden lánccal. A bekapcsolás az NFT_TABLE_F_HW jelzőtáblához való kötés révén történik. Támogatottak az IP és a küldő/j receiving portok, valamint a protokolltípusok szerinti egyszerű metaadatok a 3. és 4. réteg protokollok számára, a műveletek elfogadása/elutasítása;
- beépített kapcsolatkövető támogatás hálózati hídak számára, mely nem igényli a br_netfilter emuláló réteg alkalmazását;
- Az nf_tables-ben támogatás a SYNPROXY modul számára, amely hasonló funkcionalitást nyújt az iptables-hez, továbbá lehetőség van az IPv4 fejléc egyes opcióira irányuló szabályellenőrzésre;
- Lehetővé vált BPF programok csatolása a setsockopt() és getsockopt() rendszerhívásokhoz, ami például lehetővé teszi a saját hozzáférési kezelők csatolását ezekhez a hívásokhoz. Emellett új hívási pontot (hook) is létrehoztak, amely lehetővé teszi egy BPF program egyszeri hívását minden RTT (round-trip-time, ping idő) intervallumban;
- IPv4 és IPv6 számára új next-hop adatútvonal tárolási mechanizmus, amely a routing táblák skálázhatóságának növelésére irányul. A végzett tesztek azt mutatták, hogy az új rendszer segítségével 743 ezer útvonal betöltése mindössze 4,3 másodperc alatt történt meg a kernelbe;
- Bluetooth esetén a LE ping támogatásához szükséges funkcionalitás;
- Hardver
- a cégtől származó x86 kompatibilis processzorok támogatása , amely a VIA Technologies és Sanghaj önkormányzata közötti közös projekt eredményeként fejlődött ki. A ZX CPU család az x86-64 Isaiah architektúrára épül, folytatva a technológiák fejlődését. ;
- A DRM (Direct Rendering Manager) alrendszeréhez, valamint az amdgpu és i915 grafikus driverekhez hozzáadva támogatást nyújtanak az HDR (nagy dinamikatartomány) metadatainak HDMI porton keresztül történő elemzésére, feldolgozására és továbbítására, lehetővé téve HDR panelek és olyan kijelzők használatát, amelyek képesek extra fényerőtartományok megjelenítésére;
- Az amdgpu driverhez kezdeti támogatást adtak az AMD NAVI (RX5700) GPU-hoz, beleértve az alap drivert, a kijelzőkkel való interakcióhoz szükséges kódot (DCN2), a GFX és számítási támogatást (GFX10),
SDMA 5 (System DMA0), energiafogyasztás-kezelési és multimédiás kódolók/dekódolók (VCN2). Az amdgpu-ban szintén javult a Vega12 és Vega20 GPU-kra épülő kártyák támogatása, amelyekhez további memória- és energiafelhasználási kezelési lehetőségek lettek hozzáadva; - Az amdkfd meghajtóban (többek között diszkrét GPU-k, mint például Fiji, Tonga, Polaris) a VegaM GPU-alapú kártyák támogatása került bevezetésre;
- Az Intel videokártyák DRM-meghajtójában az Icelake chipekhez új több szegmensű gamma-korrekciós mód. Lehetőség nyílt DisplayPort-on keresztül YCbCr4:2:0 formátumban történő kimenetre. Új firmware-ek kerültek hozzáadásra SKL, BXT, KBL, GLK és ICL esetében. Megvalósításra került a képernyő áramellátásának kikapcsolásának lehetősége aszinkron módban. támogatás a renderelési kontextus mentésére és helyreállítására Ironlake (gen5) és gen4 (Broadwater - Cantiga) chipek esetében, amely lehetővé teszi a GPU állapotának helyreállítását felhasználói térből, amikor egyik kötegműveletből a másikra váltunk;
- A Nouveau meghajtóban biztosítva van az NVIDIA Turing TU116 chipkészlet azonosítása;
- Bővítették a DRM/KMS meghajtó lehetőségeit ARM Komeda (Mali D71) gyorsítók számára, hozzáadva a skálázás, rétegek felosztása/összevonása, forgatás, késleltetett írás, AFBC, SMMU és Y0L2, P010, YUV420_8/10BIT színkódolási formátumok támogatását;
- Az MSM meghajtóban hozzáadták az A540 GPU Adreno sorozat támogatását, amely a Qualcomm processzorokban használatos, valamint a DSI-vezérlő MSM8998 támogatását a Snapdragon 835-höz;
- Hozzáadták a Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS LCD-panelekhez szükséges meghajtókat;
Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 és VXT VL050-8048NT-C01; - meghajtó a dekódolási gyorsító eszközök aktiválásához
videók elérhetők az Amlogic Meson SoC-ban; - A v3d meghajtóban (a Broadcom Video Core V GPU-hoz, amely a Raspberry Pi-ban használatos) megjelent a számítási shader-ek ütemezése;
- meghajtó SPI billentyűzetek és trackpadok számára, amelyeket a modern Apple MacBook és MacBook Pro modellekben használnak;
- további védelem az ioctl hívásokra, amelyek a floppy meghajtóval kapcsolatosak, maga a meghajtó pedig elhagyottnak van megjelölve
(«orphaned»), ami azt jelenti, hogy a tesztelésének leállítását jelenti. A meghajtó egyelőre megmarad a kernelben, de a helyes működésének garantálása nem lehetséges. A meghajtót elavultnak tekintik, mivel a teszteléséhez nehéz működő hardvert találni - az aktuális külső tárolók általában USB interfészt használnak. - cpufreq-meghajtó a Raspberry Pi alaplapokhoz, lehetővé téve a processzor órasebességének dinamikus kezelését;
- Új ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP + MMA) és Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53) támogatása kaptak, valamint az alábbi alaplapoké:
- ,
- 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.
Egyszerre Latin-Amerikai Szabad Szoftver Alapítvány
a verziót — , amely tisztított elemekkel rendelkezik a firmware-ekből és illesztőprogramokból, amelyek nem szabad komponenseket vagy kódterületeket tartalmaznak, amelyek használatát a gyártó korlátozza. Az új kiadásban le van tiltva a blobok betöltése a qcom, hdcp drm, allegro-dvt és meson-vdec illesztőprogramokban.
Frissítve a blobok tisztító kódja az amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, skylake számára készült hang illesztőprogramban, valamint a mikroprogram dokumentációjában.
Forrás: opennet.ru
