Na twee maanden ontwikkeling heeft Linus Torvalds de release van de Linux-kernel 6.14 gepresenteerd. Onder de meest opvallende wijzigingen zijn: de ntsync-driver met synchronisatieprimitive voor Windows NT, de configuratie van de balans van leesoperaties in Btrfs RAID1, ondersteuning voor reflink in XFS in realtime-modus, de mogelijkheid voor niet-cache gebufferde invoer/uitvoer, dmem cgroup voor het beperken van GPU-geheugen, gebruik van io_uring in FUSE, het delegeren van attributen in NFS, ondersteuning voor atomar schrijven in de 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 AMD NPU.
In de nieuwe versie zijn 12115 correcties opgenomen van 1984 ontwikkelaars, de patchgrootte is 39 MB (de wijzigingen hebben betrekking op 10170 bestanden, er zijn 531586 regels code aan toegevoegd en 235999 regels verwijderd). In de vorige release waren er 14172 correcties van 2086 ontwikkelaars, de patchgrootte was 46 MB. Ongeveer 41% van alle wijzigingen in 6.14 is gerelateerd aan stuurprogramma's voor apparaten, ongeveer 13% van de wijzigingen heeft betrekking op het upgraden van hardware-specifieke code, 14% is gerelateerd aan de netwerkstack, 7% aan bestandssystemen en 4% aan interne subsystemen van de kernel.
Hoofdvernieuwingen in kernel 6.14:
- Opslagsubsystemen, invoer/uitvoer en bestandssystemen
- In het Btrfs-bestandssysteem is ondersteuning toegevoegd voor nieuwe methoden om leesoperaties tussen de schijven in een RAID1-array te balanceren. Naast de eerder bestaande load balancing op basis van procesidentificatoren (pid), zijn er drie nieuwe balanceermodi voorgesteld in de nieuwe versie: 'rotation' (gelijke verdeling van de belasting over alle schijven, modus is standaard ingeschakeld); 'latency' (balanceren rekening houdend met vertragingen, kan nuttig zijn bij storingen of onbetrouwbare werking van schijven); devid (handmatige regeling). Voor het wijzigen van de balansmodus is een interface toegevoegd via '/sys/fs/btrfs//read_policy'. Onder andere wijzigingen in Btrfs is de implementatie van ioctl FS_IOC_READ_VERITY_METADATA.
- Een modus voor niet-cache-geheugeninvoer/-uitvoer is toegevoegd, waarin gegevens onmiddellijk uit de paginacache worden verwijderd nadat de lees- of schrijftaken zijn voltooid. Deze wijziging kan handig zijn bij het gebruik van zeer snelle opslagapparaten, waarbij cachen van operaties in het RAM overbodig is. Voor dergelijke apparaten maakt de nieuwe modus het mogelijk om overmatig geheugengebruik door de paginacache te voorkomen zonder gebruik te maken van een uitgebreide directe invoer/-uitvoer (Direct I/O) API.
- In fsnotify, het mechanisme voor het volgen van wijzigingen in het bestandssysteem, is een nieuwe gebeurtenis FS_PRE_ACCESS toegevoegd, die gegenereerd wordt voordat er inhoud van een bestand wordt opgevraagd. De gebeurtenis wordt synchroon verwerkt, d.w.z. de kernel verzendt het evenement en wacht op een antwoord. Als er een antwoord is ontvangen, wordt de operatie uitgevoerd; als er een fout optreedt, retourneert de systeemaanroep een foutcode naar de gebruikersruimte. Met FS_PRE_ACCESS kan bijvoorbeeld een proces in de gebruikersruimte een bestand vullen naarmate gegevens in een traag opslagmedium beschikbaar komen.
- In het FUSE-subsystem, dat het mogelijk maakt om bestandssysteemimplementaties in de gebruikersruimte te creëren, is ondersteuning toegevoegd voor gegevensuitwisseling tussen de kernel en de handler in de gebruikersruimte met behulp van het io_uring invoer/-uitvoer mechanisme. Deze wijziging verbetert de prestaties van FUSE door het aantal contextwisselingen tussen de kernel en de gebruikersruimte te verminderen.
- In het XFS-bestandssysteem is de mogelijkheid voor terugmappen (rmap, reverse-mapping) in de modus voor voorspelbare vertragingen ('realtime device') toegevoegd. Terugmappen maakt het mogelijk om te bepalen welke bestanden het opgegeven blok op het opslagapparaat gebruiken. Met rmap in XFS is ondersteuning voor de reflink-operatie geïmplementeerd in de realtime-modus, waarmee kopieën van bestanden kunnen worden gemaakt door de metadata van een bestand te klonen en een link naar reeds bestaande gegevens te creëren zonder ze daadwerkelijk te kopiëren.
- In VFS is caching van de grootte van symbolische links geïmplementeerd, wat een versnelling van 1,5% mogelijk maakt bij het uitvoeren van de readlink-operatie (in de test met /initrd.img in ext4). Caching is ingeschakeld in de ext4 en tmpfs bestandssystemen.
- In de implementatie van NFSv4.2 is ondersteuning voor het delegeren van bestandsattributen toegevoegd, waarmee het mogelijk is om bestanden zoals de wijzigingsdatum (mtime) aan de kant van de NFS-client te beheren, zonder de wijzigingen naar de server te hoeven terugsturen. In NFS is ook de ondersteuning voor het ‘LOCALIO’ protocol verbeterd, waarmee bepaald kan worden of de client en server NFS op dezelfde host staan, om relevante optimalisaties toe te passen, zoals het gebruik van directe invoer/uitvoer (Direct I/O) door de client.
- De prestaties van leesoperaties in de bestandssystemen NETFS, CIFS en AFS (Andrew File System) zijn verbeterd.
- In Squashfs is een modus voor rechtstreekse belasting van blokken in de paginacache (SQUASHFS_FILE_DIRECT) toegevoegd, waarmee een aparte read_page-cache overbodig wordt. Deze wijziging heeft de geheugensteun die door Squashfs werd gebruikt, verminderd.
- In de systeemaanroep statx() is de vlag STATX_DIO_READ_ALIGN geïmplementeerd, om de vereiste uitlijning voor leesoperaties uit een bestand te bepalen.
- In het bestandssysteem Bcachefs is het formaat van de schijfstructuren bijgewerkt en gestabiliseerd. Verdere wijzigingen aan het formaat worden als optioneel beschouwd en zullen worden geïmplementeerd als optionele uitbreidingen. De snelheid van de integriteitscontrole van het bestandssysteem is aanzienlijk verhoogd. Bovendien is de werking in de alleen-lezen modus verbeterd; problemen die leidden tot toegang tot geheugen na vrijgave (use after free) zijn verholpen; en er zijn problemen met reflink-pointers in fsck opgelost; de verwerking van transactieherstarts is gecorrigeerd.
- De module md-linear is teruggebracht, bedoeld voor de samenvoeging van block devices. Deze module was eerder verouderd verklaard en uit de kernel 6.8 verwijderd, maar bleek gewild te zijn en is daarom nu hersteld.
- De bestandssystemen F2FS en SQUASHFS zijn overgezet naar het gebruik van geheugenpagina's (page folios).
- De bestandssystemen OCFS2 en DLMFS zijn overgezet naar het gebruik van een nieuwe API voor het mounten van partities.
- In de null_blk driver is het attribuut ‘rotational’ geïmplementeerd, dat via configfs wordt ingesteld en simuleert dat wordt gewerkt met een apparaat op basis van draaiende schijven om het testen van kernfunctionaliteiten te vereenvoudigen.
- 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 schrijfoperaties geïmplementeerd.
- Geheugen en systeemdiensten
- De integratie in de kernel driver ntsync is voltooid, die een symbolisch apparaat /dev/ntsync en een set synchronisatieprimitieven implementeert die in de Windows NT-kernel worden gebruikt. De implementatie van dergelijke primitieven op kernel-niveau maakt een aanzienlijke prestatieverhoging mogelijk voor Windows-spellen die via Wine worden uitgevoerd. De prestatieverbetering wordt bereikt door de overhead die gepaard gaat met het gebruik van RPC in de gebruikersruimte te elimineren. Het creëren van een aparte driver voor de Linux-kernel wordt verklaard door de moeilijkheid om de NT-synchronisatie-API correct te implementeren bovenop de bestaande primitieven in de kernel.
- Een nieuwe cgroup DMEM-controller is toegevoegd voor het gescheiden bijhouden van het geheugen van apparaten, zoals GPU's. DMEM maakt het mogelijk om afzonderlijke cgroups voor verschillende taken die met de GPU werken te creëren, zodat ze onafhankelijk van elkaar uitgevoerd kunnen worden. Deze nieuwe functie lost het probleem op van geforceerde beëindiging van GPU-bewerkingen bij gebrek aan beschikbaar geheugen door het bijhouden van het weerkaatste GPU-geheugen en het door stuurprogramma's gebruikte CPU-geheugen in aparte cgroups.
- Optimalisaties zijn doorgevoerd voor de schaalbaarheid van de TLB (Translation Lookaside Buffer) flush-operatie, die wordt gebruikt om de vertaling van virtuele adressen naar fysieke adressen te versnellen. De toegevoegde optimalisaties komen neer op het uitstellen van de update van bepaalde gegevensstructuren tijdens contextwisseling, wat de prestaties verbetert bij het doorlopen van bepaalde tests.
- De prestaties van het MGLRU (Multi-Generational LRU) mechanisme zijn verhoogd, dat wordt gebruikt om te bepalen welke geheugenspages worden gebruikt en welke kunnen worden verwijderd naar de swapruimte.
- De voortgang van de wijzigingen uit de Rust-for-Linux tak met betrekking tot het gebruik van de Rust-taal als tweede programmeertaal voor het ontwikkelen van stuurprogramma's en kernelmodules is voortgezet (ondersteuning voor Rust is standaard niet geactiveerd en leidt niet tot de opname van Rust als verplichte build-afhankelijkheid voor de kernel). De mogelijkheid om in de kernelcode de macro 'derive(CoercePointee)' te gebruiken is geboden, waarmee slimme pointers met trait-objecten kunnen worden toegepast. Rust-wrappers voor PCI, platforms, Open Firmware, symbolische apparaten en bepaalde I/O-functies zijn in de kernel opgenomen. Greg Kroah-Hartman, verantwoordelijk voor de ondersteuning van de stabiele kernelversie van Linux, heeft de huidige staat gekarakteriseerd als 'bijna klaar voor het schrijven van een echt stuurprogramma in Rust'.
- In de build-scenario's is er nieuwe code voorgesteld voor het genereren van versies van debug-symbolen voor laadmodules, die nu informatie uit debug-records in DWARF-formaat gebruikt in plaats van de broncode direct te parseren. Deze wijziging maakt versiebeheer van debug-symbolen voor modules geschreven in de Rust-taal mogelijk. De oude implementatie blijft ook in de kernel, en de keuze van de generator wordt bepaald op het niveau van build-opties.
- Voor de PowerPC-architectuur is ondersteuning voor de lazy preemption mode (PREEMPT_LAZY, lazy preemption) geïmplementeerd, die overeenkomt met de volledige preemption modus ('full preemption') voor realtime-taken (RR/FIFO/DEADLINE), maar het preempen van normale taken (SCHED_NORMAL) uitstel tot de tic-grens.
- De performance profiling subsystem 'perf' is uitgebreid met ondersteuning voor energietellers van AMD-processors. Er is ondersteuning toegevoegd voor systemen met tot 2048 CPU-cores.
- De mogelijkheid om de sysctl-parameter pid_max te gebruiken met namespaces van proces-ID's (ID namespace) is geboden. De parameter pid_max is bedoeld om de maximale waarde van proces-ID's (PID) te beperken en kan nu worden gebruikt om het maximaal mogelijke aantal processen dat in de opgegeven namespace wordt uitgevoerd te beperken. De verwerking van de parameter gebeurt hiërarchisch, d.w.z. beperkingen in externe namespaces zijn van toepassing op geneste namespaces.
- Bij het gebruik voor het starten van het systeemoproep-proces execveat zal in het bestandssysteem /proc nu de naam van het gestart bestand worden weergegeven in plaats van het nummer van de bestandsdescriptor.
- In de broncode van de kernel (in de map samples/vfs) is een utiliteit mountinfo toegevoegd, die het gebruik van de systeemoproepen statmount() en listmount() aantoont.
- In de BPF-subsystem zijn nieuwe functies bpf_local_irq_save() en bpf_local_irq_restore() voorgesteld voor het tijdelijk uitschakelen van interrupties op de lokale CPU. Deze functies kunnen worden gebruikt voor het implementeren van structuren waarvan de verwerking niet wordt onderbroken door interrupties.
- In de systeemoproep madvise() is ervoor gezorgd dat bij gebruik van de vlaggen MADV_DONTNEED en MADV_FREE de geheugenpagina-tabellen die verband houden met het vrijgegeven adresbereik worden vrijgegeven, omdat in sommige situaties lege geheugenpagina's relatief veel geheugen kunnen innemen.
- Voor de OpenRISC-architectuur is de ondersteuning voor het mechanisme van herstartbare reeksen (rseq, restartable sequences) geïmplementeerd, dat bedoeld is voor snelle atomische uitvoering van operaties die, wanneer ze door een andere thread worden onderbroken, 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 een interface toegevoegd voor het doorgeven van aanvullende metadata over integriteit tijdens het uitvoeren van lees- en schrijfoperaties.
- Virtualisatie en beveiliging
- In the execveat system call, the AT_EXECVE_CHECK flag has been added, allowing for the validation of a file's execution permit without its actual launch, while considering security policies, access rights, and active LSM modules. Securebit flags SECBIT_EXEC_RESTRICT_FILE and SECBIT_EXEC_DENY_INTERACTIVE are proposed for use with AT_EXECVE_CHECK to restrict the execution of files with scripts in interpreted programming languages. The SECBIT_EXEC_RESTRICT_FILE flag mandates that linkers and interpreters use the AT_EXECVE_CHECK option for validation checks, while the SECBIT_EXEC_DENY_INTERACTIVE flag prohibits the processing of interactive commands. The main idea behind the change is to apply security policies not only to traditional executable files but also to text files with scripts that can be loaded via interpreter execution (i.e., execution restrictions can be implemented not only with “./script.sh” but also with “sh script.sh”).
- On x86 systems, support for protected time counters for guest systems has been implemented, preventing changes to the guest system's system clock from the host environment. This capability is based on the AMD SEV (Secure Encrypted Virtualization) mechanism used in virtualization systems for protection. virtuele machines from interference by the hypervisor or the host system administrator.
- Support for xperm rules has been added to the SELinux mandatory access control system, allowing SELinux policies to be tied to specific ioctl() calls or netlink messages.
- For signing kernel modules with a digital signature, the SHA512 algorithm is used by default instead of SHA1.
- Drivers for guest systems in VirtualBox have added support for the ARM64 architecture.
- In de hypervisor KVM Work continues on implementing the Intel TDX (Trusted Domain Extensions) mechanism for encrypting memory in guest systems.
- Support for error recovery mode has been added to virtio_blk.
- Netwerk subsysteem
- The RxRPC protocol implementation has added the ability to use larger UDP frames to increase throughput.
- Support for the RACK-TLP algorithm for packet loss detection has been added for TCP.
- Een nieuwe sysctl-parameter tcp_tw_reuse_delay is toegevoegd, die van toepassing is op de naamruimte (network namespace) en waarmee de vertraging kan worden bepaald voordat het systeem het nummer van de netwerkpoort opnieuw kan gebruiken na het sluiten van de TCP-socket.
- De mogelijkheid om een tijdprovider (PTP) te kiezen voor het genereren van tijdstempels op PHY- en MAC-niveaus is toegevoegd.
- Voor IPsec is ondersteuning geïmplementeerd voor het mechanisme voor aggregatie en fragmentatie van ingekapselde IP-pakketten — IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload).
- Het netwerk socketsysteem heeft ondersteuning gekregen voor het doorgeven van informatie over prioriteit (SO_PRIORITY) in de vorm van controleberichten (cmsg — control messages). Voor netwerksockets is de optie SO_RCVPRIORITY toegevoegd, die in de functies recvmsg() de overdracht van informatie over de prioriteit van de socket inschakelt.
- Apparatuur
- Er is een amdxdna-stuurprogramma toegevoegd voor geïntegreerde NPU (Neural Processing Unit) versnellende eenheden in AMD CPU's, gebaseerd op de XDNA-architectuur, die bedoeld zijn voor het versnellen van bewerkingen die verband houden met machine learning. NPU's op basis van de XDNA-architectuur worden geleverd in de AMD Ryzen 7040 en 8040 series, AMD Alveo V70 versnellende eenheden en AMD Versal SoC.
- In de i915-driver zijn identificaties van nieuwe GPU's toegevoegd, is er een handler geïmplementeerd voor HDMI-initialisatiefouten en is de betrouwbaarheid van het resetten van GPU-motoren op Haswell en eerdere systemen verbeterd.
- De ontwikkeling van de drm-stuurprogramma (Direct Rendering Manager) Xe voor GPU's op basis van de Intel Xe-architectuur, die wordt gebruikt in Intel Arc grafische kaarten en geïntegreerde graphics, is voortgezet, beginnend met de Tiger Lake-processoren.
- 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 soortgelijke 'blauwe schijn van de dood' toont bij fouten. De voorbereiding op de ondersteuning van de toekomstige serie Radeon RX 9000 grafische kaarten op basis van de RDNA4-architectuur is voortgezet. De 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-stuurprogramma msm (GPU Qualcomm Adreno) is ondersteuning voor het Qualcomm SM6150 (QCS615) platform toegevoegd.
- 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-stuurprogramma nvgrace-gpu is ondersteuning voor NVIDIA Grace Blackwell 200 chips toegevoegd.
- De samenstelling omvat een driver voor Intel THC (Touch Host Controller), gebruikt voor interactie met aanraakschermen en touchpads op bepaalde laptops. Ondersteuning voor Wacom-apparaten met een PCI-interface is toegevoegd. Ondersteuning voor gamingcontrollers van QH Electronics is toegevoegd.
- Ondersteuning voor ARM-platforms, SoC's en apparaten is toegevoegd: 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 voor de SoC SpacemiT K1 op basis van de RISC-V-architectuur is toegevoegd.
- In de ALSA-geluidsbibliotheek zijn de API's rawmidi en sequencer uitgebreid voor MIDI 2.0. In de API voor het uitvoeren van compressie-operaties aan de kant van de geluidskaart is ondersteuning voor ASRC (Asynchronous Sample Rate Conversion) toegevoegd.
- Ondersteuning voor geluidsystemen van apparaten is toegevoegd, waaronder Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4e Gen 16i16, 18i16 en 18i20. Ondersteuning voor draadloze hoofdtelefoons SteelSeries Arctis 9 is toegevoegd.
Bron: opennet.ru
