Lansering av Linux-kÀrnan 5.3

Efter tvÄ mÄnaders utveckling presenterade Linus Torvalds Är kÀrnlansering Linux 5.3. Bland de mest anmÀrkningsvÀrda förÀndringarna: stöd för AMD Navi GPU:er, Zhaoxi-processorer och Intel Speed Select för energihantering, möjligheten att anvÀnda umwait-instruktioner för att vÀnta utan att anvÀnda loopar,
ökar interaktiviteten med lĂ€get ‘utilization clamping’ för asymmetriska CPU:er, systemanropet pidfd_open, möjligheten att anvĂ€nda IPv4-adresser frĂ„n nĂ€tverket 0.0.0.0/8, möjligheten till hĂ„rdvaruaccelerering av nftables, stöd för HDR i DRM-systemet, integration av hypervisorn ACRN.

I annonsen Den nya versionen av Linus pÄminde alla utvecklare om den viktigaste regeln för kÀrnutveckling - att bevara beteendets konstanthet för anvÀndarrumskomponenter. FörÀndringar i kÀrnan fÄr pÄ inget sÀtt bryta mot befintliga applikationer och orsaka regressionsproblem pÄ anvÀndarnivÄ. OcksÄ, beteendeförÀndringar kan orsakas av inte bara Àndring av ABI, borttagning av förÄldrad kod eller uppkomsten av buggar, utan Àven indirekt pÄverka fungerande nyttiga förbÀttringar. Som ett tydligt exempel har kastats bort en anvÀndbar optimering i Ext4-koden, vilket minskar antalet Ätkomster till lagringsenheten genom att inaktivera förhandslÀsning av inode-tabellen vid smÄ I/O-förfrÄgningar.

Optimeringen ledde till att pÄ grund av minskad diskaktivitet sÄ samlades entropin för den slumpmÀssiga talgeneratorn getrandom() lÄngsammare, och under vissa konfigurationer kunde det pÄ vissa villkor observeras att det hÀngde sig vid uppstart tills entropipoolen var fylld. Eftersom optimeringen verkligen Àr anvÀndbar, uppstod en diskussion bland utvecklarna dÀr det föreslogs att ÄtgÀrda problemet genom att som standard inaktivera den blockerande lÀget för anropet getrandom() med tillÀgg av en valfri flagga för att vÀnta pÄ entropi, men en sÄdan Àndring kommer att pÄverka kvaliteten pÄ slumpmÀssiga tal i det inledande uppstartssteget.

I den nya versionen har 15794 korrigeringar gjorts av 1974 utvecklare,
patchens storlek Àr 92 MB (förÀndringarna omfattade 13986 filer, 258419 rader kod har lagts till,
599137 rader har tagits bort). Cirka 39% av alla Àndringar i version 5.3
Àr relaterade till enhetsdrivrutiner, cirka 12% av Àndringarna har
att göra med uppdatering av kod specifik för hÄrdvaruarkitekturer, 11%
kopplas till nĂ€tverksstacken, 3 % – filsystem och 3 % till interna
kÀrnunderavdelningar.

Huvud nyheter:

  • Minne och systemtjĂ€nster
    • Funktionaliteten för 'pidfd' har fortsatt att utvecklas, vilket hjĂ€lper till att hantera situationer med Ă„teranvĂ€ndning av PID (pidfd kopplas till en specifik process och Ă€ndras inte, medan PID kan kopplas till en annan process efter att den aktuella processen, som Ă€r kopplad till denna PID, har avslutats). Tidigare lades
      systemanropet pidfd_send_signal() och flaggan CLONE_PIDFD i anropet clone(), vilket möjliggör att fÄ pidfd för anvÀndning i idfd_send_signal(). NÀr man anvÀnder anropet clone() med flaggan CLONE_PIDFD kan det uppstÄ problem med tjÀnstehanterare eller system för tvÄngsavslut av processer vid minnesbrist i Android-plattformen. I detta fall anvÀnds anropet fork() eller clone() utan CLONE_PIDFD.

      I kÀrna 5.3 introducerades systemanropet pidfd_open(), vilket möjliggör att fÄ en verifierad pidfd för en valfri befintlig process skapad utan att anvÀnda anropet clone() med flaggan CLONE_PIDFD. Stöd för polling av pidfd har ocksÄ lagts till genom poll() och epoll(), vilket gör att processhanterare kan övervaka avslutandet av valfria processer utan att oroa sig för race-conditions vid tilldelning av PID till en ny process. Mekanismen för meddelande om avslutandet av en process kopplad till pidfd liknar meddelandet om avslutandet av dess barnprocess;

    • Stödet för belastningsbegrĂ€nsningsmekanismen har lagts till i schemalĂ€ggaren (Utilization clamping), vilket gör att minimum- eller maximumfrekvensintervall kan hĂ„llas beroende pĂ„ aktiva uppgifter pĂ„ CPU. Den presenterade mekanismen pĂ„skyndar uppgifter som direkt pĂ„verkar anvĂ€ndarupplevelsen genom att köra dessa uppgifter Ă„tminstone vid den nedre grĂ€nsen för den "begĂ€rda" frekvensen. LĂ„gt prioriterade uppgifter som inte pĂ„verkar anvĂ€ndarens arbete körs med hjĂ€lp av den övre grĂ€nsen för den "tillĂ„tna" frekvensen. GrĂ€nserna anges genom attributen sched_uclamp_util_min och sched_uclamp_util_max i systemanropet sched_setattr().
    • Stöd för energihanteringsre teknologi har lagts till Intel Speed Select, tillgĂ€nglig pĂ„ vissa servrar med Intel Xeon-processorer. Den angivna teknologin möjliggör att stĂ€lla in prestanda- och bandbreddinstĂ€llningar för olika kĂ€rnor av CPU:n, vilket gör det möjligt att prioritera prestanda för uppgifter som utförs pĂ„ specifika kĂ€rnor, pĂ„ bekostnad av prestandan pĂ„ andra kĂ€rnor;
    • Processer i anvĂ€ndarrummet har beviljats möjligheten att vĂ€nta en kort stund utan att anvĂ€nda cykler med hjĂ€lp av instruktionen umwait. Denna instruktion, tillsammans med instruktionerna umonitor och tpause, kommer att erbjudas i de kommande Intel-chipsen "Tremont", och möjliggör att implementera fördröjningar som Ă€r energieffektiva och inte pĂ„verkar prestandan för andra trĂ„dar nĂ€r Hyper Threading anvĂ€nds;
    • För RISC-V-arkitekturen har stöd för stora minnessidor (huge pages) lagts till;
    • I kprobes-spĂ„rningsmekanismen har möjligheten att avreferera kĂ€rnpointer till anvĂ€ndarrummet lagts till, vilket kan anvĂ€ndas, till exempel, för att utvĂ€rdera innehĂ„llet i strukturer som skickas till systemanrop. Möjligheten att stĂ€lla in kontroller vid laddningssteget har ocksĂ„ lagts till.
    • I konfigurationsfilen har alternativet PREEMPT_RT lagts till för att arbeta i realtid. SjĂ€lva koden för att stödja realtid Ă€nnu inte har lagts till i kĂ€rnan, men framtrĂ€dandet av alternativet Ă€r ett bra tecken pĂ„ att det lĂ„ngvariga arbetet med integrationen Realtime-Preempt-patcharna nĂ€rmar sig sin slutpunkt;
    • Ett systemanrop clone3() har lagts till med en mer utbyggbar version av clone()-grĂ€nssnittet, som tillĂ„ter fler flaggor;
    • En hanterare bpf_send_signal() har lagts till, vilket tillĂ„ter BPF-program att skicka signaler till godtyckliga processer;
    • För perf-hĂ€ndelser i KVM-hypervisorn har en ny mekanism för filtrering av hĂ€ndelser lagts till, vilket gör det möjligt för administratören att bestĂ€mma vilka typer av hĂ€ndelser som Ă€r tillĂ„tna eller otillĂ„tna för övervakning pĂ„ gĂ€stsidan;
    • I verifieringsmekanismen för eBPF-applikationer har möjligheten att hantera program med loopar lagts till, förutsatt att loopens körning Ă€r begrĂ€nsad och inte kan leda till att grĂ€nsen för maximalt antal instruktioner överskrids;
  • Disksubsystem, in- och utmatning och filsystem
    • För filsystemet XFS har möjligheten till flertrĂ„dad traversering av inode implementerats (t.ex. vid kontroll av kvoter). Nya ioctl BULKSTAT och INUMBERS har lagts till, vilket ger tillgĂ„ng till funktioner som tillkommit i den femte utgĂ„van av filsystemformatet, sĂ„som skapelsedatum för inode och möjligheten att stĂ€lla in parametrar för BULKSTAT och INUMBERS för varje grupp AG (Alloceringsgrupper);
    • I Ext4 fĂ„tt stöd för hĂ„l i kataloger (inte bundna block).
      SÀkerstÀlld behandling av flaggan "i" (oförÀnderlig) för öppna filer (förbjuder skrivning i situationer dÀr flaggan har stÀllts in nÀr filen redan var öppen);
    • I Btrfs har snabb implementering av crc32c sĂ€kerstĂ€llts pĂ„ alla arkitekturer;
    • I CIFS har stödet för smbdirect tagits bort frĂ„n experimentellt status. I SMB3 har möjligheten att anvĂ€nda krypteringsalgoritmer i GCM-lĂ€ge lagts till. En ny monteringsalternativ har lagts till för att extrahera parametrar frĂ„n ACE-poster (Access Control Entry). Prestandan för open()-anropet har optimerats;
    • I F2FS har ett alternativ lagts till för att begrĂ€nsa skrĂ€puppsamlaren vid arbete i lĂ€get checkpoint=disable. En ioctl har lagts till för att ta bort blockintervall frĂ„n F2FS, vilket möjliggör justering av partitionsstorleken i farten. Möjligheten att placera en vĂ€xlingsfil i F2FS med direkt in-/utdata har lagts till. Stöd för filinlĂ„sning och blockallokering för liknande filer har lagts till för alla anvĂ€ndare;
    • I grĂ€nssnittet för asynkron in-/utdata io_uring har stöd för asynkrona operationer sendmsg() och recvmsg() lagts till;
    • Filsystemet UBIFS har fĂ„tt stöd för komprimering med hjĂ€lp av zstd-algoritmen och möjlighet till verifiering av signerade filsystemsbilder;
    • I filsystemet Ceph har stöd för SELinux sĂ€kerhetsmĂ€rken för filer lagts till;
    • För NFSv4 har en ny monteringsoption "nconnect=" implementerats för att definiera antalet etablerade anslutningar till servern. Trafiken mellan dessa anslutningar kommer att fördelas med hjĂ€lp av lastbalansering. Dessutom skapar NFSv4-servern nu katalogen /proc/fs/nfsd/clients med information om aktuella klienter, inklusive information om öppna filer;
  • Virtualisering och sĂ€kerhet
    • I kĂ€rnan har en hypervisor för inbyggda enheter lagts till ACRN, som Ă€r skriven med tanke pĂ„ beredskap för att utföra realtidsuppgifter och lĂ€mplighet för anvĂ€ndning i kritiska system. ACRN sĂ€kerstĂ€ller minimala overhead, garanterar lĂ„g latens och adekvat respons för interaktion med hĂ„rdvara. Virtualisering av CPU-resurser, in-/utdata, nĂ€tverksunderhĂ„ll, grafik- och ljudoperationer stöds. ACRN kan anvĂ€ndas för att driva flera isolerade virtuella maskiner i elektroniska styrenheter, instrumentpaneler, bilinformation system, konsument-IoT-enheter och annan inbyggd teknik;
    • I User-mode Linux tillagd tidsresenĂ€rslĂ€get, som möjliggör att sakta ner eller snabba upp tiden i UML:s virtuella miljö för att underlĂ€tta felsökning av tidsrelaterad kod. Dessutom har en parameter lagts till
      time-travel-start, som tillÄter systemklockor att startas frÄn en angiven tid i epoch-format;
    • Nya alternativ för kommandoraden i kĂ€rnan "init_on_alloc" och "init_on_free" har lagts till, som, nĂ€r de anges, aktiverar nollstĂ€llning av allokerade och frigjorda minnesomrĂ„den (fyllning med nollor vid malloc och free), vilket förbĂ€ttrar sĂ€kerheten genom extra overhead vid initialisering;
    • En ny drivrutin har lagts till virtio-iommu , med implementering av en paravirtualiserad enhet som möjliggör att skicka IOMMU-förfrĂ„gningar som ATTACH, DETACH, MAP och UNMAP, över virtio-transporter utan emulering av sidtabeller;
    • En ny drivrutin har lagts till virtio-pmem, som ger Ă„tkomst till lagringsenheter som speglas i det fysiska adressutrymmet, sĂ„som NVDIMM;
    • Möjligheten att koppla kryptografiska nycklar till anvĂ€ndar- eller nĂ€tverksnamnrymder har implementerats (nycklarna blir otillgĂ€ngliga utanför den valda namnrymden), liksom skydd av nycklar med hjĂ€lp av ACL;
    • I kryptosystemet har lagts till stöder en mycket snabb icke-kryptografisk hash-algoritm xxhash, vars hastighet begrĂ€nsas av minnesprestanda;
  • NĂ€tverkssystemet
    • Behandling av IPv4-adresser i intervallet 0.0.0.0/8 har sĂ€kerstĂ€llts, vilket tidigare inte var tillgĂ€ngligt för anvĂ€ndning. Introduktionen av detta subnĂ€t kommer att kan fördela ytterligare 16 miljoner IPv4-adresser;
    • I Netfilter för nftables har lagts till stöder mekanismer för hĂ„rdvaruaccelererad paketfiltrering genom anvĂ€ndning av det som har lagts till i drivrutinerna Flow Block APIHela uppsĂ€ttningar med regler kan överföras till nĂ€tverksadaptrar, inklusive alla kedjor. Aktivering sker genom att knyta flaggan NFT_TABLE_F_HW till tabellen. Enkla metadata för protokoll pĂ„ nivĂ„ 3 och 4 stöds, Ă„tgĂ€rder att acceptera/avvisa, matchningar baserade pĂ„ IP och nĂ€tverksportar för avsĂ€ndare/mottagare samt protokolltyp.
    • Tillagd inbyggt stöd för spĂ„rning av anslutningar för nĂ€tverksbryggor, vilket inte krĂ€ver anvĂ€ndning av det emulerande lagret br_netfilter;
    • I nf_tables har lagts till stöd för SYNPROXY-modulen, som Ă„terspeglar liknande funktionalitet frĂ„n iptables, samt implementering av möjligheten att kontrollera regler baserat pĂ„ specifika alternativ i IPv4-headern;
    • Möjlighet att koppla BPF-program till systemanropen setsockopt() och getsockopt() har lagts till, vilket till exempel gör att man kan koppla sina egna Ă„tkomsthanterare till dessa anrop. Dessutom har en ny hook-lĂ€gespunkt lagts till, vilket möjliggör att anropa BPF-programmet en gĂ„ng per varje RTT-intervall (round-trip-time, pingtid);
    • För IPv4 och IPv6 tillagd en ny mekanism för lagring av routingdata nexthop, avsedd att öka skalbarheten hos routing-tabeller. Tester har visat att det nya systemet laddade in 743 000 rutter i kĂ€rnan pĂ„ endast 4,3 sekunder;
    • För Bluetooth har möjligheten den funktionalitet som behövs för att stödja LE ping;
  • Utrustning
    • Tillagd stöd för x86-kompatibla processorer frĂ„n Zhaoxin, utvecklade som ett resultat av ett samarbetsprojekt mellan VIA Technologies och staden Shanghai. CPU-familjen ZX Ă€r byggd pĂ„ x86-64 Isaiah-arkitekturen, vilket fortsĂ€tter utvecklingen av teknologierna VIA Centaur;
    • I DRM (Direct Rendering Manager)-subsystemet, liksom i grafiska drivrutiner som amdgpu och i915, har stöd lagts till för parsning, bearbetning och sĂ€ndning av HDR-metadata (high dynamic range) via HDMI-porten, vilket gör det möjligt att anvĂ€nda HDR-paneler och skĂ€rmar som kan visa ytterligare ljusstyrkeomrĂ„den;
    • I amdgpu-drivrutinen har grundlĂ€ggande stöd för AMD NAVI GPU (RX5700) lagts till, vilket inkluderar en grundlĂ€ggande drivrutin, kod för interaktion med skĂ€rmar (DCN2), stöd för GFX och berĂ€kningar (GFX10),
      SDMA 5 (System DMA0), strömhanteringsverktyg och multimedia-kodnings-/decodingsverktyg (VCN2). Stödet för kort baserat pÄ GPU Vega12 och Vega20 har ocksÄ förbÀttrats i amdgpu, dÀr ytterligare möjligheter för minneshantering och energiförbrukning har lagts till.
    • I drivrutinen amdkfd (för diskreta GPU:er, som Fiji, Tonga, Polaris) har stöd lagts till för kort baserade pĂ„ GPU VegaM;
    • I DRM-drivrutinen för Intel-grafikkort för Icelake-kretsar genomförd en ny flermodig gamma-korrigering. Stöd för utmatning via DisplayPort i YCbCr4:2:0-format har lagts till. Nya firmwareversioner har lagts till GuC för SKL, BXT, KBL, GLK och ICL. Möjlighet att stĂ€nga av strömmen till skĂ€rmen i asynkront lĂ€ge har implementerats. Tillagd stöd för att spara och Ă„terstĂ€lla renderingskontext för Ironlake-chips (gen5) och gen4 (Broadwater – Cantiga), vilket gör det möjligt att Ă„terstĂ€lla GPU:ns tillstĂ„nd frĂ„n anvĂ€ndarutrymmet nĂ€r man vĂ€xlar mellan olika batchoperationer;
    • I Nouveau-drivrutinen har identifiering av NVIDIA Turing TU116-chipsetet sĂ€kerstĂ€llts;
    • DRM/KMS-drivrutinens funktioner för ARM Komeda-skĂ€rmbearbetare (Mali D71) har utvidgats, stöd har lagts till för skalning, delning/sammanslagning av lager, rotation, fördröjd skrivning, AFBC, SMMU och fĂ€rgkodningsformaten Y0L2, P010, YUV420_8/10BIT;
    • I MSM-drivrutinen har stöd lagts till för GPU:serien A540 Adreno, som anvĂ€nds i Qualcomm-processorer, samt stöd för DSI-kontrollern MSM8998 för Snapdragon 835;
    • Drivrutiner för LCD-paneler frĂ„n Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 och VXT VL050-8048NT-C01 har lagts till;
    • Tillagd drivrutin för att aktivera decoders accelerationsfunktioner
      video, tillgÀnglig i SoC Amlogic Meson;
    • I v3d-drivrutinen (för Broadcom Video Core V GPU, som anvĂ€nds i Raspberry Pi) har det kommit stöd för hantering av berĂ€kningsshader;
    • Tillagd drivrutin för SPI-tangentbord och pekplattor som anvĂ€nds i moderna modeller av Apple MacBook och MacBookPro;
    • Tillagd ytterligare skydd för ioctl-anrop relaterade till floppy-drivrutinen, och sjĂ€lva drivrutinen Ă€r markerad som förĂ€ldralös
      (“orphaned”), vilket innebĂ€r att dess testning har upphört. Drivrutinen finns fortfarande kvar i kĂ€rnan, men dess korrekta funktion garanteras inte. Drivrutinen anses vara förĂ„ldrad, eftersom det Ă€r svĂ„rt att hitta fungerande hĂ„rdvara för att testa den — alla aktuella externa lagringsenheter anvĂ€nder vanligtvis USB-grĂ€nssnitt.
    • Tillagd cpufreq-drivrutin för Raspberry Pi-kort som gör det möjligt att dynamiskt hantera förĂ€ndringar i processorns klockfrekvens;
    • Stöd har lagts till för nya ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP:er + MMA) och Amlogic G12B (4x Cortex-A73 + 2x Cortex-A53), samt kort:
      • 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.

Samtidig Latinamerikansk Stiftelse för Fritt Programvara skapat
en variant fullstĂ€ndigt fritt kĂ€rna 5.3 — Linux-libre 5.3-gnu, rengjord frĂ„n firmware och drivrutiner som innehĂ„ller icke-fri komponenter eller kodavsnitt begrĂ€nsade av tillverkaren. I den nya versionen har laddning av blobar i qcom-drivrutiner, hdcp drm, allegro-dvt och meson-vdec stĂ€ngts av.
Rensningskoden för blobar i drivrutiner och underavsnitt som amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, ljuddrivare för skylake har uppdaterats, liksom dokumentationen för mikroprogrammet.

KĂ€lla: opennet.ru

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster