Linux 6.3 kernel-release

Na twee maanden ontwikkeling presenteerde Linus Torvalds de release van de Linux-kernel 6.3. Een van de meest opvallende veranderingen: het opruimen van oudere ARM-platforms en grafische stuurprogramma's, voortdurende integratie van Rust-taalondersteuning, hwnoise-hulpprogramma, ondersteuning voor rood-zwarte boomstructuren in BPF, BIG TCP-modus voor IPv4, ingebouwde Dhrystone-benchmark, mogelijkheid om uit te schakelen uitvoering in memfd, ondersteuning voor het maken van HID-stuurprogramma's met behulp van BPF, er zijn wijzigingen aangebracht in Btrfs om fragmentatie van blokgroepen te verminderen.

De nieuwe versie bevat 15637 oplossingen van 2055 ontwikkelaars; patchgrootte - 76 MB (de wijzigingen hadden betrekking op 14296 bestanden, 1023183 regels code zijn toegevoegd, 883103 regels zijn verwijderd). Ter vergelijking: de vorige versie bood 16843 oplossingen van 2178 ontwikkelaars; patchgrootte is 62 MB. Ongeveer 39% van alle wijzigingen die in de 6.3-kernel zijn geïntroduceerd, hebben betrekking op apparaatstuurprogramma's, ongeveer 15% van de wijzigingen heeft betrekking op het updaten van code die specifiek is voor hardware-architecturen, 10% heeft betrekking op de netwerkstack, 5% heeft betrekking op bestandssystemen, en 3% heeft betrekking op interne kernelsubsystemen.

Belangrijkste innovaties in kernel 6.3:

  • Geheugen- en systeemservices
    • Er werd een aanzienlijke opschoning van de code uitgevoerd die verband hield met oude en ongebruikte ARM-borden, waardoor het mogelijk werd de grootte van de kernelbroncode met 150 duizend regels te verkleinen. Meer dan 40 oude ARM-platforms zijn verwijderd.
    • De mogelijkheid om stuurprogramma's te maken voor invoerapparaten met een HID-interface (Human Interface Device), geïmplementeerd in de vorm van BPF-programma's, is geïmplementeerd.
    • De overdracht vanuit de Rust-voor-Linux-tak van extra functionaliteit gerelateerd aan het gebruik van de Rust-taal als tweede taal voor het ontwikkelen van stuurprogramma's en kernelmodules is voortgezet. Rust-ondersteuning is standaard niet ingeschakeld en leidt er niet toe dat Rust wordt opgenomen als een vereiste kernelbuild-afhankelijkheid. De functionaliteit die in eerdere releases werd aangeboden, is uitgebreid om de typen Arc (implementatie van pointers met een referentietelling), ScopeGuard (opschonen wanneer ze buiten bereik gaan) en ForeignOwnable (biedt beweging van pointers tussen C- en Rust-code) te ondersteunen. De 'lenen'-module (type 'Cow' en eigenschap 'ToOwned') is verwijderd uit het 'alloc'-pakket. Opgemerkt wordt dat de status van Rust-ondersteuning in de kernel al bijna begint met het accepteren van de eerste modules die in Rust zijn geschreven in de kernel.
    • Linux in de gebruikersmodus (waarbij de kernel als een gebruikersproces wordt uitgevoerd) op x86-64-systemen implementeert ondersteuning voor code geschreven in de Rust-taal. Ondersteuning toegevoegd voor het bouwen van Linux in de gebruikersmodus met behulp van clang met link-time optimalisaties (LTO) ingeschakeld.
    • Hwnoise-hulpprogramma toegevoegd om vertragingen veroorzaakt door hardware op te sporen. Afwijkingen in de uitvoeringstijd van bewerkingen (jitter) worden vastgesteld wanneer de interruptverwerking is uitgeschakeld, groter dan één microseconde per 10 minuten rekenen.
    • Er is een kernelmodule toegevoegd die de Dhrystone-benchmark implementeert, die kan worden gebruikt om de CPU-prestaties te evalueren in configuraties zonder componenten voor gebruikersruimte (bijvoorbeeld in de porteringsfase voor nieuwe SoC's die alleen het laden van de kernel implementeren).
    • Kernelopdrachtregelparameter “cgroup.memory=nobpf” toegevoegd, die de boekhouding van het geheugenverbruik voor BPF-programma's uitschakelt, wat handig kan zijn voor systemen met geïsoleerde containers.
    • Voor BPF-programma's wordt een implementatie van de rood-zwarte boomdatastructuur voorgesteld, die kfunc + kptr (bpf_rbtree_add, bpf_rbtree_remove, bpf_rbtree_first) gebruikt in plaats van een nieuw mappingtype toe te voegen.
    • Het mechanisme van herstartbare sequenties (rseq, herstartbare sequenties) heeft de mogelijkheid toegevoegd om parallelle uitvoeringsidentificatoren (memory-map concurrency ID) over te dragen naar processen, geïdentificeerd met het CPU-nummer. Rseq biedt een manier om snel atomaire bewerkingen uit te voeren, die, als ze worden onderbroken door een andere thread, worden opgeschoond en opnieuw worden geprobeerd.
    • ARM-processors ondersteunen SME 2-instructies (Scalable Matrix Extension).
    • Voor de s390x- en RISC-V RV64-architecturen is ondersteuning voor het “BPF-trampoline”-mechanisme geïmplementeerd, waarmee de overhead kan worden geminimaliseerd bij het overbrengen van oproepen tussen de kernel en BPF-programma's.
    • Op systemen met processors gebaseerd op de RISC-V-architectuur wordt het gebruik van “ZBB”-instructies geïmplementeerd om stringbewerkingen te versnellen.
    • Voor systemen gebaseerd op de LoongArch-instructiesetarchitectuur (gebruikt in de Loongson 3 5000-processors en implementatie van de nieuwe RISC ISA, vergelijkbaar met MIPS en RISC-V), ondersteuning voor kerneladresruimterandomisatie (KASLR), veranderingen in kernelgeheugenplaatsing (verplaatsing ), hardwarepunten zijn geïmplementeerd stop- en kprobe-mechanisme.
    • Het DAMOS-mechanisme (Data Access Monitoring-based Operation Schemes), waarmee u geheugen kunt vrijmaken op basis van de frequentie van geheugentoegang, ondersteunt filters om bepaalde geheugengebieden uit te sluiten van verwerking in DAMOS.
    • De minimale standaard C-bibliotheek van Nolibc biedt ondersteuning voor de s390-architectuur en de Arm Thumb1-instructieset (naast ondersteuning voor ARM, AArch64, i386, x86_64, RISC-V en MIPS).
    • Objtool is geoptimaliseerd om de kernel-assemblage te versnellen en het piekgeheugenverbruik tijdens de assemblage te verminderen (bij het bouwen van de kernel in de “allyesconfig”-modus zijn er nu geen problemen met het geforceerd beëindigen van processen op systemen met 32 ​​GB RAM).
    • Ondersteuning voor kernelassemblage door de Intel ICC-compiler is stopgezet, die al een hele tijd niet meer werkt en niemand heeft de wens geuit om dit te repareren.
  • Schijfsubsysteem, I/O en bestandssystemen
    • tmpfs implementeert ondersteuning voor het toewijzen van gebruikers-ID's van aangekoppelde bestandssystemen, gebruikt om de bestanden van een specifieke gebruiker op een aangekoppelde buitenlandse partitie te matchen met een andere gebruiker op het huidige systeem.
    • Om de fragmentatie van groepen blokken te verminderen, worden in Btrfs de omvang bij het toewijzen van blokken op grootte verdeeld, d.w.z. elke groep blokken is nu beperkt tot kleine (tot 128 KB), middelgrote (tot 8 MB) en grote omvang. De raid56-implementatie is opnieuw vormgegeven. De code voor het controleren van checksums is herwerkt. Er zijn prestatie-optimalisaties doorgevoerd om de verzendbewerking tot tien keer te versnellen door utime voor mappen in de cache op te slaan en alleen opdrachten uit te voeren wanneer dat nodig is. Fiemap-bewerkingen zijn nu drie keer sneller door backlink-controles voor gedeelde gegevens (snapshots) over te slaan. Bewerkingen met metadata zijn met 10% versneld door het optimaliseren van het zoeken naar sleutels in b-boomstructuren.
    • De prestaties van het ext4-bestandssysteem zijn verbeterd doordat meerdere processen gelijktijdig directe I/O-bewerkingen kunnen uitvoeren op vooraf toegewezen blokken met behulp van gedeelde inode-vergrendelingen in plaats van exclusieve vergrendelingen.
    • In f2fs is er gewerkt aan het verbeteren van de leesbaarheid van de code. Belangrijke problemen opgelost met betrekking tot atomaire schrijfbewerkingen en de nieuwe omvangcache.
    • Het EROFS-bestandssysteem (Enhanced Read-Only File System), ontworpen voor gebruik in alleen-lezen partities, implementeert de mogelijkheid om decompressiebewerkingen van gecomprimeerde bestandsinhoud aan de CPU te binden om de latentie bij toegang tot gegevens te verminderen.
    • De BFQ I/O-planner heeft ondersteuning toegevoegd voor geavanceerde draaiende schijfstations, zoals schijven die gebruik maken van meerdere afzonderlijk bestuurde kopstations (Multi Actuators).
    • Ondersteuning voor gegevensversleuteling met behulp van het AES-SHA2-algoritme is toegevoegd aan de NFS-client- en serverimplementatie.
    • Ondersteuning voor het mechanisme voor het uitbreiden van zoekopdrachten is toegevoegd aan het FUSE-subsysteem (Filesystems In User Space), waardoor aanvullende informatie in de zoekopdracht kan worden geplaatst. Op basis van deze functie is het mogelijk om groeps-ID's toe te voegen aan het FS-verzoek, die nodig zijn om rekening te houden met toegangsrechten bij het maken van objecten in de FS (create, mkdir, symlink, mknod).
  • Virtualisatie en beveiliging
    • De KVM-hypervisor voor x86-systemen heeft ondersteuning toegevoegd voor Hyper-V uitgebreide hypercalls en het doorsturen ervan naar een handler die in de hostomgeving in de gebruikersruimte draait. De wijziging maakte het mogelijk om ondersteuning voor geneste lancering van de Hyper-V-hypervisor te implementeren.
    • KVM maakt het eenvoudiger om de toegang van gasten tot PMU-gebeurtenissen (Performance Monitor Unit) met betrekking tot prestatiemeting te beperken.
    • Het memfd-mechanisme, waarmee u een geheugengebied kunt identificeren via een bestandsdescriptor die tussen processen wordt overgedragen, heeft de mogelijkheid toegevoegd om gebieden te creëren waarin het uitvoeren van code verboden is (niet-uitvoerbare memfd) en het onmogelijk is om uitvoeringsrechten in de toekomst in te stellen .
    • Er is een nieuwe prctl-bewerking PR_SET_MDWE toegevoegd die pogingen blokkeert om geheugentoegangsrechten in te schakelen die tegelijkertijd schrijven en uitvoeren toestaan.
    • Bescherming tegen Spectre-klasse-aanvallen is standaard toegevoegd en ingeschakeld, gebaseerd op de automatische IBRS-modus (Enhanced Indirect Branch Restricted Speculation) die wordt voorgesteld in AMD Zen 4-processors, waarmee speculatieve uitvoering van instructies tijdens interruptverwerking, systeemaanroepen en -aanroepen adaptief kan worden toegestaan ​​en uitgeschakeld. contextschakelaars. De voorgestelde bescherming resulteert in een lagere overhead vergeleken met de Retpoline-bescherming.
    • Een kwetsbaarheid opgelost die het omzeilen van de bescherming tegen Spectre v2-aanvallen mogelijk maakt bij gebruik van gelijktijdige multi-threading technologie (SMT of Hyper-Threading) en veroorzaakt door het uitschakelen van het STIBP-mechanisme (Single Thread Indirect Branch Predictors) bij het selecteren van de IBRS-beschermingsmodus.
    • Voor systemen gebaseerd op de ARM64-architectuur is een nieuw assemblagedoel “virtconfig” toegevoegd. Indien geselecteerd, wordt alleen de minimale set kernelcomponenten die nodig zijn om op te starten in virtualisatiesystemen geactiveerd.
    • Voor de m68k-architectuur is ondersteuning toegevoegd voor het filteren van systeemoproepen met behulp van het seccomp-mechanisme.
    • Ondersteuning toegevoegd voor CRB TPM2-apparaten (Command Response Buffer) ingebouwd in AMD Ryzen-processors, gebaseerd op Microsoft Pluton-technologie.
  • Netwerksubsysteem
    • Er is een netlink-interface toegevoegd om de PLCA-sublaag (Physical Layer Collision Vermijding) te configureren, gedefinieerd in de IEEE 802.3cg-2019-specificatie en gebruikt in 802.3cg (10Base-T1S) Ethernet-netwerken die zijn geoptimaliseerd voor het verbinden van Internet of Things-apparaten en industriële systemen. Het gebruik van PLCA verbetert de prestaties in Ethernet-netwerken met gedeelde media.
    • Ondersteuning voor de “wireless extensions” API voor het beheren van WiFi 7 (802.11be) draadloze interfaces is stopgezet omdat deze API niet alle noodzakelijke instellingen dekt. Wanneer u probeert de API "wireless extensions" te gebruiken, die nog steeds wordt ondersteund als een geëmuleerde laag, wordt nu een waarschuwing weergegeven voor de meeste huidige apparaten.
    • Er is gedetailleerde documentatie over de netlink API opgesteld (voor kernontwikkelaars en voor ontwikkelaars van gebruikersruimtetoepassingen). Het hulpprogramma ynl-gen-c is geïmplementeerd om C-code te genereren op basis van de YAML-specificaties van het Netlink-protocol.
    • Ondersteuning voor de optie IP_LOCAL_PORT_RANGE is toegevoegd aan netwerksockets om de configuratie van uitgaande verbindingen via adresvertalers te vereenvoudigen zonder SNAT te gebruiken. Wanneer één IP-adres op meerdere hosts wordt gebruikt, maakt IP_LOCAL_PORT_RANGE het mogelijk om op elke host een ander bereik aan uitgaande netwerkpoorten te gebruiken en pakketten door te sturen op basis van poortnummers op de gateway.
    • Voor MPTCP (MultiPath TCP) is de mogelijkheid geïmplementeerd om gemengde streams te verwerken met behulp van de IPv4- en IPv6-protocollen. MPTCP is een uitbreiding van het TCP-protocol voor het organiseren van de werking van een TCP-verbinding met de gelijktijdige levering van pakketten langs verschillende routes via verschillende netwerkinterfaces die aan verschillende IP-adressen zijn gekoppeld.
    • Voor IPv4 is het mogelijk om de BIG TCP-extensie te gebruiken, waarmee u de maximale TCP-pakketgrootte kunt vergroten tot 4 GB om de werking van snelle interne datacenternetwerken te optimaliseren. Een vergelijkbare toename in pakketgrootte met een headerveldgrootte van 16 bits wordt bereikt door de implementatie van “jumbo”-pakketten, waarvan de grootte in de IP-header is ingesteld op 0, en de werkelijke grootte wordt verzonden in een afzonderlijke 32-bits veld in een aparte bijgevoegde kop.
    • Er is een nieuwe sysctl-parameter default_rps_mask toegevoegd, waarmee u de standaard RPS-configuratie (Receive Packet Steering) kunt instellen, die verantwoordelijk is voor het verdelen van de verwerking van inkomend verkeer over CPU-kernen op het niveau van de interrupthandler.
    • Ondersteuning voor wachtrijverwerkingsdisciplines voor het beperken van CBQ (class-based queuing), ATM (ATM virtuele circuits), dsmark (gedifferentieerde servicemarkering), tcindex (traffic-control index) en RSVP (resource reserveringsprotocol) verkeer is stopgezet. Deze disciplines zijn al lange tijd verlaten en er was niemand bereid hun steun voort te zetten.
  • Uitrusting
    • Alle op DRI1 gebaseerde grafische stuurprogramma's verwijderd: i810 (oudere geïntegreerde Intel 8xx grafische kaarten), mga (Matrox GPU), r128 (ATI Rage 128 GPU, inclusief Rage Fury, XPERT 99 en XPERT 128 kaarten), savage (S3 Savage GPU), sis (Crusty SiS GPU), tdfx (3dfx Voodoo) en via (VIA IGP), die in 2016 verouderd zijn en sinds 2012 niet meer worden ondersteund in Mesa.
    • Oude framebuffer-stuurprogramma's (fbdev) omap1, s3c2410, tmiofb en w100fb verwijderd.
    • Er is een DRM-stuurprogramma toegevoegd voor de VPU-eenheden (Versatile Processing Unit) die zijn geïntegreerd in de Intel Meteor Lake CPU (14e generatie), ontworpen om bewerkingen met betrekking tot computervisie en machinaal leren te versnellen. De driver wordt geïmplementeerd met behulp van het ‘accel’-subsysteem, gericht op het bieden van ondersteuning voor rekenversnellers, die kunnen worden geleverd in de vorm van individuele ASIC’s of als IP-blokken in de SoC en GPU.
    • De i915 (Intel) driver breidt de ondersteuning uit voor afzonderlijke Intel Arc (DG2/Alchemist) grafische kaarten, biedt voorlopige ondersteuning voor Meteor Lake GPU's en bevat ondersteuning voor Intel Xe HP 4tile GPU's.
    • Het amdgpu-stuurprogramma voegt ondersteuning toe voor AdaptiveSync-technologie en de mogelijkheid om de Secure Display-modus met meerdere beeldschermen te gebruiken. Bijgewerkte ondersteuning voor DCN 3.2 (Display Core Next), SR-IOV RAS, VCN RAS, SMU 13.x en DP 2.1.
    • Het msm-stuurprogramma (Qualcomm Adreno GPU) heeft ondersteuning toegevoegd voor de SM8350-, SM8450 SM8550-, SDM845- en SC8280XP-platforms.
    • Het Nouveau-stuurprogramma ondersteunt niet langer oude ioctl-oproepen.
    • Experimentele ondersteuning voor NPU VerSilicon (VeriSilicon Neural Network Processor) is toegevoegd aan het etnaviv-stuurprogramma.
    • Het pata_parport-stuurprogramma is geïmplementeerd voor IDE-schijven die zijn aangesloten via een parallelle poort. Dankzij het toegevoegde stuurprogramma konden we het oude PARIDE-stuurprogramma uit de kernel verwijderen en het ATA-subsysteem moderniseren. Een beperking van de nieuwe driver is de onmogelijkheid om tegelijkertijd een printer en een schijf aan te sluiten via de parallelle poort.
    • Ath12k-stuurprogramma toegevoegd voor draadloze kaarten op Qualcomm-chips die Wi-Fi 7 ondersteunen. Ondersteuning toegevoegd voor draadloze kaarten op RealTek RTL8188EU-chips.
    • Ondersteuning toegevoegd voor 46 borden met processors gebaseerd op ARM64-architectuur, waaronder Samsung Galaxy tab A (2015), Samsung Galaxy S5, BananaPi R3, Debix Model A, EmbedFire LubanCat 1/2, Facebook Greatlakes, Orange Pi R1 Plus, Tesla FSD en ook apparaten gebaseerd op SoC Qualcomm MSM8953 (Snapdragon 610), SM8550 (Snapdragon 8 Gen 2), SDM450 en SDM632, Rockchips RK3128 TV box, RV1126 Vision, RK3588, RK3568, RK3566, RK3588 en RK3328, TI K3 (AM642/AM654 68 69/ AMXNUMX/AMXNUMX).

Tegelijkertijd vormde de Latin American Free Software Foundation een versie van de volledig vrije kernel 6.3 - Linux-libre 6.3-gnu, ontdaan van elementen van de firmware en stuurprogramma's die niet-vrije componenten of delen van code bevatten, waarvan de reikwijdte beperkt door de fabrikant. In release 6.3 zijn blobs opgeschoond in de nieuwe stuurprogramma's ath12k, aw88395 en peb2466, evenals in de nieuwe devicetree-bestanden voor qcom-apparaten gebaseerd op de AArch64-architectuur. Bijgewerkte blob-opschoningscode in stuurprogramma's en subsystemen amdgpu, xhci-rcar, qcom-q6v5-pas, sp8870, av7110, evenals in stuurprogramma's voor DVB-kaarten met softwaredecodering en in vooraf gecompileerde BPF-bestanden. Het opschonen van mga-, r128-, tm6000-, cpia2- en r8188eu-stuurprogramma's is gestopt sinds ze uit de kernel zijn verwijderd. Verbeterde opschoning van i915-stuurprogrammablobs.

Bron: opennet.ru

Voeg een reactie