Linux 5.3 kernel-release

Na twee maanden ontwikkeling, Linus Torvalds ingediend kernel-release Linux 5.3. Een van de meest opvallende veranderingen: ondersteuning voor AMD Navi GPU's, Zhaoxi-processors en Intel Speed ​​Select-energiebeheertechnologie, de mogelijkheid om umwait-instructies te gebruiken om te wachten zonder cycli te gebruiken,
'utilization klemming'-modus die de interactiviteit voor asymmetrische CPU's vergroot, de pidfd_open systeemoproep, de mogelijkheid om IPv4-adressen van het 0.0.0.0/8-subnet te gebruiken, de mogelijkheid van nftables hardwareversnelling, HDR-ondersteuning in het DRM-subsysteem, integratie van de ACRN hypervisor.

В Aankondiging nieuwe release herinnerde Linus alle ontwikkelaars aan de hoofdregel van kernelontwikkeling: hetzelfde gedrag handhaven voor componenten in de gebruikersruimte. Wijzigingen aan de kernel mogen op geen enkele manier reeds lopende applicaties kapot maken of tot regressies op gebruikersniveau leiden. In dit geval kan een overtreding van het gedrag niet alleen een verandering in de ABI, het verwijderen van verouderde code of het verschijnen van fouten veroorzaken, maar ook de indirecte impact van nuttige verbeteringen die correct werken. Als illustratief voorbeeld was er weggegooid nuttig optimalisatie in Ext4-code, waardoor het aantal schijftoegangen wordt verminderd door het vooraf lezen van de inodetabel voor kleine I/O-verzoeken uit te schakelen.

De optimalisatie leidde ertoe dat, als gevolg van een afname van de schijfactiviteit, de entropie voor de getrandom() generator voor willekeurige getallen langzamer begon te accumuleren en dat in sommige configuraties, onder bepaalde omstandigheden, bevriezingen konden worden waargenomen tijdens het laden totdat de entropiepool was gevuld. gevuld. Omdat de optimalisatie erg nuttig is, ontstond er een discussie onder ontwikkelaars waarin werd voorgesteld het probleem op te lossen door de standaard blokkeermodus van de getrandom()-aanroep uit te schakelen en een optionele vlag toe te voegen om op entropie te wachten. Een dergelijke verandering zou echter invloed hebben op de kwaliteit van de willekeurige getallen in de beginfase van het laden.

De nieuwe versie bevat 15794 oplossingen van 1974 ontwikkelaars,
patchgrootte - 92 MB (wijzigingen hadden invloed op 13986 bestanden, 258419 regels code toegevoegd,
599137 rijen verwijderd). Ongeveer 39% van alle gepresenteerd in 5.3
wijzigingen hebben betrekking op apparaatstuurprogramma's; bij ongeveer 12% van de wijzigingen is dit het geval
houding ten opzichte van het updaten van code die specifiek is voor hardware-architecturen, 11%
gerelateerd aan de netwerkstack, 3% aan bestandssystemen en 3% aan intern
kernel-subsystemen.

De belangrijkste innovaties:

  • Geheugen- en systeemservices
    • Voortdurende ontwikkeling van 'pidfd'-functionaliteit om te helpen bij het omgaan met PID-hergebruiksituaties (pidfd is geassocieerd met een specifiek proces en verandert niet, terwijl een PID kan worden geassocieerd met een ander proces nadat het huidige proces dat aan die PID is gekoppeld, is beëindigd). Het was eerder aan de kernel toegevoegd
      de systeemaanroep pidfd_send_signal() en de vlag CLONE_PIDFD in de aanroep clone() om een ​​pidfd te verkrijgen voor gebruik in idfd_send_signal(). Het gebruik van clone() met de vlag CLONE_PIDFD kan problemen veroorzaken met servicemanagers of het gedwongen beëindigingssysteem van het Android-platform als er geen geheugen meer is. In dit geval wordt een aanroep naar fork() of clone() zonder CLONE_PIDFD gebruikt om te starten.

      Kernel 5.3 introduceerde de systeemaanroep pidfd_open(), waarmee u een controleerbare pidfd kunt verkrijgen voor een willekeurig bestaand proces dat niet is gemaakt door clone() aan te roepen met de vlag CLONE_PIDFD. Er is ook ondersteuning toegevoegd voor pidfd-polling met behulp van poll() en epoll(), waarmee procesmanagers de beëindiging van willekeurige processen kunnen volgen zonder angst voor een race condition als een PID aan een nieuw proces wordt toegewezen. Het mechanisme voor het melden wanneer een proces dat verband houdt met pidfd is beëindigd, is vergelijkbaar met het melden wanneer het onderliggende proces is beëindigd;

    • Ondersteuning voor het mechanisme voor het vastzetten van ladingen is toegevoegd aan de taakplanner (Gebruik klemmen), waardoor u zich kunt houden aan het minimale of maximale frequentiebereik, afhankelijk van de taken die actief zijn op de CPU. Het gepresenteerde mechanisme versnelt taken die rechtstreeks van invloed zijn op de kwaliteit van de gebruikerservaring door deze taken op zijn minst aan de onderkant van de “gevraagde” frequentie uit te voeren. Taken met een lage prioriteit die geen invloed hebben op het werk van de gebruiker, worden gestart met behulp van de bovengrens van de “toegestane” frequentie. Limieten worden ingesteld via de kenmerken sched_uclamp_util_min en sched_uclamp_util_max in de systeemaanroep sched_setattr().
    • Ondersteuning toegevoegd voor energiebeheertechnologie Intel Snelheidsselectie, beschikbaar op bepaalde servers met Intel Xeon-processors. Met deze technologie kunt u prestatie- en doorvoerinstellingen voor verschillende CPU-kernen instellen, waardoor u prioriteit kunt geven aan de prestaties van taken die op bepaalde kernen worden uitgevoerd, waardoor de prestaties op andere kernen worden opgeofferd;
    • Processen in de gebruikersruimte toegekend de mogelijkheid om een ​​korte tijd te wachten zonder gebruik te maken van lussen met behulp van de umwait-instructie. Deze instructie, samen met de umonitor- en tpause-instructies, zal worden aangeboden in Intel's aankomende "Tremont"-chips, en zal de implementatie van vertragingen mogelijk maken die energie-efficiënt zijn en geen invloed hebben op de prestaties van andere threads bij gebruik van Hyper Threading;
    • Voor de RISC-V-architectuur is ondersteuning voor grote geheugenpagina's toegevoegd;
    • Het kprobes-traceringsmechanisme heeft de mogelijkheid toegevoegd om kernelwijzers te derefereren naar gebruikersruimte, wat bijvoorbeeld kan worden gebruikt om de inhoud te evalueren van structuren die worden doorgegeven aan systeemaanroepen. De mogelijkheid om controles te installeren tijdens de opstartfase is ook toegevoegd.
    • Optie PREEMPT_RT toegevoegd aan het configuratiebestand voor realtime werking. De code zelf ter ondersteuning van de real-time modus is nog niet aan de kernel toegevoegd, maar het verschijnen van de optie is een goed teken dat het epos op de lange termijn integratie Realtime-Preempt-patches naderen hun voltooiing;
    • De systeemaanroep clone3() toegevoegd met de implementatie van een meer uitbreidbare versie van de clone()-interface, waarmee een groter aantal vlaggen kan worden gespecificeerd;
    • Handler bpf_send_signal() toegevoegd, waardoor BPF-programma's signalen naar willekeurige processen kunnen sturen;
    • Voor perf-gebeurtenissen in de KVM-hypervisoromgeving is een nieuw gebeurtenisfiltermechanisme toegevoegd, waardoor de beheerder kan bepalen welke soorten gebeurtenissen wel of niet zijn toegestaan ​​voor monitoring aan de kant van het gastsysteem;
    • De mogelijkheid om programma's met lussen te verwerken is toegevoegd aan het eBPF-applicatieverificatiemechanisme als de uitvoering van de lus beperkt is en niet kan leiden tot overschrijding van de limiet van het maximale aantal instructies;
  • Schijfsubsysteem, I/O en bestandssystemen
    • Het XFS-bestandssysteem ondersteunt nu multi-threaded inode-bypass (bijvoorbeeld bij het controleren van quota's). Nieuwe ioctls BULKSTAT en INUMBERS zijn toegevoegd, die toegang bieden tot de functies die verschenen in de vijfde editie van het FS-formaat, zoals de inode-geboortetijd en de mogelijkheid om de BULKSTAT- en INUMBERS-parameters in te stellen voor elke AG-groep (Allocation Groups);
    • In Ext4 ondersteuning toegevoegd lege plekken in mappen (niet-gekoppelde blokken).
      Verwerking voorzien vlag “i” (onveranderlijk) voor geopende bestanden (schrijven is verboden in een situatie waarin de vlag is ingesteld op een moment dat het bestand al geopend was);

    • Btrfs biedt een definitie van een snelle implementatie van crc32c op alle architecturen;
    • In CIFS is de code voor smbdirect-ondersteuning verwijderd als experimentele ontwikkeling. SMB3 heeft de mogelijkheid toegevoegd om cryptografische algoritmen in de GCM-modus te gebruiken. Een nieuwe mount-optie toegevoegd om modusparameters uit ACE-items (Access Control Entry) te extraheren. De prestaties van de open()-aanroep geoptimaliseerd;
    • Een optie toegevoegd aan F2FS om de garbage collector te beperken wanneer deze in de checkpoint=disable-modus draait. Ioctl toegevoegd om blokbereiken uit F2FS te verwijderen, waardoor directe aanpassingen van de partitiegrootte mogelijk zijn. De mogelijkheid toegevoegd om een ​​wisselbestand in F2FS te plaatsen om directe I/O te bieden. Ondersteuning toegevoegd voor het vastzetten van een bestand en het toewijzen van blokken voor vergelijkbare bestanden voor alle gebruikers;
    • Ondersteuning toegevoegd voor asynchrone bewerkingen sendmsg() en recvmsg() aan de interface voor asynchrone invoer/uitvoer io_uring;
    • Ondersteuning voor compressie met behulp van het zstd-algoritme en de mogelijkheid om ondertekende FS-images te verifiëren zijn toegevoegd aan het UBIFS-bestandssysteem;
    • Ceph FS ondersteunt nu SELinux-beveiligingslabels voor bestanden;
    • Voor NFSv4 is een nieuwe mount-optie “nconnect=” geïmplementeerd, die het aantal verbindingen met de server bepaalt. Het verkeer tussen deze verbindingen wordt verdeeld via load-balancing. Bovendien maakt de NFSv4-server nu een directory /proc/fs/nfsd/clients aan met informatie over huidige clients, inclusief informatie over de bestanden die ze hebben geopend;
  • Virtualisatie en beveiliging
    • De kernel bevat een hypervisor voor ingebedde apparaten ACRN, dat is geschreven met het oog op gereedheid voor realtime taken en geschiktheid voor gebruik in bedrijfskritische systemen. ACRN biedt minimale overhead, garandeert een lage latentie en voldoende reactievermogen bij interactie met apparatuur. Ondersteunt virtualisatie van CPU-bronnen, I/O, netwerksubsysteem, grafische weergave en geluidsbewerkingen. ACRN kan worden gebruikt om meerdere geïsoleerde virtuele machines te laten draaien in elektronische besturingseenheden, dashboards, auto-informatiesystemen, IoT-apparaten voor consumenten en andere ingebedde technologie;
    • In gebruikersmodus Linux toegevoegd Tijdreismodus, waarmee u de tijd in een virtuele UML-omgeving kunt vertragen of versnellen, zodat u gemakkelijker tijdgerelateerde code kunt debuggen. Bovendien is er een parameter toegevoegd
      tijdreizen-start, waardoor de systeemklok kan starten vanaf een bepaald moment in tijdperkformaat;

    • Er zijn nieuwe kernelopdrachtregelopties “init_on_alloc” en “init_on_free” toegevoegd. Indien gespecificeerd, wordt het op nul zetten van toegewezen en vrijgemaakte geheugengebieden ingeschakeld (vullen met nullen voor malloc en free), wat een verhoogde beveiliging mogelijk maakt vanwege extra initialisatieoverhead;
    • Nieuwe bestuurder toegevoegd virtueel-iommu met de implementatie van een geparavirtualiseerd apparaat waarmee je IOMMU-verzoeken zoals ATTACH, DETACH, MAP en UNMAP via het virtio-transport kunt verzenden zonder geheugenpaginatabellen te emuleren;
    • Nieuwe bestuurder toegevoegd virtueel-pmem, die de toegang vertegenwoordigt tot opslagapparaten die zijn toegewezen aan de fysieke adresruimte, zoals NVDIMM's;
    • De mogelijkheid geïmplementeerd om cryptografische sleutels aan een gebruikers- of netwerknaamruimte te koppelen (sleutels worden ontoegankelijk buiten de geselecteerde naamruimte), en om sleutels te beschermen met behulp van ACL's;
    • Naar het crypto-subsysteem toegevoegd ondersteuning voor een zeer snel niet-cryptografisch hash-algoritme xxhash, waarvan de snelheid afhangt van de geheugenprestaties;
  • Netwerksubsysteem
    • Verwerking van IPv4-adressen in het bereik 0.0.0.0/8 ingeschakeld, wat voorheen niet beschikbaar was voor gebruik. Introductie van dit subnet zal toestaan nog eens 16 miljoen IPv4-adressen distribueren;
    • In Netfilter voor nftables toegevoegd ondersteuning voor hardwareversnellingsmechanismen voor pakketfiltering door het gebruik van toegevoegde stuurprogramma's Flow Block-API. Aan de zijkant van netwerkadapters kunnen hele regelstabellen met alle ketens worden geplaatst. Inschakelen gebeurt door de vlag NFT_TABLE_F_HW aan de tabel te binden. Ondersteunt eenvoudige Layer 3- en Layer 4-protocolmetadata, acceptatie-/weigeracties, toewijzingen per IP en zender/ontvanger-netwerkpoorten en protocoltype;
    • Toegevoegd ingebouwde ondersteuning voor het volgen van verbindingen voor netwerkbruggen, waarvoor het gebruik van de br_netfilter-emulatielaag niet vereist is;
    • In nf_tables toegevoegd ondersteuning voor de SYNPROXY-module, die vergelijkbare functionaliteit repliceert van iptables, en de mogelijkheid om regels in te checken voor individuele opties in de IPv4-header is ook geïmplementeerd;
    • De mogelijkheid toegevoegd om BPF-programma's aan de systeemaanroepen setsockopt() en getockopt() te koppelen, waardoor u bijvoorbeeld uw eigen toegangshandlers aan deze aanroepen kunt koppelen. Bovendien is er een nieuw oproeppunt (hook) toegevoegd, waarmee u voor elk RTT-interval (retourtijd, ping-tijd) één keer een oproep naar het BPF-programma kunt organiseren;
    • Voor IPv4 en IPv6 toegevoegd nieuw nexthop-routeringsgegevensopslagmechanisme gericht op het vergroten van de schaalbaarheid van routeringstabellen. Uit tests bleek dat bij gebruik van het nieuwe systeem in slechts 743 seconden een set van 4.3 routes in de kernel werd geladen;
    • Voor Bluetooth geïmplementeerd functionaliteit vereist om LE-ping te ondersteunen;
  • Uitrusting
    • Toegevoegd ondersteuning voor de x86-compatibele processors van het bedrijf Zhaoxin, ontwikkeld als resultaat van een gezamenlijk project tussen VIA Technologies en de gemeente Shanghai. De ZX CPU-familie is gebouwd op de x86-64 Isaiah-architectuur en zet de ontwikkeling van technologie voort VIA Centaur;
    • Het DRM-subsysteem (Direct Rendering Manager), evenals de grafische stuurprogramma's amdgpu en i915, hebben ondersteuning toegevoegd voor het parseren, verwerken en verzenden van HDR-metadata (hoog dynamisch bereik) via de HDMI-poort, waardoor het gebruik van HDR-panelen en schermen die in staat zijn om weergave van extra helderheidsbereiken;
    • Het amdgpu-stuurprogramma heeft initiële ondersteuning toegevoegd voor AMD NAVI GPU (RX5700), waaronder het basisstuurprogramma, scherminteractiecode (DCN2), GFX en computerondersteuning (GFX10),
      SDMA 5 (systeem DMA0), energiebeheer en multimedia-encoders/decoders (VCN2). amdgpu verbetert ook de ondersteuning voor kaarten gebaseerd op Vega12 en Vega20 GPU's, waarvoor extra geheugen- en energiebeheermogelijkheden zijn toegevoegd;

    • Ondersteuning toegevoegd voor kaarten gebaseerd op VegaM GPU's aan het amdkfd-stuurprogramma (voor afzonderlijke GPU's, zoals Fiji, Tonga, Polaris);
    • In het DRM-stuurprogramma voor Intel-videokaarten voor Icelake-chips geïmplementeerd nieuwe multi-segment gammacorrectiemodus. De mogelijkheid toegevoegd om via DisplayPort uit te voeren in het YCbCr4:2:0-formaat. Nieuwe firmware toegevoegd GuC voor SKL, BXT, KBL, GLK en ICL. De mogelijkheid om de schermvoeding in de asynchrone modus uit te schakelen is geïmplementeerd. Toegevoegd ondersteuning voor het opslaan en herstellen van de weergavecontext voor Ironlake (gen5) en gen4 (Broadwater - Cantiga) chips, waarmee u de GPU-status vanuit de gebruikersruimte kunt herstellen wanneer u van de ene batchbewerking naar de andere gaat;
    • De Nouveau-driver zorgt voor detectie van de NVIDIA Turing TU116-chipset;
    • De mogelijkheden van het DRM/KMS-stuurprogramma voor ARM Komeda-schermversnellers (Mali D71) zijn uitgebreid, ondersteuning voor schaling, lagen splitsen/samenvoegen, rotatie, uitgesteld schrijven, AFBC, SMMU en kleurcoderingsformaten Y0L2, P010, YUV420_8/10BIT zijn toegevoegd;
    • De MSM-driver voegt ondersteuning toe voor de A540 GPU Adreno-serie die wordt gebruikt in Qualcomm-processors, evenals ondersteuning voor de MSM8998 DSI-controller voor Snapdragon 835;
    • Stuurprogramma's toegevoegd voor LCD-panelen Samsung S6E63M0, Armadeus ST0700, EDT ETM0430G0DH6, OSD101T2045-53TS,
      Evervision VGG804821, FriendlyELEC HD702E, KOE tx14d24vm1bpa, TFC S9700RTWV43TR-01B, EDT ET035012DM6 en VXT VL050-8048NT-C01;

    • toegevoegd driver voor het inschakelen van decoderingsversnellingstools
      video's beschikbaar in Amlogic Meson SoC;

    • In de v3d driver (voor de Broadcom Video Core V GPU gebruikt in de Raspberry Pi) verscheen ondersteunen het verzenden van computershaders;
    • toegevoegd stuurprogramma voor SPI-toetsenborden en trackpads die worden gebruikt in moderne modellen van Apple MacBook- en MacBookPro-laptops;
    • Toegevoegd extra bescherming voor ioctl-oproepen die verband houden met het diskettestuurprogramma, en het stuurprogramma zelf wordt gemarkeerd als niet onderhouden
      (“wees”), wat de beëindiging van de tests impliceert. Het stuurprogramma is nog steeds in de kernel opgeslagen, maar de juiste werking ervan kan niet worden gegarandeerd. Het stuurprogramma wordt als verouderd beschouwd, omdat het moeilijk is om werkende apparatuur te vinden om het te testen - alle huidige externe schijven gebruiken in de regel de USB-interface.

    • toegevoegd cpufreq-stuurprogramma voor Raspberry Pi-borden, waarmee u veranderingen in de processorfrequentie dynamisch kunt regelen;
    • Ondersteuning toegevoegd voor nieuwe ARM SoC Mediatek mt8183 (4x Cortex-A73 + 4x Cortex-A53), TI J721E (2x Cortex-A72 + 3x Cortex-R5F + 3 DSP's + MMA) en Amlogic G12B (4x Cortex-A73 + 2x Cortex- A53 ), evenals borden:
      • Purisme Librem5,
      • Aspeed BMC,
      • MicrosoftOlympus 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),
      • HalloHope RZ/G2M,
      • NXP LS1021A-TSN.

Tegelijkertijd de Latin American Free Software Foundation gevormd
вариант volledig gratis kernel 5.3 - Linux-libre 5.3-gnu, ontdaan van firmware- en driverelementen die niet-vrije componenten of codesecties bevatten, waarvan de reikwijdte wordt beperkt door de fabrikant. In de nieuwe release is het laden van blobs uitgeschakeld in de qcom-, hdcp drm-, allegro-dvt- en meson-vdec-stuurprogramma's.
Bijgewerkte blob-opschooncode in stuurprogramma's en subsystemen amdgpu, i915, netx, r8169, brcmfmac, rtl8188eu, adreno, si2157, pvrusb2, touchscreen_dmi, geluidsstuurprogramma voor skylake, evenals in de microcodedocumentatie.

Bron: opennet.ru

Voeg een reactie