Linux 5.3 kernel release

Pagkatapos ng dalawang buwan ng pag-unlad, si Linus Torvalds ipinakilala pagpapalabas ng kernel Linux 5.3. Kabilang sa mga pinaka-kapansin-pansing pagbabago: suporta para sa AMD Navi GPUs, Zhaoxi processors at Intel Speed ​​​​Select power management technology, ang kakayahang gumamit ng umwait na mga tagubilin upang maghintay nang hindi gumagamit ng mga cycle,
'utilization clamping' mode na nagpapataas ng interactivity para sa mga asymmetric na CPU, ang pidfd_open system call, ang kakayahang gumamit ng mga IPv4 address mula sa 0.0.0.0/8 subnet, ang posibilidad ng nftables hardware acceleration, HDR support sa DRM subsystem, integration ng ACRN hypervisor.

В anunsyo bagong release, pinaalalahanan ni Linus ang lahat ng mga developer ng pangunahing panuntunan ng pagpapaunlad ng kernel - pagpapanatili ng parehong pag-uugali para sa mga bahagi ng user-space. Ang mga pagbabago sa kernel ay hindi dapat sa anumang paraan masira ang tumatakbo nang mga application o humantong sa mga regression sa antas ng user. Sa kasong ito, ang isang paglabag sa pag-uugali ay maaaring magdulot hindi lamang ng pagbabago sa ABI, ang pag-alis ng lumang code, o ang paglitaw ng mga error, kundi pati na rin ang hindi direktang epekto ng mga kapaki-pakinabang na pagpapahusay na gumagana nang tama. Bilang isang mapaglarawang halimbawa nagkaroon itinapon kapaki-pakinabang pag-optimize sa Ext4 code, na binabawasan ang bilang ng mga access sa drive sa pamamagitan ng hindi pagpapagana ng pre-reading ng inode table para sa maliliit na kahilingan sa I/O.

Ang pag-optimize ay humantong sa katotohanan na, dahil sa pagbaba sa aktibidad ng disk, ang entropy para sa getrandom() random number generator ay nagsimulang mag-ipon nang mas mabagal at sa ilang mga pagsasaayos, sa ilalim ng ilang mga pangyayari, ang mga pag-freeze ay maaaring maobserbahan habang naglo-load hanggang sa ang entropy pool ay napuno. Dahil talagang kapaki-pakinabang ang pag-optimize, lumitaw ang isang talakayan sa mga developer kung saan iminungkahi na ayusin ang problema sa pamamagitan ng pag-disable sa default na mode ng pag-block ng getrandom() na tawag at pagdaragdag ng opsyonal na bandila para maghintay para sa entropy, ngunit makakaapekto ang naturang pagbabago sa kalidad ng mga random na numero sa unang yugto ng paglo-load.

Kasama sa bagong bersyon ang 15794 pag-aayos mula sa 1974 developer,
laki ng patch - 92 MB (naapektuhan ang mga pagbabago sa 13986 na file, 258419 na linya ng code ang naidagdag,
599137 row ang inalis). Humigit-kumulang 39% ng lahat ng ipinakita sa 5.3
Ang mga pagbabago ay nauugnay sa mga driver ng device, humigit-kumulang 12% ng mga pagbabago ay
saloobin sa pag-update ng code na partikular sa mga arkitektura ng hardware, 11%
nauugnay sa network stack, 3% sa mga file system at 3% sa panloob
mga subsystem ng kernel.

Ang pangunahing mga inobasyon:

  • Mga serbisyo ng memorya at system
    • Ang patuloy na pag-develop ng 'pidfd' na functionality upang tumulong sa paghawak ng mga sitwasyon sa muling paggamit ng PID (ang pidfd ay nauugnay sa isang partikular na proseso at hindi nagbabago, habang ang isang PID ay maaaring iugnay sa isa pang proseso pagkatapos ng kasalukuyang proseso na nauugnay sa PID na iyon). Dati itong naidagdag sa kernel
      ang pidfd_send_signal() system call at ang CLONE_PIDFD flag sa clone() na tawag upang makakuha ng pidfd para magamit sa idfd_send_signal(). Ang paggamit ng clone() na may CLONE_PIDFD flag ay maaaring magdulot ng mga problema sa mga tagapamahala ng serbisyo o out-of-memory force termination system ng Android platform. Sa kasong ito, ang isang tawag sa fork() o clone() na walang CLONE_PIDFD ay ginagamit upang magsimula.

      Ipinakilala ng Kernel 5.3 ang system call pidfd_open(), na nagbibigay-daan sa iyong makakuha ng checkable na pidfd para sa isang arbitrary na umiiral na proseso na hindi nilikha sa pamamagitan ng pagtawag sa clone() gamit ang CLONE_PIDFD flag. Nagdagdag din ng suporta para sa pidfd polling gamit ang poll() at epoll(), na nagpapahintulot sa mga manager ng proseso na subaybayan ang pagwawakas ng mga arbitrary na proseso nang walang takot sa isang kundisyon ng lahi kung ang isang PID ay itinalaga sa isang bagong proseso. Ang mekanismo para sa pag-abiso kapag natapos na ang prosesong nauugnay sa pidfd ay katulad ng pag-abiso kapag natapos na ang proseso ng bata nito;

    • Ang suporta para sa mekanismo ng pag-pin ng load ay naidagdag sa task scheduler (Pag-clamping sa paggamit), na nagbibigay-daan sa iyong sumunod sa pinakamababa o pinakamataas na saklaw ng dalas, depende sa mga gawaing aktibo sa CPU. Ang ipinakita na mekanismo ay nagpapabilis sa mga gawain na direktang nakakaapekto sa kalidad ng karanasan ng user sa pamamagitan ng pagpapatakbo ng mga gawaing ito kahit man lang sa mas mababang dulo ng "hinihiling" na dalas. Ang mga gawaing mababa ang priyoridad na hindi nakakaapekto sa trabaho ng user ay inilulunsad gamit ang pinakamataas na limitasyon ng "pinapayagan" na dalas. Ang mga limitasyon ay itinakda sa pamamagitan ng sched_uclamp_util_min at sched_uclamp_util_max attribute sa sched_setattr() system call.
    • Nagdagdag ng suporta para sa teknolohiya sa pamamahala ng enerhiya Intel Speed ​​Select, available sa mga piling server na may mga processor ng Intel Xeon. Binibigyang-daan ka ng teknolohiyang ito na magtakda ng mga setting ng performance at partition throughput para sa iba't ibang mga core ng CPU, na nagbibigay-daan sa iyong unahin ang pagganap para sa mga gawaing isinagawa sa ilang mga core, na isinasakripisyo ang pagganap sa iba pang mga core;
    • Mga proseso sa espasyo ng gumagamit ipinagkaloob ang kakayahang maghintay ng maikling panahon nang hindi gumagamit ng mga loop gamit ang umwait na pagtuturo. Ang pagtuturo na ito, kasama ang umonitor at tpause na mga tagubilin, ay iaalok sa paparating na "Tremont" chips ng Intel, at magbibigay-daan para sa pagpapatupad ng mga pagkaantala na mahusay sa enerhiya at hindi nakakaapekto sa pagganap ng iba pang mga thread kapag gumagamit ng Hyper Threading;
    • Para sa arkitektura ng RISC-V, idinagdag ang suporta para sa malalaking memory page;
    • Ang mekanismo ng pagsubaybay ng kprobes ay nagdagdag ng kakayahang i-dereference ang mga kernel pointer sa espasyo ng gumagamit, na maaaring magamit, halimbawa, upang suriin ang mga nilalaman ng mga istruktura na ipinasa sa mga tawag sa system. Ang kakayahang mag-install ng mga tseke sa yugto ng boot ay naidagdag din.
    • Nagdagdag ng opsyon na PREEMPT_RT sa configuration file para sa real-time na operasyon. Ang code mismo upang suportahan ang real-time na mode ay hindi pa naidagdag sa kernel, ngunit ang hitsura ng opsyon ay isang magandang senyales na ang pangmatagalang epiko pagsasama Malapit nang matapos ang mga realtime-Preempt na patch;
    • Idinagdag ang clone3() system call na may pagpapatupad ng mas pinalawak na bersyon ng clone() interface, na nagbibigay-daan sa pagtukoy ng mas malaking bilang ng mga flag;
    • Nagdagdag ng handler ng bpf_send_signal(), na nagpapahintulot sa mga programa ng BPF na magpadala ng mga signal sa mga arbitrary na proseso;
    • Para sa mga perf na kaganapan sa KVM hypervisor environment, isang bagong mekanismo ng pag-filter ng kaganapan ay idinagdag, na nagpapahintulot sa administrator na matukoy ang mga uri ng mga kaganapan na pinapayagan o hindi pinapayagan para sa pagsubaybay sa panig ng guest system;
    • Ang kakayahang magproseso ng mga program na may mga loop ay naidagdag sa mekanismo ng pag-verify ng aplikasyon ng eBPF kung ang pagpapatupad ng loop ay limitado at hindi maaaring humantong sa paglampas sa limitasyon sa maximum na bilang ng mga tagubilin;
  • Disk subsystem, I/O at mga file system
    • Sinusuportahan na ngayon ng XFS file system ang multi-threaded inode bypass (halimbawa, kapag sinusuri ang mga quota). Ang mga bagong ioctls na BULKSTAT at INUMBERS ay naidagdag, na nagbibigay ng access sa mga feature na lumabas sa ikalimang edisyon ng FS format, gaya ng inode birth time at ang kakayahang magtakda ng BULKSTAT at INUMBERS na mga parameter para sa bawat AG group (Allocation Groups);
    • Sa Ext4 idinagdag ang suporta voids sa mga direktoryo (mga hindi naka-link na bloke).
      Ibinigay ang pagproseso i-flag ang "i" (hindi nababago) para sa mga bukas na file (ipinagbabawal ang pagsulat sa isang sitwasyon kung ang bandila ay itinakda sa oras na ang file ay nakabukas na);

    • Nagbibigay ang Btrfs ng kahulugan ng mabilis na pagpapatupad ng crc32c sa lahat ng mga arkitektura;
    • Sa CIFS, ang code para sa smbdirect na suporta ay inalis bilang pang-eksperimentong pag-unlad. Idinagdag ng SMB3 ang kakayahang gumamit ng mga cryptographic algorithm sa GCM mode. Nagdagdag ng bagong opsyon sa pag-mount upang kunin ang mga parameter ng mode mula sa mga entry ng ACE (Access Control Entry). Na-optimize ang pagganap ng open() na tawag;
    • Nagdagdag ng opsyon sa F2FS para limitahan ang tagakolekta ng basura kapag tumatakbo sa checkpoint=disable mode. Idinagdag ang ioctl upang alisin ang mga hanay ng block mula sa F2FS, na nagbibigay-daan para sa on-the-fly na mga pagsasaayos ng laki ng partisyon. Nagdagdag ng kakayahang maglagay ng swap file sa F2FS upang magbigay ng direktang I/O. Nagdagdag ng suporta para sa pag-pin ng isang file at paglalaan ng mga bloke para sa mga katulad na file para sa lahat ng mga user;
    • Nagdagdag ng suporta para sa mga asynchronous na operasyon sendmsg() at recvmsg() sa interface para sa asynchronous na input/output io_uring;
    • Suporta para sa compression gamit ang zstd algorithm at ang kakayahang i-verify ang mga nilagdaang larawan ng FS ay naidagdag sa UBIFS file system;
    • Sinusuportahan na ngayon ng Ceph FS ang mga label ng seguridad ng SELinux para sa mga file;
    • Para sa NFSv4, isang bagong opsyon sa pag-mount na "nconnect=" ang ipinatupad, na tumutukoy sa bilang ng mga koneksyon na naitatag sa server. Ipapamahagi ang trapiko sa pagitan ng mga koneksyong ito gamit ang load balancing. Bilang karagdagan, ang NFSv4 server ngayon ay lumilikha ng isang direktoryo /proc/fs/nfsd/clients na may impormasyon tungkol sa kasalukuyang mga kliyente, kabilang ang impormasyon tungkol sa mga file na kanilang binuksan;
  • Virtualization at Seguridad
    • Ang kernel ay may kasamang hypervisor para sa mga naka-embed na device ACRN, na isinulat nang may mata sa kahandaan para sa mga real-time na gawain at pagiging angkop para sa paggamit sa mga sistemang kritikal sa misyon. Nagbibigay ang ACRN ng kaunting overhead, ginagarantiyahan ang mababang latency at sapat na pagtugon kapag nakikipag-ugnayan sa kagamitan. Sinusuportahan ang virtualization ng CPU resources, I/O, network subsystem, graphics at sound operations. Maaaring gamitin ang ACRN upang magpatakbo ng maraming nakahiwalay na virtual machine sa mga electronic control unit, dashboard, automotive information system, consumer IoT device at iba pang naka-embed na teknolohiya;
    • Sa User-mode Linux dagdag pa Time travel mode, na nagbibigay-daan sa iyong pabagalin o pabilisin ang oras sa isang virtual na kapaligiran ng UML upang gawing mas madali ang pag-debug ng code na nauugnay sa oras. Bilang karagdagan, ang isang parameter ay naidagdag
      time-travel-start, na nagpapahintulot sa system clock na magsimula mula sa isang tinukoy na sandali sa format ng kapanahunan;

    • Ang mga bagong opsyon sa command line ng kernel na "init_on_alloc" at "init_on_free" ay naidagdag, kapag tinukoy, pinagana ang zeroing ng mga inilalaan at nabakanteng lugar ng memorya (pagpupuno ng mga zero para sa malloc at libre), na nagbibigay-daan para sa mas mataas na seguridad dahil sa karagdagang pagsisimula sa itaas;
    • Idinagdag ang bagong driver virtio-iommu sa pagpapatupad ng isang paravirtualized na device na nagbibigay-daan sa iyong magpadala ng mga kahilingan sa IOMMU gaya ng ATTACH, DETACH, MAP at UNMAP sa virtio transport nang hindi ginagaya ang mga talahanayan ng memory page;
    • Idinagdag ang bagong driver virtio-pmem, na kumakatawan sa access sa mga storage device na nakamapa sa pisikal na address space, gaya ng mga NVDIMM;
    • Ipinatupad ang kakayahang mag-attach ng mga cryptographic na key sa isang user o network namespace (ang mga key ay nagiging hindi naa-access sa labas ng napiling namespace), gayundin ang pagprotekta sa mga key gamit ang mga ACL;
    • Sa crypto subsystem idinagdag suporta para sa napakabilis na non-cryptographic hashing algorithm xxhash, ang bilis nito ay depende sa pagganap ng memorya;
  • Subsystem ng network
    • Pinagana ang pagproseso ng mga IPv4 address sa hanay na 0.0.0.0/8, na dati ay hindi magagamit para sa paggamit. Panimula ng subnet na ito papayagan ipamahagi ang isa pang 16 milyong IPv4 address;
    • Sa Netfilter para sa mga nftable idinagdag suporta para sa mga mekanismo ng pagpapabilis ng hardware para sa packet filtering sa pamamagitan ng paggamit ng mga idinagdag na driver Flow Block API. Ang buong talahanayan ng mga panuntunan na may lahat ng mga chain ay maaaring ilagay sa gilid ng mga adapter ng network. Ginagawa ang pag-enable sa pamamagitan ng pag-binding ng flag ng NFT_TABLE_F_HW sa talahanayan. Sinusuportahan ang simpleng Layer 3 at Layer 4 na protocol metadata, tanggapin/tanggihan ang mga aksyon, pagmamapa sa pamamagitan ng IP at sender/receiver network port at uri ng protocol;
    • Idinagdag built-in na suporta sa pagsubaybay sa koneksyon para sa mga network bridge, na hindi nangangailangan ng paggamit ng br_netfilter emulating layer;
    • Sa nf_tables idinagdag suporta para sa SYNPROXY module, na nagrereplika ng katulad na functionality mula sa mga iptable, at ang kakayahang mag-check in ng mga panuntunan para sa mga indibidwal na opsyon sa IPv4 header ay ipinapatupad din;
    • Idinagdag ang kakayahang mag-attach ng mga BPF program sa setsockopt() at getsockopt() na mga tawag sa system, na, halimbawa, ay nagbibigay-daan sa iyong ilakip ang sarili mong mga tagapangasiwa ng access sa mga tawag na ito. Bilang karagdagan, may idinagdag na bagong call point (hook), kung saan maaari mong ayusin ang isang tawag sa BPF program nang isang beses para sa bawat pagitan ng RTT (round-trip-time, ping time);
    • Para sa IPv4 at IPv6 dagdag pa bagong nexthop routing data storage mechanism na naglalayong pataasin ang scalability ng mga routing table. Ipinakita ng mga pagsubok na kapag ginagamit ang bagong sistema, isang hanay ng 743 libong ruta ang na-load sa kernel sa loob lamang ng 4.3 segundo;
    • Para sa Bluetooth ipinatupad pag-andar na kinakailangan upang suportahan ang LE ping;
  • Оборудование
    • Idinagdag suporta para sa mga x86-compatible na processor ng kumpanya Zhaoxin, na binuo bilang resulta ng magkasanib na proyekto sa pagitan ng VIA Technologies at ng Shanghai Municipality. Ang pamilya ng ZX CPU ay binuo sa x86-64 na arkitektura ng Isaiah, na nagpapatuloy sa pag-unlad ng teknolohiya VIA Centaur;
    • Ang subsystem ng DRM (Direct Rendering Manager), gayundin ang mga amdgpu at i915 graphics driver, ay nagdagdag ng suporta para sa pag-parse, pagproseso at pagpapadala ng HDR (high dynamic range) metadata sa pamamagitan ng HDMI port, na nagpapahintulot sa paggamit ng mga HDR panel at mga screen na may kakayahang pagpapakita ng karagdagang mga saklaw ng liwanag ;
    • Ang amdgpu driver ay nagdagdag ng paunang suporta para sa AMD NAVI GPU (RX5700), na kinabibilangan ng base driver, screen interaction code (DCN2), GFX at compute support (GFX10),
      SDMA 5 (System DMA0), pamamahala ng kuryente at mga multimedia encoder/decoder (VCN2). pinapabuti din ng amdgpu ang suporta para sa mga card batay sa Vega12 at Vega20 GPU, kung saan idinagdag ang karagdagang memorya at mga kakayahan sa pamamahala ng kapangyarihan;

    • Nagdagdag ng suporta para sa mga card batay sa mga VegaM GPU sa amdkfd driver (para sa mga discrete GPU, gaya ng Fiji, Tonga, Polaris);
    • Sa DRM driver para sa Intel video card para sa Icelake chips ipinatupad bagong multi-segment na gamma correction mode. Idinagdag ang kakayahang mag-output sa pamamagitan ng DisplayPort sa format na YCbCr4:2:0. Nagdagdag ng bagong firmware GuC para sa SKL, BXT, KBL, GLK at ICL. Naipatupad na ang kakayahang i-off ang power ng screen sa asynchronous mode. Idinagdag suporta para sa pag-save at pagpapanumbalik ng konteksto ng pag-render para sa Ironlake (gen5) at gen4 (Broadwater - Cantiga) chip, na nagbibigay-daan sa iyong ibalik ang estado ng GPU mula sa espasyo ng user kapag lumilipat mula sa isang batch operation patungo sa isa pa;
    • Ang driver ng Nouveau ay nagbibigay ng pagtuklas ng NVIDIA Turing TU116 chipset;
    • Ang mga kakayahan ng DRM/KMS driver para sa ARM Komeda screen accelerators (Mali D71) ay pinalawak, suporta para sa scaling, split/merge layers, rotation, deferred write, AFBC, SMMU at color encoding formats Y0L2, P010, YUV420_8/10BIT idinagdag;
    • Ang driver ng MSM ay nagdaragdag ng suporta para sa A540 GPU Adreno series na ginagamit sa mga processor ng Qualcomm, pati na rin ang suporta para sa MSM8998 DSI controller para sa Snapdragon 835;
    • Nagdagdag ng mga driver para sa mga LCD panel na Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 at VXT VL050-8048NT-C01;

    • Idinagdag driver para sa pagpapagana ng mga tool sa pagpapabilis ng pag-decode
      available ang mga video sa Amlogic Meson SoC;

    • Sa v3d driver (para sa Broadcom Video Core V GPU na ginamit sa Raspberry Pi) ay lumitaw sinusuportahan pagpapadala ng mga shader ng compute;
    • Idinagdag driver para sa mga SPI keyboard at trackpad na ginagamit sa mga modernong modelo ng Apple MacBook at MacBookPro na mga laptop;
    • Idinagdag karagdagang proteksyon para sa mga ioctl na tawag na nauugnay sa floppy driver, at ang driver mismo ay minarkahan bilang hindi pinapanatili
      (“ulila”), na nagpapahiwatig ng pagwawakas ng pagsubok nito. Ang driver ay naka-imbak pa rin sa kernel, ngunit ang tamang operasyon nito ay hindi ginagarantiyahan. Ang driver ay itinuturing na lipas na, dahil mahirap makahanap ng mga kagamitan sa pagtatrabaho para sa pagsubok nito - lahat ng kasalukuyang panlabas na drive, bilang panuntunan, ay gumagamit ng USB interface.

    • Idinagdag cpufreq driver para sa mga Raspberry Pi board, na nagbibigay-daan sa iyo upang dynamic na kontrolin ang mga pagbabago sa dalas ng processor;
    • Nagdagdag ng suporta para sa bagong ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) at Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), pati na rin ang mga board:
      • 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),
      • Hugsun X99 TV Box (Rockchip RK3399),
      • Khadas Edge/Edge-V/Captain (Rockchip RK3399),
      • HiHope RZ/G2M,
      • NXP LS1021A-TSN.

Kasabay nito, ang Latin American Free Software Foundation nabuo
pagpipilian ganap na libreng kernel 5.3 - Linux-libre 5.3-gnu, na-clear sa firmware at mga elemento ng driver na naglalaman ng mga di-libreng bahagi o mga seksyon ng code, na ang saklaw ay limitado ng tagagawa. Sa bagong release, ang blob loading ay hindi pinagana sa qcom, hdcp drm, allegro-dvt at meson-vdec driver.
Na-update na blob cleaning code sa mga driver at subsystem na amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, sound driver para sa skylake, gayundin sa dokumentasyon ng microcode.

Pinagmulan: opennet.ru

Magdagdag ng komento