Linukso-kerna eldono 5.3

Post du monatoj da evoluo, Linus Torvalds enkondukita liberigo de kerno Linukso 5.3. Inter la plej rimarkindaj ŝanĝoj: subteno por AMD Navi GPU-oj, Zhaoxi-procesoroj kaj teknologio pri administrado de potenco Intel Speed ​​​​Select, la kapablo uzi umwait-instrukciojn por atendi sen uzi ciklojn,
la "utiliga krampo" reĝimo pliigas interagadon por nesimetriaj CPUoj, la pidfd_open sistemvoko, la kapablo uzi IPv4-adresojn de la 0.0.0.0/8 subreto, la ebleco de nftables aparataro akcelo, HDR-subteno en la DRM-subsistemo, integriĝo de la ACRN hiperviziero.

В anonco nova eldono, Linus memorigis ĉiujn programistojn pri la ĉefa regulo de kerno-disvolviĝo - konservante la saman konduton por uzantspacaj komponantoj. Ŝanĝoj al la kerno neniel devas rompi jam ruliĝantajn aplikaĵojn aŭ konduki al regresoj ĉe la uzantnivelo. En ĉi tiu kazo, malobservo de konduto povas kaŭzi ne nur ŝanĝon en la ABI, la forigon de malaktuala kodo aŭ la aperon de eraroj, sed ankaŭ la nerektan efikon de utilaj plibonigoj, kiuj funkcias ĝuste. Kiel ilustra ekzemplo estis forĵetita utila optimumigo en Ext4-kodo, kiu reduktas la nombron da stiraj aliroj malŝaltante antaŭlegadon de la inodotabelo por malgrandaj I/O-petoj.

La optimumigo kaŭzis la fakton ke, pro malkresko en disko-aktiveco, entropio por la getrandom () hazarda nombrogeneratoro komencis akumuliĝi pli malrapide kaj en kelkaj konfiguracioj, sub certaj cirkonstancoj, frostiĝoj povus esti observitaj dum ŝarĝado ĝis la entropia naĝejo estis. plenigita. Ĉar la optimumigo estas vere utila, ekestis diskuto inter programistoj en kiu estis proponite ripari la problemon malŝaltante la defaŭltan blokan reĝimon de la getrandom() alvoko kaj aldonante laŭvolan flagon por atendi entropion, sed tia ŝanĝo influus la kvalito de la hazardaj nombroj en la komenca etapo de ŝarĝo.

La nova versio inkluzivas 15794 korektojn de 1974 programistoj,
grandeco de flikilo - 92 MB (ŝanĝoj influis 13986 dosierojn, aldonis 258419 liniojn de kodo,
599137 vicoj forigitaj). Ĉirkaŭ 39% de ĉiuj prezentitaj en 5.3
ŝanĝoj rilatas al aparataj peliloj, proksimume 12% de ŝanĝoj estas
sinteno al ĝisdatigo de kodo specifa por hardvararkitekturoj, 11%
rilata al la reto stako, 3% al dosiersistemoj kaj 3% al interna
kernaj subsistemoj.

Ĉefa novigoj:

  • Memoraj kaj sistemaj servoj
    • Daŭra evoluo de la "pidfd" funkcieco por helpi pritrakti PID-reuzosituaciojn (pidfd estas rilata al specifa procezo kaj ne ŝanĝiĝas, dum PID povas esti asociita kun alia procezo post kiam la nuna procezo asociita kun tiu PID finiĝas). Ĝi antaŭe estis aldonita al la kerno
      la pidfd_send_signal () sistemvoko kaj la CLONE_PIDFD flago en la clone () voko por akiri pidfd por uzo en idfd_send_signal (). Uzado de clone() kun la flago CLONE_PIDFD povus kaŭzi problemojn kun servaj administrantoj aŭ la senmemora forto-finsistemo de la Android-platformo. En ĉi tiu kazo, voko al fork() aŭ clone() sen CLONE_PIDFD estas uzata por komenci.

      Kerno 5.3 lanĉis la sistemvokon pidfd_open(), kiu ebligas al vi akiri kontroleblan pidfd por arbitra ekzistanta procezo, kiu ne estis kreita per vokado de clone() kun la flago CLONE_PIDFD. Ankaŭ aldonis subtenon por pidfd-voĉdonado uzante poll() kaj epoll(), kio permesas al procezmanaĝeroj spuri la finon de arbitraj procezoj sen timo de raskondiĉo se PID estas asignita al nova procezo. La mekanismo por sciigo kiam procezo asociita kun pidfd finiĝis estas simila al sciigo kiam ĝia infanprocezo finiĝis;

    • Subteno por la ŝarĝa alpingla mekanismo estis aldonita al la taskoplanilo (Uza krampo), permesante al vi aliĝi al la minimumaj aŭ maksimumaj frekvencaj intervaloj, depende de la taskoj aktivaj sur la CPU. La prezentita mekanismo plirapidigas taskojn, kiuj rekte influas la kvaliton de la uzantsperto, rulante ĉi tiujn taskojn almenaŭ ĉe la malsupra fino de la "petita" frekvenco. Malaltprioritaj taskoj, kiuj ne influas la laboron de la uzanto, estas lanĉitaj uzante la supran limon de la "permesata" frekvenco. Limoj estas fiksitaj per la atributoj sched_uclamp_util_min kaj sched_uclamp_util_max en la sistemvoko sched_setattr().
    • Aldonita subteno por energio mastrumado teknologio Intel Speed ​​​​Select, havebla sur elektitaj serviloj kun Intel Xeon-procesoroj. Ĉi tiu teknologio ebligas al vi agordi agordojn de rendimento kaj dispartigo por malsamaj CPU-kernoj, kio ebligas al vi prioritati agadon por taskoj faritaj sur certaj kernoj, oferante rendimenton sur aliaj kernoj;
    • Procezoj en uzantspaco provizita la kapablo atendi mallongan tempon sen uzi buklojn uzante la umwait-instrukcion. Ĉi tiu instrukcio, kune kun la umonitor kaj tpause instrukcioj, estos ofertitaj en la venontaj "Tremont" blatoj de Intel, kaj permesos la efektivigon de prokrastoj kiuj estas energiefikaj kaj ne influas la agadon de aliaj fadenoj kiam vi uzas Hyper Threading;
    • Por la arkitekturo RISC-V, subteno por grandaj memorpaĝoj estis aldonita;
    • La kprobes-spuradmekanismo aldonis la kapablon dereferenci kernmontrilojn al uzantspaco, kiu povas esti uzita, ekzemple, por taksi la enhavon de strukturoj pasitaj al sistemvokoj. La kapablo instali ĉekojn ĉe la lanĉa stadio ankaŭ estis aldonita.
    • Aldonita PREEMPT_RT opcio al la agorda dosiero por realtempa operacio. La kodo mem por subteni realtempan reĝimon ankoraŭ ne estis aldonita al la kerno, sed la apero de la opcio estas bona signo, ke la longtempa epopeo integriĝo Realtime-Preempt diakiloj proksimiĝas al finiĝo;
    • Aldonita la sistemvoko clone3() kun la efektivigo de pli etendebla versio de la interfaco clone() , kiu permesas specifi pli grandan nombron da flagoj;
    • Aldonita bpf_send_signal() pritraktilo, permesante al BPF-programoj sendi signalojn al arbitraj procezoj;
    • Por perf-okazaĵoj en la KVM-hipervizora medio, nova evento-filtranta mekanismo estis aldonita, permesante al la administranto determini la specojn de eventoj kiuj estas permesitaj aŭ ne permesitaj por monitorado sur la gastsistemflanko;
    • La kapablo prilabori programojn kun bukloj estis aldonita al la eBPF aplikaĵa konfirmmekanismo se la ekzekuto de la buklo estas limigita kaj ne povas konduki al superado de la limo sur la maksimuma nombro da instrukcioj;
  • Diska Subsistemo, I/O kaj Dosiersistemoj
    • La XFS-dosiersistemo nun subtenas multfadenan inodan pretervojon (ekzemple, kiam oni kontrolas kvotojn). Novaj ioctls BULKSTAT kaj INUMBERS estis aldonitaj, provizante aliron al la funkcioj, kiuj aperis en la kvina eldono de la formato FS, kiel ekzemple la inoda naskiĝtempo kaj la kapablo agordi la BULKSTAT kaj INUMBERS-parametrojn por ĉiu AG-grupo (Asignaj Grupoj);
    • En Ext4 subteno aldonita malplenoj en dosierujoj (malligitaj blokoj).
      Pretigo provizita flago "i" (neŝanĝebla) por malfermitaj dosieroj (skribi estas malpermesita en situacio se la flago estis agordita en tempo kiam la dosiero jam estis malfermita);

    • Btrfs provizas difinon de rapida efektivigo de crc32c sur ĉiuj arkitekturoj;
    • En CIFS, la kodo por smbdirect subteno estis forigita kiel eksperimenta evoluo. SMB3 aldonis la kapablon uzi kriptografajn algoritmojn en GCM-reĝimo. Aldonis novan muntan opcion por ĉerpi reĝimajn parametrojn de ACE (Alirkontrola Eniro) enskriboj. Optimumigita la agado de la open() voko;
    • Aldonis opcion al F2FS por limigi la rubkolektilon dum kurado en kontrolpunkto=malŝalti reĝimon. Aldonita ioctl por forigi blokintervalojn de F2FS, ebligante sur-la-muŝajn disecajn ĝustigojn. Aldonis la kapablon meti interŝanĝan dosieron en F2FS por provizi rektan I/O. Aldonita subteno por alpingli dosieron kaj asigni blokojn por similaj dosieroj por ĉiuj uzantoj;
    • Aldonita subteno por nesinkronaj operacioj sendmsg() kaj recvmsg() al la interfaco por nesinkrona enigo/eligo io_uring;
    • Subteno por kunpremado per la zstd-algoritmo kaj la kapablo kontroli subskribitajn FS-bildojn estis aldonitaj al la dosiersistemo UBIFS;
    • Ceph FS nun subtenas SELinux-sekurecetikedojn por dosieroj;
    • Por NFSv4, nova munta opcio "nconnect=" estis efektivigita, kiu determinas la nombron da konektoj establitaj kun la servilo. Trafiko inter ĉi tiuj ligoj estos distribuita uzante ŝarĝbalancadon. Krome, la servilo NFSv4 nun kreas dosierujon /proc/fs/nfsd/clients kun informoj pri aktualaj klientoj, inkluzive de informoj pri la dosieroj, kiujn ili malfermis;
  • Virtualigo kaj Sekureco
    • La kerno inkluzivas hiperviziilon por enigitaj aparatoj ACRN, kiu estas skribita kun okulo al preteco por realtempaj taskoj kaj taŭgeco por uzo en misi-kritikaj sistemoj. ACRN provizas minimuman superkoston, garantias malaltan latentecon kaj taŭgan respondecon dum interagado kun ekipaĵo. Subtenas virtualigon de CPU-resursoj, I/O, retsubsistemo, grafikaĵoj kaj sonoperacioj. ACRN povas esti uzata por funkcii plurajn izolitajn virtualajn maŝinojn en elektronikaj kontrolunuoj, instrumentpaneloj, aŭtaj informsistemoj, konsumantaj IoT-aparatoj kaj alia enigita teknologio;
    • En Uzant-reĝimo Linukso aldonis Tempovojaĝa reĝimo, kiu ebligas al vi malrapidigi aŭ akceli tempon en virtuala UML-medio por faciligi sencimigi temprilatan kodon. Krome, parametro estis aldonita
      tempo-vojaĝo-komenco, kiu permesas al la sistema horloĝo komenci de difinita momento en epoka formato;

    • Novaj kernaj komandliniaj opcioj "init_on_alloc" kaj "init_on_free" estis aldonitaj, kiam specifite, nuligo de asignitaj kaj liberigitaj memorareoj estas ebligita (plenigo per nuloj por malloc kaj libera), kio ebligas pliigitan sekurecon pro plia inicialigo-superkosto;
    • Nova ŝoforo aldonita virtio-iommu kun la efektivigo de paravirtualigita aparato, kiu ebligas al vi sendi IOMMU-petojn kiel ATTACH, DETACH, MAP kaj UNMAP super la virtio-transporto sen emulado de memorpaĝaj tabeloj;
    • Nova ŝoforo aldonita virtio-pmem, reprezentante aliron al stokaj aparatoj mapitaj al fizika adresspaco, kiel ekzemple NVDIMMoj;
    • Efektivigis la kapablon alkroĉi kriptografajn ŝlosilojn al uzanto aŭ retnomspaco (ŝlosiloj iĝas nealireblaj ekster la elektita nomspaco), same kiel protekti ŝlosilojn uzante ACLojn;
    • Al la kripta subsistemo aldonis subteno por tre rapida ne-kriptografa haĉa algoritmo xxhash, kies rapideco dependas de memora agado;
  • Reta subsistemo
    • Ebligis prilaboradon de IPv4-adresoj en la intervalo 0.0.0.0/8, kiu antaŭe estis neatingebla por uzo. Enkonduko de ĉi tiu subreto permesos distribui pliajn 16 milionojn da IPv4-adresoj;
    • En Netfilter por nftables aldonis subteno por aparataj akcelmekanismoj por pakaĵeta filtrado per la uzo de aldonitaj ŝoforoj Flow Block API. Tutaj tabeloj de reguloj kun ĉiuj ĉenoj povas esti metitaj flanke de retaj adaptiloj. Aktivigo estas farita ligante la NFT_TABLE_F_HW-flagon al la tabelo. Subtenas simplajn metadatumojn de protokolo de Tavolo 3 kaj Tavolo 4, akceptas/malakceptas agojn, mapadojn per IP kaj rethavenoj de sendinto/ricevilo kaj protokolo-tipo;
    • Aldonita enkonstruita koneksa spura subteno por retaj pontoj, kiu ne postulas la uzon de la br_netfilter emulanta tavolo;
    • En nf_tabloj aldonis subteno por la SYNPROXY-modulo, kiu reproduktas similan funkciecon de iptables, kaj la kapablo kontroli regulojn por individuaj opcioj en la IPv4-kapo ankaŭ estas efektivigita;
    • Aldonis la kapablon ligi BPF-programojn al la setsockopt() kaj getsockopt() sistemvokoj, kiuj, ekzemple, ebligas al vi ligi viajn proprajn alirtraktilojn al ĉi tiuj vokoj. Krome, nova vokopunkto (hoko) estis aldonita, per kiu vi povas organizi alvokon al la programo BPF unufoje por ĉiu RTT-intervalo (return-trip-tempo, ping-tempo);
    • Por IPv4 kaj IPv6 aldonis nova nexthop-voja datumstokado-mekanismo celita pliigi la skaleblon de vojtabloj. Testoj montris, ke uzante la novan sistemon, aro de 743 mil itineroj estis ŝarĝita en la kernon en nur 4.3 sekundoj;
    • Por Bluetooth efektivigita funkcieco necesa por subteni LE ping;
  • Ekipaĵo
    • Aldonita subteno por la x86-kongruaj procesoroj de la firmao Zhaoxin, evoluigita kiel rezulto de komuna projekto inter VIA Technologies kaj la Ŝanhaja Municipo. La ZX CPU-familio estas konstruita sur la x86-64 Isaiah-arkitekturo, daŭrigante la evoluon de teknologio VIA Centaŭro;
    • La subsistemo DRM (Direct Rendering Manager), same kiel la grafikaj peliloj amdgpu kaj i915, aldonis subtenon por analizado, prilaborado kaj sendado de metadatenoj HDR (alta dinamika gamo) per la HDMI-haveno, permesante la uzon de HDR-paneloj kaj ekranoj kapablaj je montrado de pliaj brilaj intervaloj;
    • La amdgpu-ŝoforo aldonis komencan subtenon por AMD NAVI GPU (RX5700), kiu inkluzivas la bazan pelilon, ekranan interagan kodon (DCN2), GFX kaj komputilan subtenon (GFX10),
      SDMA 5 (Sistemo DMA0), potencadministrado kaj multmediaj kodiloj/malĉifriloj (VCN2). amdgpu ankaŭ plibonigas subtenon por kartoj bazitaj sur GPU-oj Vega12 kaj Vega20, por kiuj aldoniĝis pliaj memoraj kaj potenco-administradkapabloj;

    • Aldonita subteno por kartoj bazitaj sur VegaM GPU-oj al la amdkfd-ŝoforo (por diskretaj GPU-oj, kiel Fiĝioj, Tongo, Polaris);
    • En la DRM-ŝoforo por Intel-vidkartoj por Icelake-blatoj efektivigita nova multsegmenta gama-korekta reĝimo. Aldonis la kapablon eligi per DisplayPort en la formato YCbCr4:2:0. Nova firmvaro aldonita GuC por SKL, BXT, KBL, GLK kaj ICL. La kapablo malŝalti ekranan potencon en nesinkrona reĝimo estis efektivigita. Aldonita subteno por konservi kaj restarigi la bildigan kuntekston por Ironlake (gen5) kaj gen4 (Broadwater - Cantiga) blatoj, kiu ebligas restarigi la GPU-staton de uzantspaco kiam vi moviĝas de unu bata operacio al alia;
    • La Nouveau-ŝoforo provizas detekton de la pecetaro NVIDIA Turing TU116;
    • La kapabloj de la DRM/KMS-ŝoforo por ARM Komeda ekranakceliloj (Mali D71) estis vastigitaj, subteno por skalado, disigo/kunfandi tavoloj, rotacio, prokrastita skribo, AFBC, SMMU kaj kolorkodigaj formatoj Y0L2, P010, YUV420_8/10BIT havas aldonita;
    • La MSM-ŝoforo aldonas subtenon por la serio A540 GPU Adreno uzata en Qualcomm-procesoroj, same kiel subtenon por la MSM8998 DSI-regilo por Snapdragon 835;
    • Aldonitaj ŝoforoj por LCD-paneloj Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 kaj VXT VL050-8048NT-C01;

    • Aldonita pelilo por ebligi malkodajn akcelajn ilojn
      filmetoj haveblaj en Amlogic Meson SoC;

    • En la v3d-ŝoforo (por la Broadcom Video Core V GPU uzata en la Raspberry Pi) aperis subteno sendi komputilojn;
    • Aldonita ŝoforo por SPI-klavaroj kaj trackpads uzataj en modernaj modeloj de tekkomputiloj Apple MacBook kaj MacBookPro;
    • Aldonita kroma protekto por ioctl-vokoj asociitaj kun la disketo, kaj la ŝoforo mem estas markita kiel nekonservita
      ("orfo"), kio implicas la finon de ĝia testado. La ŝoforo ankoraŭ estas konservita en la kerno, sed ĝia ĝusta funkciado ne estas garantiita. La ŝoforo estas konsiderata malmoderna, ĉar estas malfacile trovi laboran ekipaĵon por provi ĝin - ĉiuj nunaj eksteraj diskoj, kutime, uzas la USB-interfacon.

    • Aldonita cpufreq-ŝoforo por Raspberry Pi-tabuloj, kiu ebligas al vi dinamike kontroli ŝanĝojn en procesoro-frekvenco;
    • Aldonita subteno por nova ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP-oj + MMA) kaj Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), same kiel tabuloj:
      • Purismo Librem5,
      • Aspeed BMC,
      • Microsoft Olympus BMC,
      • Kontron SMARC,
      • Novtech Meerkat96 (i.MX7),
      • ST Micro Avenger96,
      • Google Cheza (Qualcomm SDM845),
      • Qualcomm Dragonboard 845c (Qualcomm SDM845),
      • Televidskatolo Hugsun X99 (Rockchip RK3399),
      • Khadas Edge/Edge-V/Kapitano (Rockchip RK3399),
      • Saluton RZ/G2M,
      • NXP LS1021A-TSN.

Samtempe, Latin American Free Software Foundation formis
eblo tute libera kerno 5.3 - Linukso-libre 5.3-gnu, malplenigita de firmvaro kaj ŝoforelementoj enhavantaj ne-liberajn komponentojn aŭ kodsekciojn, kies amplekso estas limigita fare de la fabrikanto. En la nova eldono, blob-ŝarĝado estas malŝaltita en la qcom, hdcp drm, allegro-dvt kaj meson-vdec-ŝoforoj.
Ĝisdatigita blob-purigadkodo en ŝoforoj kaj subsistemoj amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, sonpelilo por skylake, same kiel en la mikrokoda dokumentado.

fonto: opennet.ru

Aldoni komenton