Na twee maanden ontwikkeling heeft Linus Torvalds gepresenteerd de release van de Linux-kern 6.14. Enkele van de meest opmerkelijke wijzigingen zijn: de ntsync-driver met synchronisatiemechanismen van Windows NT, de instelling van belastingbalancering van leesbewerkingen in Btrfs RAID1, ondersteuning voor reflink in XFS in realtime-modus, de mogelijkheid van niet-cache-geheugeninvoer en -uitvoer, dmem cgroup voor geheugenbeperkingen van GPU's, gebruik van io_uring in FUSE, delegatie van attributen in NFS, ondersteuning voor atomische schrijvers in Device mapper, versnelling van symbolische links, beheer van de mogelijkheid om scripts uit te voeren, ondersteuning voor Qualcomm Snapdragon 8 Elite-chips, en een driver voor de NPU van AMD.
In de nieuwe versie zijn 12115 correcties aangebracht door 1984 ontwikkelaars, de patchgrootte is 39 MB (de wijzigingen betroffen 10170 bestanden, 531586 regels code werden toegevoegd, en 235999 regels verwijderd). In de vorige release waren er 14172 correcties van 2086 ontwikkelaars, met een patchgrootte van 46 MB. Ongeveer 41% van alle wijzigingen in 6.14 heeft betrekking op apparaatspecifieke drivers, ongeveer 13% van de wijzigingen is gerelateerd aan updates van code voor specifieke hardware-architecturen, 14% heeft betrekking op het netwerkstack, 7% op bestandssystemen en 4% op interne subsystemen van de kern.
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- In het bestandssysteem Btrfs in de testbuild Canary, en is onlangs overgebracht naar de release. Om het te activeren, moet u naar het gedeelte flags chrome://flags gaan, het vlag 'Filesystem API in Incognito' zoeken via de zoekfunctie en deze inschakelen. Na het opnieuw opstarten van de browser zal de incognito-modus volledig functioneren. ondersteuning voor nieuwe methoden voor het balanceren van leesbewerkingen tussen de opslagapparaten die deel uitmaken van het RAID1-array. Naast de eerder werkende belastingverdeling op basis van proces-ID's (pid), worden in de nieuwe versie drie nieuwe modus voor balanceren aangeboden: ‘rotation’ (gelijke belastingverdeling over alle opslagapparaten, deze modus is standaard ingeschakeld); ‘latency’ (verdeling met inachtneming van latentie, wat nuttig kan zijn bij storingen of onbetrouwbare werking van apparaten); devid (handmatig beheer). Voor het wijzigen van de balansmodus is toegevoegd de interface /sys/fs/btrfs/<UUID>/read_policy. Onder andere wijzigingen in Btrfs – implementatie ioctl FS_IOC_READ_VERITY_METADATA.
- Toegevoegd de modus van niet-cache-geheugeninvoer en -uitvoer, waarbij gegevens onmiddellijk uit de pagina-cache worden verwijderd zodra de lees- of schrijfbewerkingen zijn voltooid. Deze wijziging kan nuttig zijn bij het gebruik van zeer snelle opslagapparaten, waarbij het cachen van bewerkingen in het RAM overbodig is. Voor dergelijke apparaten stelt de nieuwe modus in staat om overmatig geheugenverbruik door de pagina-cache te voorkomen zonder gebruik te maken van een gecompliceerde directe I/O API.
- In fsnotify, het mechanisme voor het volgen van veranderingen in FS, is toegevoegd een nieuw FS_PRE_ACCESS-evenement, dat wordt gegenereerd in de fase vóór het aanroepen van de Inhalte van het bestand. Het evenement wordt synchroon verwerkt, d.w.z. de kernel verzendt het evenement en wacht op een antwoord. Als het antwoord is ontvangen, wordt de operatie uitgevoerd; als er een fout optreedt, retourneert de system call een foutcode naar de gebruikersruimte. Met FS_PRE_ACCESS kan in de gebruikersruimte bijvoorbeeld het invullen van een bestand worden georganiseerd naarmate de gegevens in de langzame opslag beschikbaar komen.
- De FUSE-subsystem, die het mogelijk maakt om implementaties van bestandssystemen in de gebruikersruimte te creëren, is toegevoegd. ondersteuning voor gegevensuitwisseling tussen de kernel en de handler in de gebruikersruimte met gebruik van de invoer/uitvoermechanisme io_uring. Deze wijziging verhoogt de prestaties van FUSE door het verminderen van contextwisselingen tussen de kernel en de gebruikersruimte.
- Voor het bestandssysteem XFS is toegevoegd de mogelijkheid het gebruik van omgekeerde mapping (rmap, reverse-mapping) in de modus voor voorspelbare vertragingen ("realtime device"). Omgekeerde mapping maakt het mogelijk om te bepalen voor welk bestand de opgegeven blok op het opslagapparaat wordt gebruikt. Met rmap is in XFS voor de realtime-modus ondersteuning gerealiseerd voor de reflink-operatie, waarmee kopieën van bestanden kunnen worden gemaakt door het klonen van de metadata van het bestand en het maken van een verwijzing naar reeds bestaande gegevens zonder ze daadwerkelijk te kopiëren.
- In VFS geïmplementeerd caching van de grootte van symbolische links, waardoor de uitvoering van de readlink-operatie (in de test met /initrd.img in ext4) met 1.5% werd versneld. Caching is ingeschakeld in de FS ext4 en tmpfs.
- In de implementatie van NFSv4.2 is ondersteuning toegevoegd voor het delegeren van bestandsattributen, dat het mogelijk maakt om dergelijke bestandsattributen, zoals de wijzigingstijd (mtime), aan de zijde van de NFS-client te beheren zonder dat het nodig is om de wijzigingen terug te zetten naar de server. In NFS is ook de ondersteuning voor het protocol verbeterd "LOCALIO" dat het mogelijk maakt om te bepalen of de NFS-client en de server zich op hetzelfde host bevinden, zodat de bijbehorende optimalisaties kunnen worden toegepast, zoals het gebruik van directe invoer/uitvoer (Direct I/O) door de client.
- De efficiëntie van het gebruik in DRM (Direct Rendering Manager) van hardwaremechanismen voor het manipuleren van geheugenregions die worden gebruikt voor het opslaan van framebuffercomponenten (hardware planes) is verhoogd; de prestaties van leesoperaties in de bestandssystemen NETFS, CIFS en AFS (Andrew File System).
- In Squashfs ingeschakeld De modus voor directe bloklading in de pagina-cache (SQUASHFS_FILE_DIRECT) maakt het mogelijk om zonder afzonderlijke read_page-cache te werken. Deze wijziging heeft de geheugenvereisten tijdens het gebruik van Squashfs verminderd.
- In de systeemaanroep statx() is geïmplementeerd de vlag STATX_DIO_READ_ALIGN, die de vereiste uitlijning voor bestandsleesoperaties bepaalt.
- In het bestandssysteem Bcachefs is bijgewerkt en is gestabiliseerd het schijfstructuurformaat. Verdere wijzigingen in het formaat worden als optioneel beschouwd en zullen in de vorm van aanvullende opties worden gerealiseerd. De snelheid van integriteitscontroles van het FS is aanzienlijk verhoogd. Bovendien is in Bcachefs de werking in de alleen-lezen modus verbeterd; problemen die leiden tot toegang tot geheugen na vrijgave (use after free) zijn opgelost; problemen met reflink-verwijzingen in fsck zijn verholpen; de verwerking van transactieherstart is gecorrigeerd.
- De module md-linear, bedoeld voor het samenvoegen van blokapparaten, is teruggebracht. Deze module was eerder verouderd en verwijderd uit kernel 6.8, maar bleek gewild te zijn, en is daarom nu hersteld. Bestandssystemen F2FS en SQUASHFS zijn overgestapt op het gebruik van
- (page folios). folio's van geheugen In de driver
- null_blk is de attribuut 'rotational' geïmplementeerd, instelbaar via configfs, waarmee de werking met een apparaat op basis van draaiende schijven kan worden gesimuleerd voor vereenvoudigde tests van kernelfuncties. In het Device mapper-systeem en in de modules dm-mirror, dm-io, dm-table, dm-linear, dm-stripe en dm-raid1
- is ondersteuning voor atomische schrijfbewerkingen toegevoegd. geïmplementeerd de integratie van de driver
- Geheugen en systeemdiensten
- Voltooid ntsync , die het symbolische apparaat /dev/ntsync en een set primitieve synchronisatie-instructies, gebruikt in de kernel van Windows NT, implementeert. De implementatie van dergelijke primitieve instructies op kernel-niveau biedt aanzienlijke prestatieverbeteringen voor Windows-games die via Wine worden uitgevoerd. De prestatiewinst wordt bereikt door de overhead te verminderen die samenhangt met het gebruik van RPC in de gebruikersruimte. Het creëren van een aparte driver voor de Linux-kernel is te wijten aan de moeilijkheid om de NT-synchronisatie-API correct te implementeren bovenop bestaande primitieve instructies in de kernel.Een nieuwe cgroup-controller is toegevoegd
- DMEM DMEM voor het gescheiden bijhouden van het geheugen van apparaten zoals GPU's. DMEM maakt het mogelijk om aparte cgroups voor verschillende taken die met de GPU werken te creëren, zodat ze onafhankelijk van elkaar kunnen worden uitgevoerd. Deze nieuwe functie lost het probleem op van geforceerde beëindiging van GPU-operaties bij gebrek aan beschikbare geheugen, door het bijhouden van het weerkaatste geheugen van de GPU en het door de CPU gebruikte geheugen in aparte cgroups.
- Er zijn optimalisaties aangebracht voor het schalen van de flush-operatie van de TLB (Translation Lookaside Buffer), die wordt gebruikt om de conversie van virtuele adressen naar fysieke adressen te versnellen. De toegevoegde optimalisaties komen neer op uitgesteld bijwerken van bepaalde gegevensstructuren tijdens contextwisselingen, wat de prestaties verbetert bij sommige tests.
- De efficiëntie van het gebruik in DRM (Direct Rendering Manager) van hardwaremechanismen voor het manipuleren van geheugenregions die worden gebruikt voor het opslaan van framebuffercomponenten (hardware planes) is verhoogd; prestatie van het mechanisme MGLRU (Multi-Generational LRU), dat wordt gebruikt om te bepalen welke geheugenpagina’s in gebruik zijn en welke naar de swapruimte kunnen worden verplaatst.
- Voortgezet de wijzigingen uit de tak Rust-for-Linux, gerelateerd aan het gebruik van de programmeertaal Rust als tweede taal voor het ontwikkelen van stuurprogramma's en kernelmodules (ondersteuning voor Rust is standaard niet ingeschakeld en leidt niet tot de opname van Rust in de verplichte bouwafhankelijkheden van de kernel). Er is de mogelijkheid toegevoegd om de macro ‘derive(CoercePointee)’ in de kerncode te gebruiken, waarmee slimme pointers met trait-objecten kunnen worden gebruikt. In de kernel opgenomen Rust-wrappers voor PCI, platforms, Open Firmware, symbolische apparaten en enkele in- en uitvoerfuncties. Greg Kroah-Hartman, verantwoordelijk voor de ondersteuning van de stabiele Linux-kernelbranch, karakteriseerde de huidige staat als "bijna klaar om een werkelijke driver in Rust te schrijven".
- In buildscenario's is een is er nieuwe code voor het genereren van versies van debug-symbolen voor geladen modules, die nu informatie uit debugrecords in DWARF-formaat gebruikt in plaats van de brontekst rechtstreeks te parseren. Deze wijziging maakt versiebeheer van debug-symbolen voor modules geschreven in Rust mogelijk. De oude implementatie is ook in de kernel behouden, en de keuze van de generator wordt gemaakt op het niveau van de bouwopties.
- Voor de PowerPC-architectuur geïmplementeerd ondersteuning voor de luie preëmptie modus (PREEMPT_LAZY, lazy preemption), die overeenkomt met de volledige preëmptie modus («full preemption») voor realtime-taken (RR/FIFO/DEADLINE), maar die preëmptie van gewone taken (SCHED_NORMAL) uitgesteld totdat de tickgrens is bereikt.
- in het prestatieprofilering subsysteem perf toegevoegd ondersteuning voor energiebesparingsmeters voor AMD-processors. Toegevoegd mogelijkheid om te draaien op systemen met tot 2048 CPU-kernen.
- Verstrekt mogelijk om de sysctl-parameter pid_max te gebruiken met proces-ID namenruimten (ID namespace). De parameter pid_max is bedoeld om de maximale waarde voor proces-ID's (PID) te beperken en kan nu worden gebruikt om het maximaal mogelijke aantal processen dat binnen de opgegeven namenruimte kan worden uitgevoerd, te beperken. De verwerking van de parameter gebeurt hiërarchisch, dwz dat beperkingen in externe namenruimten ook van toepassing zijn op geneste namenruimten.
- Wanneer deze systeemaanroep wordt gebruikt om een proces te starten execveat zal in het bestandssysteem /proc nu de naam van het gestartte bestand weergeven, in plaats van het nummer van de bestandsdescriptor.
- Een hulpprogramma genaamd mountinfo, dat het gebruik van de systeemaanroepen statmount() en listmount() demonstreert, is toegevoegd aan de broncode van de kernel (in de map samples).
- In het BPF-subsysteem voor de kernel voorgesteld nieuwe functies bpf_local_irq_save() en bpf_local_irq_restore() voor het tijdelijk uitschakelen van onderbrekingen op de lokale CPU. De functies kunnen worden gebruikt om structuren te implementeren waarvan de verwerking niet door onderbrekingen wordt gepauzeerd.
- In de systeemaanroep madvise() bij het gebruik van de vlaggen MADV_DONTNEED en MADV_FREE is er komt de vrijgave van paginatabellen in het geheugen, die verband houden met het vrijgegeven adresbereik, aangezien in sommige situaties lege pagina's in het geheugen behoorlijk wat geheugen kunnen innemen.
- Voor de OpenRISC-architectuur is ondersteuning geïmplementeerd voor het mechanisme van herstartbare reeksen (rseq, restartable sequences), dat bedoeld is voor snelle atomische uitvoering van bewerkingen die in het geval van onderbreking door een andere thread worden gewist en opnieuw worden geprobeerd.
- De code is herstructureerd met de implementatie van de algoritmen CRC32 en CRC-T10DIF, welke niet langer overlappen met de crypto-subsystem en direct vanuit de bibliotheekinterface wordt aangeroepen. Deze wijziging heeft geleid tot een vereenvoudiging van de code en een verbetering van de efficiëntie.
- In het systeem voor asynchrone invoer/uitvoer io_uring is toegevoegd interface voor het verzenden van aanvullende metadata over integriteit tijdens lees- en schrijfbewerkingen.
- Virtualisatie en beveiliging
- In de systeemaanroep execveat is toegevoegd vlag AT_EXECVE_CHECK, die het mogelijk maakt om een controle uit te voeren de uitvoerbaarheid van een bestand zonder dat het daadwerkelijk wordt uitgevoerd, maar met inachtneming van beveiligingsbeleid, toegangsrechten en actieve LSM-modules. Voor gebruik in combinatie met AT_EXECVE_CHECK zijn securebit-vlaggen SECBIT_EXEC_RESTRICT_FILE en SECBIT_EXEC_DENY_INTERACTIVE voorgesteld, die kunnen worden gebruikt om de uitvoering van bestanden met scripts in interpreteertalen te beperken. De vlag SECBIT_EXEC_RESTRICT_FILE vereist dat koppelaars en interpreters de optie AT_EXECVE_CHECK gebruiken om de uitvoerbaarheid te controleren, terwijl de vlag SECBIT_EXEC_DENY_INTERACTIVE het verwerken van interactieve commando's verbiedt. Het belangrijkste idee van de wijziging is de mogelijkheid om beveiligingsbeleid niet alleen toe te passen op traditionele uitvoerbare bestanden, maar ook op tekstbestanden met scripts die kunnen worden geladen door het starten van de interpreter (d.w.z. het verbod op uitvoering kan niet alleen worden geïmplementeerd bij het uitvoeren van ‘./script.sh’, maar ook bij de uitvoering in de vorm van ‘sh script.sh’).
- Op x86-systemen is ondersteuning geïmplementeerd voor beveiligde tijdstempels voor gastsystemen, die het niet toestaan om de systeemtijd van het gastsysteem vanuit de hostomgeving te wijzigen. Deze mogelijkheid is geïmplementeerd op basis van het mechanisme AMD SEV (Secure Encrypted Virtualization), dat wordt toegepast in virtualisatiesystemen ter bescherming van virtuele machines tegen inmenging door de hypervisor of de beheerder van het hostsysteem.
- In het SELinux-systeem voor verplichte toegangscontrole toegevoegd ondersteuning voor xperm-regels, waarmee SELinux-beleid kan worden gekoppeld aan specifieke ioctl()-aanroepen of netlink-berichten.
- Voor de ondertekening van kernelmodules met een digitale handtekening wordt standaard geschakeld van SHA1 naar wordt gebruikgemaakt van het SHA512-algoritme.
- In drivers voor gastsystemen van VirtualBox is ingeschakeld ondersteuning voor de ARM64-architectuur.
- In de KVM-hypervisor vervolgd werk aan de implementatie van het Intel TDX-mechanisme (Trusted Domain Extensions) voor de versleuteling van het geheugen van gastsystemen.
- In virtio_blk toegevoegd ondersteuning voor foutherstelmodus.
- Netwerk subsysteem
- In de implementatie van het protocol RxRPC in de testbuild Canary, en is onlangs overgebracht naar de release. Om het te activeren, moet u naar het gedeelte flags chrome://flags gaan, het vlag 'Filesystem API in Incognito' zoeken via de zoekfunctie en deze inschakelen. Na het opnieuw opstarten van de browser zal de incognito-modus volledig functioneren. de mogelijkheid om grote UDP-frames te gebruiken voor een hogere doorvoersnelheid.
- Voor TCP is ondersteuning toegevoegd voor het algoritme RACK-TLP voor het detecteren van pakketverlies.
- Toegevoegd een nieuwe sysctl-parameter tcp_tw_reuse_delay, die werkt in aansluiting op de naamruimte (network namespace) en waarmee de vertraging kan worden gedefinieerd voordat het systeem het nummer van de netwerksocket opnieuw kan gebruiken na het sluiten van de TCP-socket.
- Toegevoegd de mogelijkheid om een tijdprovider (PTP) te kiezen voor het genereren van tijdstempels op PHY- en MAC-niveaus.
- Voor IPsec geïmplementeerd ondersteuning voor het mechanisme van aggregatie en fragmentatie van ingekapselde IP-pakketten - IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- In het netwerk socket-systeem toegevoegd ondersteuning voor de overdracht van informatie over prioriteit (SO_PRIORITY) in de vorm van control messages (cmsg). Voor netwerk sockets toegevoegd de optie SO_RCVPRIORITY, die in de functie recvmsg() de overdracht van informatie over socketprioriteit inschakelt.
- Apparatuur
- Toegevoegd een drijfveer amdxdna voor geïntegreerde NPU (Neural Processing Unit) versnellers in AMD CPU's op basis van de architectuur XDNA, bedoeld om bewerkingen in verband met machine learning te versnellen. NPU's op basis van de XDNA-architectuur worden geleverd in de series 7040 en 8040 van AMD Ryzen-processors, AMD Alveo V70-versnellers en AMD Versal SoC.
- In de i915-driver zijn toegevoegd de identificatie van nieuwe GPU's, een behandelprogramma voor HDMI-initialisatiefouten geïmplementeerd, de betrouwbaarheid van het resetten van GPU-motoren op Haswell en oudere systemen verbeterd.
- Voortgezet werkzaamheden aan de drm-driver (Direct Rendering Manager) Xe voor GPU's op basis van de Intel Xe-architectuur, die worden gebruikt in Intel grafische kaarten van de Arc-familie en geïntegreerde grafische oplossingen, vanaf Tiger Lake-processors.
- In de Nouveau-driver is de mogelijkheid toegevoegd om buffers met GSP-RM-logboeken via debugfs door te geven.
- In de AMDGPU-driver is ondersteuning geïmplementeerd voor het DRM panic-mechanisme, dat een soort 'blauw scherm van de dood' toont bij storingen. Verdere voorbereidingen voor ondersteuning van de toekomstige Radeon RX 9000-serie grafische kaarten op basis van de RDNA4-architectuur. Ondersteuning voor DCN 3.5, GG 9.5, IH 4.4, PSP 13.x, SMU 13.x, VCN 5.x, JPEG 5.x, GC 12.x, DC FAMS, RAS en ISP is bijgewerkt.
- In de DRM-driver msm (Qualcomm Adreno GPU) is ondersteuning toegevoegd voor het Qualcomm SM6150 (QCS615) platform.
- In de DRM-stuurprogramma panfrost is ondersteuning voor SoC MediaTek MT8188 met GPU Mali-G57 toegevoegd.
- In de DRM-stuurprogramma vc4 is ondersteuning voor SoC Broadcom BCM2712 (Raspberry Pi 5) toegevoegd.
- In de vfio-driver nvgrace-gpu toegevoegd ondersteuning voor van NVIDIA Grace Blackwell 200 chips.
- In het pakket ingeschakeld driver voor Intel THC (Touch Host Controller), gebruikt voor interactie met touchscreens en touchpads op bepaalde laptops. Ondersteuning toegevoegd voor Wacom-apparaten met PCI-interface. Toegevoegd ondersteuning voor spelcontrollers van QH Electronics.
- Toegevoegd ondersteuning voor ARM-platforms, SoC en apparaten: Qualcomm Snapdragon 8 Elite (SM8750), Qualcomm Snapdragon AR2 (SAR2130P), Qualcomm IQ6/IQ8, Snapdragon 425 (MSM8917), Samsung Exynos 9810, Blaize BLZP1600, Microchip SAMA7D65, Renesas R-Car V4H ES3.0, Renesas RZ/G3E. Ondersteuning toegevoegd voor SoC SpacemiT K1 op basis van de RISC-V-architectuur.
- In de geluidssubstructuur ALSA voor MIDI 2.0 zijn de API rawmidi en sequencer. In de API voor het uitbesteden van compressiebewerkingen naar de geluidskaart is ondersteuning toegevoegd voor ASRC (Asynchronous Sample Rate Conversion).
- Ondersteuning toegevoegd voor geluidssystemen van apparaten Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 en 18i20. Toegevoegd ondersteuning voor SteelSeries Arctis 9 draadloze hoofdtelefoons.
Bron: linux.org.ru
