Linux 5.3 nga pagpagawas sa kernel

Pagkahuman sa duha ka bulan nga pag-uswag, si Linus Torvalds gipaila pagpagawas sa kernel Linux 5.3. Lakip sa labing inila nga mga pagbag-o: suporta alang sa AMD Navi GPUs, Zhaoxi processors ug Intel Speed ​​​​Select power management technology, ang abilidad sa paggamit sa umwait nga mga instruksyon nga maghulat nga walay paggamit sa mga siklo,
'utilization clamping' mode nga nagdugang sa interaktibidad alang sa asymmetric nga mga CPU, ang pidfd_open system call, ang abilidad sa paggamit sa IPv4 nga mga adres gikan sa 0.0.0.0/8 subnet, ang posibilidad sa nftables hardware acceleration, HDR nga suporta sa DRM subsystem, integration sa ACRN hypervisor.

В pahibalo bag-ong pagpagawas, gipahinumdoman ni Linus ang tanan nga mga nag-develop sa panguna nga lagda sa pag-uswag sa kernel - pagmintinar sa parehas nga pamatasan alang sa mga sangkap sa user-space. Ang mga pagbag-o sa kernel kinahanglan dili sa bisan unsang paagi makaguba sa nagdagan na nga mga aplikasyon o magdala sa mga pagbag-o sa lebel sa tiggamit. Sa kini nga kaso, ang usa ka paglapas sa pamatasan mahimong hinungdan dili lamang usa ka pagbag-o sa ABI, ang pagtangtang sa karaan nga code, o ang dagway sa mga sayup, apan usab ang dili direkta nga epekto sa mapuslanon nga mga pag-uswag nga nagtrabaho sa husto. Ingon usa ka ilustrasyon nga pananglitan adunay gilabay nga mapuslanon pag-optimize sa Ext4 code, nga nagpamenos sa gidaghanon sa mga access sa drive pinaagi sa pag-disable sa pre-reading sa inode table alang sa gagmay nga I/O requests.

Ang pag-optimize misangpot sa kamatuoran nga, tungod sa pagkunhod sa kalihokan sa disk, ang entropy alang sa getrandom() random number generator misugod sa pagtigom nga mas hinay ug sa pipila ka mga configuration, ubos sa pipila ka mga kahimtang, ang mga pag-freeze mahimong maobserbahan sa panahon sa loading hangtud nga ang entropy pool mao ang napuno. Tungod kay ang pag-optimize mapuslanon, usa ka diskusyon ang mitumaw taliwala sa mga developer diin gisugyot nga ayohon ang problema pinaagi sa pag-disable sa default blocking mode sa getrandom() nga tawag ug pagdugang usa ka opsyonal nga bandila aron maghulat alang sa entropy, apan ang ingon nga pagbag-o makaapekto sa kalidad sa mga random nga numero sa inisyal nga yugto sa pagkarga.

Ang bag-ong bersyon naglakip sa 15794 nga mga pag-ayo gikan sa 1974 nga mga developer,
gidak-on sa patch - 92 MB (mga pagbag-o nga apektado sa 13986 nga mga file, gidugang 258419 nga linya sa code,
599137 ka laray ang gikuha). Mga 39% sa tanan nga gipresentar sa 5.3
Ang mga pagbag-o adunay kalabotan sa mga driver sa aparato, gibana-bana nga 12% sa mga pagbag-o adunay
kinaiya sa pag-update sa code nga espesipiko sa mga arkitektura sa hardware, 11%
nga may kalabutan sa network stack, 3% sa mga sistema sa file ug 3% sa internal
mga subsystem sa kernel.

nag-unang mga inobasyon:

  • Mga serbisyo sa memorya ug sistema
    • Ang padayon nga pag-uswag sa 'pidfd' nga pagpaandar aron makatabang sa pagdumala sa mga sitwasyon sa paggamit pag-usab sa PID (ang pidfd nalangkit sa usa ka piho nga proseso ug dili mausab, samtang ang usa ka PID mahimong i-uban sa laing proseso human ang kasamtangang proseso nga nalangkit sa maong PID matapos). Gidugang kini kaniadto sa kernel
      ang pidfd_send_signal() system call ug ang CLONE_PIDFD flag sa clone() nga tawag para makakuha ug pidfd para gamiton sa idfd_send_signal(). Ang paggamit sa clone() uban ang CLONE_PIDFD nga bandera mahimong hinungdan sa mga problema sa mga manedyer sa serbisyo o sa out-of-memory force termination system sa platform sa Android. Niini nga kaso, usa ka tawag sa fork() o clone() nga walay CLONE_PIDFD gigamit sa pagsugod.

      Gipaila sa Kernel 5.3 ang tawag sa sistema pidfd_open(), nga nagtugot kanimo sa pagkuha sa usa ka checkable pidfd alang sa usa ka arbitraryong kasamtangan nga proseso nga wala gibuhat pinaagi sa pagtawag clone() uban sa CLONE_PIDFD bandila. Gidugang usab ang suporta alang sa pidfd polling gamit ang poll() ug epoll(), nga nagtugot sa mga managers sa proseso sa pagsubay sa pagtapos sa mga arbitraryong proseso nga walay kahadlok sa kondisyon sa lumba kung ang usa ka PID gi-assign sa usa ka bag-ong proseso. Ang mekanismo sa pagpahibalo nga ang usa ka proseso nga nalangkit sa pidfd natapos na sama sa pagpahibalo nga ang proseso sa bata niini natapos na;

    • Ang suporta alang sa load pinning mechanism gidugang sa task scheduler (Pag-clamping sa paggamit), nga nagtugot kanimo sa pagsunod sa minimum o maximum nga frequency range, depende sa mga buluhaton nga aktibo sa CPU. Ang gipresentar nga mekanismo nagpadali sa mga buluhaton nga direktang makaapekto sa kalidad sa kasinatian sa user pinaagi sa pagpadagan niini nga mga buluhaton labing menos sa ubos nga tumoy sa "gihangyo" nga frequency. Ang ubos nga prayoridad nga mga buluhaton nga dili makaapekto sa trabaho sa user gilunsad gamit ang taas nga limitasyon sa "gitugotan" nga frequency. Ang mga limitasyon gitakda pinaagi sa sched_uclamp_util_min ug sched_uclamp_util_max nga mga attribute sa sched_setattr() system call.
    • Gidugang nga suporta alang sa teknolohiya sa pagdumala sa enerhiya Pagpili sa Bilis sa Intel, anaa sa pinili nga mga server nga adunay Intel Xeon processors. Kini nga teknolohiya nagtugot kanimo sa pagtakda sa performance ug partition throughput settings alang sa lain-laing mga CPU cores, nga nagtugot kanimo sa pag-prioritize sa performance alang sa mga buluhaton nga gihimo sa pipila ka mga cores, pagsakripisyo sa performance sa ubang mga cores;
    • Mga proseso sa user space gihatag ang abilidad sa paghulat sa usa ka mubo nga panahon nga walay paggamit sa mga galong gamit ang umwait nga instruksyon. Kini nga instruksyon, uban sa umonitor ug tpause nga mga instruksyon, itanyag sa umaabot nga "Tremont" chips sa Intel, ug magtugot sa pagpatuman sa mga paglangay nga episyente sa enerhiya ug dili makaapekto sa pasundayag sa ubang mga hilo kon gamiton ang Hyper Threading;
    • Alang sa arkitektura sa RISC-V, gidugang ang suporta alang sa dagkong mga panid sa memorya;
    • Ang mekanismo sa pagsubay sa kprobes nagdugang sa abilidad sa pag-dereference sa mga kernel pointer ngadto sa user space, nga magamit, pananglitan, sa pagtimbang-timbang sa mga sulod sa mga istruktura nga gipasa sa mga tawag sa sistema. Ang abilidad sa pag-instalar sa mga tseke sa boot stage gidugang usab.
    • Gidugang ang PREEMPT_RT nga opsyon sa configuration file para sa real-time nga operasyon. Ang code mismo aron suportahan ang real-time nga mode wala pa idugang sa kernel, apan ang dagway sa kapilian usa ka maayong timaan nga ang dugay nga epiko panaghiusa Ang mga patch sa Realtime-Preempt hapit na makompleto;
    • Gidugang ang clone3() nga tawag sa sistema uban ang pagpatuman sa usa ka mas mapalapad nga bersyon sa clone() interface, nga nagtugot sa pagpiho sa usa ka mas dako nga gidaghanon sa mga bandila;
    • Gidugang ang bpf_send_signal() handler, nga gitugotan ang mga programa sa BPF nga magpadala mga signal sa arbitraryong mga proseso;
    • Alang sa perf nga mga panghitabo sa KVM hypervisor nga palibot, usa ka bag-ong mekanismo sa pagsala sa panghitabo ang gidugang, nga nagtugot sa tagdumala sa pagtino sa mga matang sa mga panghitabo nga gitugotan o dili gitugotan sa pag-monitor sa kilid sa sistema sa bisita;
    • Ang katakus sa pagproseso sa mga programa nga adunay mga loop gidugang sa mekanismo sa pag-verify sa aplikasyon sa eBPF kung ang pagpatuman sa loop limitado ug dili mahimong molapas sa limitasyon sa labing kadaghan nga instruksyon;
  • Disk Subsystem, I/O ug File Systems
    • Ang XFS file system karon nagsuporta sa multi-threaded inode bypass (pananglitan, sa pagsusi sa mga quota). Ang bag-ong ioctls BULKSTAT ug INUMBERS gidugang, nga naghatag og access sa mga feature nga nagpakita sa ikalimang edisyon sa FS format, sama sa inode birth time ug ang abilidad sa pag-set sa BULKSTAT ug INUMBERS parameters alang sa matag AG group (Allocation Groups);
    • Sa Ext4 suporta gidugang mga haw-ang sa mga direktoryo (walay sumpay nga mga bloke).
      Gihatag ang pagproseso bandera "i" (dili mausab) alang sa bukas nga mga file (gidili ang pagsulat sa usa ka sitwasyon kung ang bandila gibutang sa panahon nga ang file bukas na);

    • Ang Btrfs naghatag usa ka kahulugan sa usa ka paspas nga pagpatuman sa crc32c sa tanan nga mga arkitektura;
    • Sa CIFS, ang code alang sa smbdirect nga suporta gitangtang isip eksperimento nga kalamboan. Gidugang sa SMB3 ang abilidad sa paggamit sa mga cryptographic algorithm sa GCM mode. Gidugang ang usa ka bag-ong kapilian sa pag-mount aron makuha ang mga parameter sa mode gikan sa mga entry sa ACE (Access Control Entry). Gi-optimize ang paghimo sa open() nga tawag;
    • Gidugang ang kapilian sa F2FS aron limitahan ang tigkolekta sa basura kung nagdagan sa checkpoint = disable mode. Gidugang ang ioctl aron matangtang ang mga block range gikan sa F2FS, nga gitugotan alang sa on-the-fly nga pag-adjust sa gidak-on sa partition. Gidugang ang abilidad sa pagbutang sa usa ka swap file sa F2FS aron makahatag direkta nga I/O. Gidugang nga suporta alang sa pag-pin sa usa ka file ug pag-alokar sa mga bloke alang sa parehas nga mga file alang sa tanan nga mga tiggamit;
    • Gidugang nga suporta alang sa asynchronous nga mga operasyon sendmsg() ug recvmsg() sa interface alang sa asynchronous input/output io_uring;
    • Suporta alang sa compression gamit ang zstd algorithm ug ang abilidad sa pag-verify sa gipirmahan nga FS nga mga hulagway gidugang sa UBIFS file system;
    • Gisuportahan na karon sa Ceph FS ang mga label sa seguridad sa SELinux para sa mga file;
    • Alang sa NFSv4, usa ka bag-ong opsyon sa pag-mount "nconnect=" ang gipatuman, nga nagtino sa gidaghanon sa mga koneksyon nga natukod sa server. Ang trapiko tali niining mga koneksyon ipang-apod-apod gamit ang load balancing. Dugang pa, ang server sa NFSv4 karon nagmugna ug direktoryo /proc/fs/nfsd/kliyente nga adunay impormasyon bahin sa kasamtangang mga kliyente, lakip ang impormasyon bahin sa mga file nga ilang giablihan;
  • Virtualization ug Security
    • Ang kernel naglakip sa usa ka hypervisor alang sa mga embedded device ACRN, nga gisulat uban sa usa ka mata sa pagkaandam alang sa tinuod nga panahon nga mga buluhaton ug kaangayan alang sa paggamit sa mission-kritikal nga mga sistema. Ang ACRN naghatag og gamay nga overhead, naggarantiya sa ubos nga latency ug igo nga pagtubag sa dihang nakig-interact sa mga ekipo. Nagsuporta sa virtualization sa mga kapanguhaan sa CPU, I/O, network subsystem, graphics ug sound operations. Ang ACRN mahimong magamit sa pagpadagan sa daghang nahilit nga virtual machines sa electronic control units, dashboards, automotive information systems, consumer IoT devices ug uban pang embedded technology;
    • Sa User-mode Linux gidugang Ang mode sa pagbiyahe sa oras, nga nagtugot kanimo sa pagpahinay o pagpadali sa oras sa usa ka virtual nga UML nga palibot aron mas dali ang pag-debug sa code nga may kalabotan sa oras. Dugang pa, usa ka parameter ang gidugang
      time-travel-start, nga nagtugot sa system clock nga magsugod gikan sa usa ka piho nga gutlo sa epoch format;

    • Ang bag-ong kernel command line nga mga opsyon nga "init_on_alloc" ug "init_on_free" gidugang, kung gipiho, ang pag-zero sa gigahin ug gilibre nga mga lugar sa memorya gipalihok (pagpuno sa mga zero para sa malloc ug libre), nga nagtugot sa dugang nga seguridad tungod sa dugang nga pagsugod sa overhead;
    • Gidugang ang bag-ong drayber virtio-iommu uban ang pagpatuman sa usa ka paravirtualized device nga nagtugot kanimo sa pagpadala sa mga hangyo sa IOMMU sama sa ATTACH, DETACH, MAP ug UNMAP sa virtio transport nga walay pagsundog sa memory page tables;
    • Gidugang ang bag-ong drayber virtio-pmem, nga nagrepresentar sa access sa storage device nga gimapa sa pisikal nga address space, sama sa NVDIMMs;
    • Gipatuman ang abilidad sa pag-attach sa mga cryptographic nga yawe sa usa ka user o network namespace (mga yawe mahimong dili ma-access sa gawas sa pinili nga namespace), ingon man usab sa pagpanalipod sa mga yawe gamit ang ACLs;
    • Ngadto sa subsystem sa crypto gidugang suporta alang sa usa ka paspas kaayo nga non-cryptographic hashing algorithm xxhash, ang gikusgon niini nagdepende sa performance sa memorya;
  • Subsystem sa network
    • Gipaandar ang pagproseso sa mga adres sa IPv4 sa range 0.0.0.0/8, nga kaniadto dili magamit. Pagpaila niini nga subnet motugot pag-apod-apod ug laing 16 ka milyon nga IPv4 nga mga adres;
    • Sa Netfilter para sa nftables gidugang suporta alang sa mga mekanismo sa pagpadali sa hardware alang sa packet filtering pinaagi sa paggamit sa dugang nga mga drayber Flow Block API. Ang tibuuk nga mga lamesa sa mga lagda nga adunay tanan nga mga kadena mahimong ibutang sa kilid sa mga adapter sa network. Ang pagpaandar gihimo pinaagi sa pagbugkos sa NFT_TABLE_F_HW nga bandila sa lamesa. Nagsuporta sa yano nga Layer 3 ug Layer 4 protocol metadata, pagdawat / pagsalikway sa mga aksyon, pagmapa sa IP ug nagpadala / tigdawat nga mga pantalan sa network ug tipo sa protocol;
    • Gidugang built-in nga koneksyon sa pagsubay sa suporta alang sa network bridges, nga wala magkinahanglan sa paggamit sa br_netfilter emulating layer;
    • Sa nf_tables gidugang suporta alang sa SYNPROXY module, nga nagsundog sa susama nga gamit gikan sa iptables, ug ang abilidad sa pagsusi sa mga lagda alang sa indibidwal nga mga kapilian sa IPv4 header gipatuman usab;
    • Gidugang ang abilidad sa pag-attach sa mga programa sa BPF sa setsockopt() ug getsockopt() nga mga tawag sa sistema, nga, pananglitan, nagtugot kanimo sa pag-attach sa imong kaugalingong mga tigdumala sa pag-access niini nga mga tawag. Dugang pa, usa ka bag-ong call point (hook) ang gidugang, diin mahimo nimong maorganisar ang usa ka tawag sa programa sa BPF kausa alang sa matag interval sa RTT (round-trip-time, oras sa ping);
    • Para sa IPv4 ug IPv6 gidugang bag-ong nexthop routing data storage mechanism nga gitumong sa pagdugang sa scalability sa routing tables. Gipakita sa mga pagsulay nga kung gigamit ang bag-ong sistema, usa ka hugpong sa 743 ka libo nga mga ruta ang gikarga sa kernel sa 4.3 segundos lamang;
    • Alang sa Bluetooth gipatuman gikinahanglan nga pag-andar aron suportahan ang LE ping;
  • Kagamitan
    • Gidugang suporta alang sa x86-compatible nga mga processor sa kompanya Zhaoxin, naugmad isip resulta sa hiniusang proyekto tali sa VIA Technologies ug sa Shanghai Municipality. Ang pamilya sa ZX CPU gitukod sa x86-64 nga arkitektura ni Isaiah, nga nagpadayon sa pagpalambo sa teknolohiya VIA Centaur;
    • Ang subsystem sa DRM (Direct Rendering Manager), ingon man ang amdgpu ug i915 graphics drivers, midugang og suporta para sa pag-parse, pagproseso ug pagpadala sa HDR (high dynamic range) metadata pinaagi sa HDMI port, nga nagtugot sa paggamit sa HDR panels ug screens nga makahimo sa pagpakita sa dugang nga mga sakup sa kahayag;
    • Ang drayber sa amdgpu nagdugang inisyal nga suporta para sa AMD NAVI GPU (RX5700), nga naglakip sa base driver, screen interaction code (DCN2), GFX ug compute support (GFX10),
      SDMA 5 (System DMA0), pagdumala sa kuryente ug mga multimedia encoder/decoder (VCN2). Ang amdgpu nagpalambo usab sa suporta alang sa mga kard nga gibase sa Vega12 ug Vega20 GPUs, diin ang dugang nga memorya ug mga kapabilidad sa pagdumala sa gahum gidugang;

    • Gidugang nga suporta alang sa mga kard nga gibase sa VegaM GPUs sa amdkfd driver (alang sa discrete GPUs, sama sa Fiji, Tonga, Polaris);
    • Sa DRM driver alang sa Intel video card alang sa Icelake chips gipatuman bag-ong multi-segment gamma correction mode. Gidugang ang abilidad sa pag-output pinaagi sa DisplayPort sa YCbCr4:2:0 nga format. Bag-ong firmware gidugang GuC para sa SKL, BXT, KBL, GLK ug ICL. Gipatuman ang abilidad sa pagpalong sa screen power sa asynchronous mode. Gidugang suporta alang sa pagtipig ug pagpasig-uli sa konteksto sa paghubad alang sa Ironlake (gen5) ug gen4 (Broadwater - Cantiga) nga mga chips, nga nagtugot kanimo sa pagpasig-uli sa kahimtang sa GPU gikan sa wanang sa tiggamit sa pagbalhin gikan sa usa ka batch nga operasyon ngadto sa lain;
    • Ang drayber sa Nouveau naghatag og detection sa NVIDIA Turing TU116 chipset;
    • Ang mga kapabilidad sa DRM / KMS driver alang sa ARM Komeda screen accelerators (Mali D71) gipalapdan, suporta alang sa scaling, split/merge layers, rotation, deferred write, AFBC, SMMU ug color encoding formats Y0L2, P010, YUV420_8/10BIT adunay gidugang;
    • Ang drayber sa MSM nagdugang suporta alang sa serye sa A540 GPU Adreno nga gigamit sa mga processor sa Qualcomm, ingon man suporta alang sa MSM8998 DSI controller alang sa Snapdragon 835;
    • Gidugang nga mga drayber alang sa mga panel sa LCD Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 ug VXT VL050-8048NT-C01;

    • Gidugang drayber alang sa pagpagana sa mga himan sa pagpadali sa pag-decode
      mga video nga anaa sa Amlogic Meson SoC;

    • Sa v3d driver (alang sa Broadcom Video Core V GPU nga gigamit sa Raspberry Pi) nagpakita pagsuporta pagpadala sa compute shaders;
    • Gidugang drayber alang sa SPI nga mga keyboard ug trackpad nga gigamit sa modernong mga modelo sa Apple MacBook ug MacBookPro nga mga laptop;
    • Gidugang dugang nga panalipod alang sa mga tawag sa ioctl nga nakig-uban sa floppy driver, ug ang drayber mismo gimarkahan nga wala mapadayon
      (“ilo”), nga nagpasabot sa pagtapos sa pagsulay niini. Ang drayber gitipigan gihapon sa kernel, apan ang husto nga operasyon niini dili garantiya. Ang drayber giisip nga karaan na, tungod kay lisud ang pagpangita sa mga kagamitan sa pagtrabaho alang sa pagsulay niini - ang tanan nga kasamtangan nga mga external drive, ingon nga usa ka lagda, naggamit sa USB interface.

    • Gidugang cpufreq driver alang sa Raspberry Pi boards, nga nagtugot kanimo sa dinamikong pagkontrol sa mga pagbag-o sa frequency sa processor;
    • Gidugang nga suporta alang sa bag-ong ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSPs + MMA) ug Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), ingon man mga tabla:
      • 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.

Sa samang higayon, ang Latin American Free Software Foundation naporma
kapilian bug-os nga libre nga kernel 5.3 - Linux-libre 5.3-gnu, gitangtang sa firmware ug mga elemento sa drayber nga adunay dili libre nga mga sangkap o mga seksyon sa code, nga ang sakup niini limitado sa tiggama. Sa bag-ong pagpagawas, ang blob loading gi-disable sa qcom, hdcp drm, allegro-dvt ug meson-vdec nga mga drayber.
Gi-update nga blob cleaning code sa mga driver ug subsystems amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, sound driver para sa skylake, ingon man sa dokumentasyon sa microcode.

Source: opennet.ru

Idugang sa usa ka comment