Release des Linux-Kernels 6.19. Der nächsten Version wird die Nummer 7.0 zugewiesen.

Nach zwei Monaten Entwicklung kündigte Linus Torvalds die Veröffentlichung des Linux-Kernels 6.19 an. Zu den auffälligsten Änderungen gehören: das Subsystem Live Update Orchestrator, Unterstützung für PCIe Link Encryption, der Systemaufruf listns, der Zero-Copy Receive-Modus in io_uring, Unterstützung für die ARM-Erweiterung MPAM, klp-build zur Generierung von Live-Patches, Unterstützung der LoongArch32-Architektur, QoS für s2idle, Optimierung des Auditsystems, Intel LASS zum Schutz vor Spectre, Unterstützung von SHA-3 und BLAKE2b-Hashes, der Mechanismus Confidential VMBus, TX-Optimierungen im Netzwerk-Subsystem und das Protokoll CAN XL, sowie eine API zur hardwarebeschleunigten HDR-Ausgabe.

Im Ankündigungstext zur neuen Version teilte Linus mit, dass der nächsten Kernelversion die Nummer 7.0 zugewiesen wird, da sich in der 6.x-Reihe ausreichend Versionen angesammelt haben, um die erste Ziffer der Versionsnummer zu ändern (zumal die Version 6.0 unmittelbar nach 5.19 erschienen ist). Die Änderung der Nummerierung erfolgt aus ästhetischen Gründen und ist ein formaler Schritt, der das Unbehagen über die Ansammlung einer großen Anzahl von Versionen in der Serie beseitigt. Linus scherzte, dass ihn die hohen Zahlen verwirren, für die ihm die Finger an Händen und Füßen fehlen. Dabei gibt es formal einen Grund für eine signifikante Versionsänderung, da mit der nächsten Version beschlossen wurde, die Unterstützung für Rust von experimentellen in die Hauptfunktionen des Kernels zu übertragen.

In die neue Version wurden 15657 Korrekturen von 2237 Entwicklern aufgenommen, die Patchgröße beträgt 52 MB (Änderungen betrafen 13682 Dateien, 794649 Codezeilen wurden hinzugefügt, 335498 Zeilen entfernt). Im vorherigen Release gab es 15035 Korrekturen von 2217 Entwicklern, die Patchgröße betrug 45 MB. Etwa 40 % aller in 6.19 vorgestellten Änderungen betreffen Gerätetreiber, ungefähr 13 % der Änderungen stehen im Zusammenhang mit der Aktualisierung von architekturspezifischem Code, 12 % betreffen das Netzwerk-Stack, 5 % die Dateisysteme und 3 % die internen Subsysteme des Kernels.

Die wichtigsten Neuerungen im Kernel 6.19 (1, 2, 3):

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • In Btrfs blockieren die Prozesse zur Überprüfung des Dateisystems (Scrub) und das Ersetzen von Geräten nicht mehr den Übergang des Systems in den Energiesparmodus (der Status der Scrub-Überprüfung wird vor dem Schlafen gespeichert; nach dem Aufwachen wird die Scrub-Überprüfung fortgesetzt und der Ersetzungsprozess für Geräte wird neu gestartet). Die Unterstützung für RAID56 wurde um Blöcke ergänzt, deren Größe die Seitengröße des Speichers übersteigt. Es wurde Vorarbeit für die Unterstützung von fscrypt geleistet. Die Leistung bei der Arbeit mit Sperren wurde bei der Durchführung von Vorgängen zur Reservierung von Speicherplatz verbessert. Die Unterstützung für den ioctl-Befehl „shutdown“ wurde hinzugefügt, mit dem das Dateisystem in einen Zustand überführt wird, in dem versucht wird, die bereits laufenden Vorgänge abzuschließen, während alle neuen Vorgänge blockiert werden.
    • Im Dateisystem Ext4 wurde die Unterstützung für Blöcke implementiert, deren Größe die Seitengröße des Speichers übersteigt (>4KB auf x86-Systemen). Die Verwendung großer Blöcke ermöglicht eine Steigerung der Leistung von gepufferten Schreibvorgängen um durchschnittlich 50 %, verringert jedoch die Leistung bei direkter E/A aufgrund der erhöhten Zeit für das Berechnen von Prüfziffern. In der neuen Version wurden außerdem Optimierungen hinzugefügt, die die Bandbreite bei der Durchführung von Online-Defragmentierungen erhöht haben.
    • Im FUSE-Subsystem wurde die Unterstützung für gepuffertes Lesen bei der Verwendung großer Seiten von Speicherseiten (large folios) verbessert. Über iomap wurde die Möglichkeit implementiert, teilweise aktuelle Folios zu verfolgen, um nur Daten zu laden, die im Puffer fehlen.
    • In VFS wurde die Unterstützung für widerrufbare Delegierung der Verzeichnisverwaltung (recallable directory delegation) hinzugefügt, die es ermöglicht, in NFS die Verwaltung des Verzeichnisses von Server zum Client zu übertragen, sodass der NFS-Client den Zustand des Verzeichnisses basierend auf dem lokalen Cache selbstständig überwachen kann, ohne auf den NFS-Server zugreifen zu müssen. Wenn ein anderer NFS-Client Änderungen an diesem Verzeichnis vornimmt, wird die Delegierung der Verwaltung vom ersten Client widerrufen.
    • Für NFS wurde die Unterstützung für das Lesen im Direktzugriffsmodus (direct I/O) hinzugefügt. Die Einstellungen /sys/kernel/debug/nfsd/io_cache_read und /sys/kernel/debug/nfsd/io_cache_write zur Verwaltung der Aktivierung von Caching und Direktzugriffsoperationen wurden implementiert. Die Manipulation dieser Einstellungen ermöglicht es, die Überheadkosten auf der NFS-Client-Seite bei großen Eingabe-/Ausgabeoperationen zu reduzieren.
    • In NTFS wurde die Unterstützung für die ioctl-Operation shutdown implementiert, die Optionen für die Einbindung "acl" und "prealloc" standardmäßig aktiviert sind, und die Unterstützung für Zeiten bis zum 1. Januar 1970 hinzugefügt.
    • Für Blockgeräte und Dateisysteme wurde standardmäßig ein getrenntes Caching von Objekten "bio" (Block I/O) für jede CPU aktiviert, welches die aktiven Eingabe-/Ausgabeoperationen definiert.
  • Speicher und Systemdienste
    • In den Kernel wurde das Subsystem Live Update Orchestrator (LUO) integriert, das eine vollständige Neuinstallation und Aktualisierung des Kernels ohne Unterbrechung des Betriebs und ohne Verlust des Zustands von System, Geräten und Prozessen ermöglicht. Das LUO-Subsystem basiert auf dem zuvor im Kernel hinzugefügten Mechanismus KHO (Kexec HandOver) und ermöglicht neben der Möglichkeit, einen neuen Kernel aus einem alten ohne Verlust des Systemzustands zu starten, auch die Aufgaben, den Zustand von Geräten und des Arbeitsspeichers zu sichern sowie die Kontinuität von DMA-Operationen und Interruptbearbeitung sicherzustellen. Der Zustand wird bis zum Wechsel zu dem neuen Kernel gespeichert und nach der Aktivierung des neuen Kernels wiederhergestellt, ohne die kontinuierlichen Operationen mit Geräten zu stören, die vom System und Anwendungen im Benutzerraum durchgeführt werden.
    • Ein Systemaufruf listns() wurde hinzugefügt, um eine Liste der bereits im System vorhandenen Namensräume auszugeben, ohne die /proc//ns/ für alle Prozesse durchlaufen zu müssen.
    • Im asynchronen Eingabe-/Ausgabesystem io_uring wurde die Unterstützung für die Platzierung von Elementen unterschiedlicher Größe in der Sendewarteschlange (SQE, Submission Queue Entry) hinzugefügt, ähnlich wie im vorherigen Release die Mischung der Größen von Ergebnisschlangenelementen (CQE, Completion Queue Event) erlaubt wurde. Zuvor mussten alle Elemente in der Warteschlange eine einheitliche Größe haben, was zu übermäßigem Speicherverbrauch führte, da die Verwendung der maximalen Größe für alle Elemente in der Warteschlange erforderlich war.

      In io_uring wurde auch die Unterstützung für den Mechanismus zcrx (Zero-Copy Receive) hinzugefügt, der es ermöglicht, Daten ohne Kopieren zwischen Kernel und Benutzerspeicher zu empfangen. Die Unterstützung für Speichermapping-Anfragen für SQ (Submission Queue) und CQ (Completion Queue) wurde hinzugefügt, was es ermöglicht, Informationen über die Größe des Ringpuffers zu erhalten, die bei der Benutzerzuweisung von Speicher mit den Flags IORING_SETUP_NO_MMAP und IORING_MEM_REGION_TYPE_USER erforderlich ist.

    • Für eine schnelle Stack-Trace-Diagnose mit Tools wie perf wurde die Unterstützung des SFrame-Formats zur Bereitstellung von Informationen über den Funktionsaufruf-Stack (Unwind) implementiert. SFrame wird bereits in GCC und binutils unterstützt, führt nicht zu einer Leistungsminderung und enthält im Gegensatz zum DWARF-Format nur die minimale Informationsmenge, die für das Trace-Stack erforderlich ist.
    • In das perf-Tool wurde die Unterstützung für eine einheitliche Beschreibung von Metriken und Ereignissen im JSON-Format sowie für das verzögerte Unwinden (deferred unwinding) des Stack-Trace im Benutzerspeicher integriert.
    • Für AMD-Prozessoren wurde ein Mechanismus zur Bereitstellung von Daten im Cache implementiert, der es Ein- und Ausgabegeräten ermöglicht, Daten direkt in den L3-Cache der CPU einzufügen, ohne sie vorher im RAM abzulegen.
    • MPAM (Memory System Resource Partitioning and Monitoring) wurde implementiert, ein Erweiterung der ARMv8-A-Befehlssatzarchitektur zur Kennzeichnung jedes Zugriffs auf den Speicher mit einer Abschnitts-ID (PARTID, Partition ID) und einer Monitoring Group ID (PMG). In Verbindung mit PARTID kann der Ressourcenverbrauch, wie z.B. die Speicherkapazität oder die Cache-Größe, eingeschränkt werden, um zu verhindern, dass eine Gruppe von Aufgaben alle Ressourcen beansprucht. Im Kontext des Monitorings kann die Kombination von PMG und PARTID zur Überwachung des Speicherressourcenverbrauchs unter bestimmten Lastarten verwendet werden.
    • Im Falle eines unerwarteten Prozessabbruchs nach dem Empfang eines Signals kann ein anderer Prozess, der das pidfd des beendeten Prozesses besitzt, jetzt die Signalnummer ermitteln, die zum Abbruch des Prozesses geführt hat.
    • Die Implementierung der wieder aufrufbaren Sequenzen (restartable sequences) wurde überarbeitet, die es Anwendungen ermöglichen, eine pseudo-atomare, nicht unterbrechbare Ausführung einer Gruppe von Anweisungen zu organisieren (im Falle einer Unterbrechung durch einen anderen Thread wird ein erneuter Versuch der Ausführung der Sequenz unternommen). Die neue Implementierung zeichnet sich durch eine verbesserte hoher Leistung.
    • Für BPF-Programme wurden die Anweisungen BPF_JMP, BPF_X und BPF_JA zur Durchführung indirekter Sprünge zu bestimmten Positionen in der Sprungtabelle implementiert. Es wurde das Konzept dynamischer Zeiger (dynptr) hinzugefügt, das das Lesen von Daten aus strukturierten Dateien ermöglicht. Außerdem wurde die Möglichkeit hinzugefügt, mehrere Bytes mit Metadaten an Netzwerkpakete anzuhängen.
    • Die in Python geschriebenen Module zur Verarbeitung der Dokumentation für den Kernel wurden in ein separates Verzeichnis tools/lib/python verschoben.
    • Die Funktion mempool_alloc_bulk() wurde hinzugefügt, um Elemente sicher aus einem Speicherpool für mehrere Objekte gleichzeitig zuzuweisen.
    • Der Transfer von Änderungen aus dem Rust-for-Linux-Zweig, die die Verwendung der Programmiersprache Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen betreffen, wurde fortgesetzt (die Unterstützung für Rust ist standardmäßig nicht aktiviert und führt nicht dazu, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört). In der neuen Version ist die Bibliothek „syn“ mit einem Rust-Code-Parser in den Kernel integriert, was das Schreiben komplexer Makros erleichtert. Die Funktionen der Bibliotheken kernel, pin-init und rbtree wurden erweitert. Die Bibliothek 'num' mit dem Integer-Typ zur Manipulation von Ganzzahlen wurde hinzugefügt. Der Makro „module!“ unterstützt jetzt ganzzahlige Parameter. Es wurde die Möglichkeit implementiert, Parameter beim Laden von Kernelmodulen, die in Rust geschrieben sind, anzugeben. Abstraktionen für die I2C- und PWM-Unterbereiche (Pulsweitenmodulation) wurden realisiert.
    • Der Makro „at_least“ (zum Beispiel „param[at_least 7]“), der über die minimal zulässige Größe des Arrays informiert, das an die Funktion übergeben wird, wurde hinzugefügt. Wenn ein Array mit weniger Elementen an die Funktion übergeben wird, gibt der Compiler eine Warnung aus.
    • Das Skript klp-build zur Generierung von Kernelmodulen, die Änderungen am laufenden Kernel (livepatch) vornehmen, basierend auf einer Patch-Datei, wurde enthalten. Änderungen wurden an dem Tool objtool vorgenommen, die zur Erstellung von Live-Patches erforderlich sind.
    • In User-mode Linux (Ausführung des Kernels als Benutzerprozess) wurde eine eingeschränkte Unterstützung für Mehrprozessortauglichkeit hinzugefügt, jedoch können Threads innerhalb eines Prozesses derzeit nicht gleichzeitig ausgeführt werden. Das Portieren von User-mode Linux auf die Bibliothek nolibc hat begonnen.
    • Unterstützung für die Architektur LoongArch32 (LA32R, LA32S) zusätzlich zu LoongArch64 wurde hinzugefügt.
    • Die Möglichkeit zur Festlegung von QoS-Grenzwerten für die Intensität des Erwachens des Prozessors im energiesparenden s2idle-Modus (Suspend-To-Idle), der die Ausführung von Prozessen im Benutzerspeicher einfriert, aber bestimmte Handler im Kernel aktiv lässt, wurde hinzugefügt.
    • Die Unterstützung für die Verwaltung von Seitenverwaltungstabellen für IOMMU (Input-Output Memory Management Unit)-Controller, die die Übersetzung von virtuellen Adressen, die für Hardware sichtbar sind, in physische Adressen durchführen, wurde hinzugefügt. Dabei können DMA-Operationen nach virtuellen Adressen gefiltert sowie Ein- und Ausgabebetriebe begrenzt und isoliert werden.
    • In den Ereignissen der Systemaufrufverfolgung wurde die Möglichkeit realisiert, Puffer aus dem Benutzerspeicher zu lesen und deren Inhalt (z. B. Dateinamen) in das Verfolgungsergebnis aufzunehmen.
    • Wachseiten im Speicher (guard pages), deren Zugriff eine Ausnahme auslöst und den Prozess abstürzt (SIGSEGV), werden jetzt mit einem speziellen Tag in der Datei /proc/PID/smaps gekennzeichnet.
    • Die Möglichkeit zur Verwaltung von großen Speicherseiten (transparent huge page) im privaten Speicher zonierter Geräte wurde hinzugefügt.
    • Im zram-Gerät, das zur komprimierten Speicherung des Swap-Bereichs im Speicher verwendet wird, wurde die Unterstützung für das Auslagern mehrerer „bio“-Strukturen (Block I/O) im Batch-Modus (writeback batching) realisiert.
    • Die Schriftart „Terminus 10×18“, die die Lesbarkeit von Informationen auf Konsolenbildschirmen von Notebooks mit mittlerer Auflösung (1440×900) verbessert, wurde hinzugefügt.
    • Die Leistung des Auditsubsystems wurde erheblich optimiert - es wurde eine Reduktion der Overheadkosten um das Zweifache festgestellt.
  • Virtualisierung und Sicherheit
    • Die Unterstützung für die von Intel-Prozessoren bereitgestellte Möglichkeit zur Trennung des linearen Adressraums (LASS, linear address-space separation) wurde hinzugefügt. Dies ermöglicht, die Adressbereiche des Benutzer- und Kernelraums hardwareseitig zu trennen, um die Sicherheit zu erhöhen. Der Adressraum wird nach dem höchsten Bit der Adresse unterteilt — die Hälfte des Adressraums mit dem gesetzten höchsten Bit wird für den Kernel verwendet, während der untere Teil für den Benutzerraum vorgesehen ist. In einer frühen Phase der Ausführung von Instruktionen (vor der spekulativen Ausführung) erfolgt eine Überprüfung der Berechtigung des Zugriffs aus dem Benutzerraum auf Adressen mit gesetztem höchsten Bit und umgekehrt. Diese Trennung ermöglicht es, Speicherlecks des Kernels in den Benutzerraum über Nebenkanäle selbst bei spekulativer Ausführung von Instruktionen zu blockieren, was den Einsatz von LASS zum Schutz vor Angriffen der Klassen Meltdown und Spectre ermöglicht, ohne erhebliche Mehrkosten zu verursachen.
    • Die Möglichkeit zur Aktivierung von Sicherheitserweiterungen für den PCI Express-Bus — PCIe Link Encryption und PCIe Device Authentication — wurde hinzugefügt. Diese ermöglichen die Authentifizierung und Verschlüsselung der Kommunikationsverbindung zwischen einem PCIe-Gerät und einer durch Intel TDX (Trusted Domain Extensions) oder AMD SEV-SNP (Secure Nested Paging) geschützten virtuellen Maschine. Die implementierten Technologien verhindern das Abfangen, Analysieren und Einfügen von Daten in den DMA-Verkehr, wenn Zugriff auf das Host-System oder andere Geräte besteht.
    • Die integrierte Kryptobibliothek unterstützt nun die Algorithmen SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 und BLAKE2b.
    • Für die LSM-Module (Linux Security Modules) und insbesondere für SELinux wurde die Möglichkeit implementiert, die Erstellung von memfd-Deskriptoren zu verfolgen, um Sicherheitsrichtlinien auf die damit verbundenen Objekte anzuwenden.
    • Im LSM-Modul IPE (Integrity Policy Enforcement), das die allgemeine Integritätsrichtlinie für das gesamte System definiert, wurde die Unterstützung des Flags AT_EXECVE_CHECK in der Funktion execveat() hinzugefügt, welches die Integritätsprüfung des Skripts vor seiner Ausführung durch den Interpreter aktiviert.
    • Es wurden die Primitiven scoped_user_read_access(), scoped_user_write_access und scoped_user_rw_access() für den eingeschränkten Zugriff auf Daten im Benutzerraum mit Schutz vor spekulativen Angriffen hinzugefügt.
    • Die Unterstützung des Confidential VMBus-Mechanismus wurde hinzugefügt, der im Hypervisor HyperV für den vor Eindringlingen geschützten Austausch zwischen dem im vertraulichen Modus ausgeführten Gastbetriebssystem (mit Speicherverschlüsselung und Registerisolierung basierend auf AMD SNP- und Intel TDX-Technologien) und dem Paravisor verantwortlich ist, der für den Zugriff auf die Geräte zuständig ist, die vertrauliche Daten verarbeiten.
    • Die Möglichkeit zur Übertragung von Informationen über einen unerwartet beendeten Prozess (zur Generierung eines Coredumps) über den PIDFD-Mechanismus wurde hinzugefügt. Die PIDFD-Identifikation ist an einen bestimmten Prozess gebunden und ändert sich nicht, während die PID an einen anderen Prozess gebunden werden kann, nachdem der aktuelle Prozess, der mit dieser PID assoziiert ist, beendet wurde. Die Verwendung von PIDFD ermöglicht es, Angriffe auf den unerwartet beendeten SUID-Prozess durch Ersetzung durch einen anderen Prozess zu blockieren, wodurch ein Zustand der Rennen entsteht, nachdem das Kernel mit der Bearbeitung des unerwarteten Endes begonnen hat, jedoch bevor der Handler im Benutzerspeicher die Prozessparameter überprüft.
  • Netzwerksubsystem
    • Es wurden Optimierungen in der Netzwerksubsystem vorgenommen, um die Effizienz der Datenübertragung (TX) zu steigern. Die Funktion __dev_queue_xmit() wurde von Spinlocks befreit, und die Verwendung einer lockfreien llist-Struktur hat die Leistung unter hoher Last ver vierfacht und die Paketübertragung bei reduzierter CPU-Last verdoppelt.
    • Die Möglichkeit zur Deaktivierung von systemweiten Speicherkontingenten für bestimmte Netzsockets wurde bereitgestellt (in diesem Fall werden die für bestimmte Container festgelegten allgemeinen Speicherkontingente verwendet). Zur Verwaltung der Deaktivierung der Kontingente wurde sysctl net.core.bypass_prot_mem und das Flag SK_BPF_BYPASS_PROT_MEM in der Funktion bpf_setsockopt vorgeschlagen.
    • Die Unterstützung der RFC 5837-Erweiterung wurde hinzugefügt, die in ICMP-Nachrichten "Time Exceeded", die bei Überschreitung der Lebensdauer (TTL) von Paketen zurückgegeben werden, Informationen über die eingehenden Netzwerkinterfaces hinzufügt, um detailliertere Informationen bei der Routenverfolgung mit dem Tool traceroute zu erhalten.
    • Die Unterstützung für kontinuierliches aktives Polling (busy polling) in einem separaten Kernel-Thread wurde hinzugefügt, um Deskriptoren aus RX/TX-Warteschlangen für Anwendungen zu extrahieren, die minimale Latenzen benötigen.
    • Unterstützung für das CAN XL-Protokoll (Controller Area Network eXtended Length) hinzugefügt, bei dem die Datengröße auf 2048 Bytes erhöht wurde, um die Integration mit TCP/IP-Netzwerken zu ermöglichen. Eine Tunnelung von Ethernet-Frames wurde implementiert, und Unterstützung für Pulsweitenmodulation (PWM) hinzugefügt, die die Datenübertragungsgeschwindigkeiten von 20 Mbit/s und mehr ermöglicht.
    • Unterstützung für die Struktur sockaddr_unsized hinzugefügt, eine Variante der sockaddr-Struktur, die ein Array mit flexiblen Elementen anstelle eines Arrays fester Größe verwendet (sa_data[] anstelle von sa_data[14], das im Wesentlichen für Verweise auf andere Strukturen größeren Formats verwendet wurde).
    • Die Nutzung von getsockname und getpeername über das io_uring-Subsystem wurde ermöglicht.
    • Die sysctl-Parameter net.ipv4.tcp_rcvbuf_low_rtt und net.ipv4.tcp_comp_sack_rtt_percent wurden zur Optimierung von TCP hinzugefügt.
    • Unterstützung für Links mit einer Bandbreite von 1600 Gbps (1,6 T) hinzugefügt.
  • Ausrüstung
    • Die DRM-Subsystem (Direct Rendering Manager) API zur Nutzung von Hardware-Farbkonvertierungsfunktionen wurde hinzugefügt, die es ermöglichen, solche Konvertierungen ohne Shader oder CPU-Code durchzuführen. Für die Anzeige von Inhalten auf HDR-Monitoren können komplexe Farbkonvertierungen nun vom Display-Controller vor und nach dem Mischen von Schichten (Blending) durchgeführt werden, anstelle der softwarebasierten Komposition des Inhalts im endgültigen Anzeigepuffer. Neben der Reduzierung von Overhead und Energieverbrauch bei der Ausgabe von HDR-Inhalten kann die vorgeschlagene Funktionalität auch für eine korrekte Farbwiedergabe in Video- oder Bildbearbeitungsprogrammen verwendet werden.
    • Ein Treiber 'ethosu' für die ARM Ethos U65- und U85-NPU, die zur Hardwarebeschleunigung der Ausführung von KI-Modellen bestimmt sind, wurde hinzugefügt.
    • Im i915-Treiber für GPUs der Lunar Lake-Serie und neuer wurde Unterstützung für die Hardwarebildschärfung (Sharpening) hinzugefügt.
    • Die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel Xe-Architektur, die in Intel-Grafikkarten der Arc-Serie und integrierter Grafik ab Tiger Lake-Prozessoren verwendet wird, wurde fortgesetzt. Erste Unterstützung für die Xe3P-Architektur, die in den GPUs Crescent Island und in den Prozessorfamilien mit integrierter Grafik Nova Lake verwendet wird, wurde hinzugefügt.
    • Im AMDGPU-Treiber wurde eine vollwertige Unterstützung für die AMD-Grafikkarten der GCN 1.0 "Southern Island" und 1.1 "Sea Islands" implementiert, für die zuvor der Radeon-Treiber verwendet wurde. Der AMDGPU-Treiber erreicht die gleichen Funktionalitäten wie der Radeon-Treiber und ist standardmäßig für die angegebenen GPUs aktiviert. Die GCN 1.x-Karten wurden von 2012 bis 2019 hergestellt und umfassen Modelle wie Radeon HD 77xx/78xx/79xx/87xx/88xx/89xx, Radeon R9 280, FirePro W4000-W9000, Radeon Sky 700/900, Radeon R9 265/270/370, Radeon R9 290/390, HD 7790/8870 und andere Grafikkarten der Radeon Rx 200/Rx 300-Familien. Neben einer durchschnittlichen Leistungssteigerung von 24 % ermöglichte der Wechsel zu AMDGPU die Unterstützung der Grafik-API Vulkan 1.3 für diese GPUs. Darüber hinaus wurde die Unterstützung für analoge Anschlüsse und Video Coding Engine 1.0 in AMDGPU hinzugefügt, und der DC (Display Core)-Stack wurde standardmäßig für GPUs auf Basis der Mikroarchitektur Bonaire (Radeon HD 7700) aktiviert.
    • Im Nouveau-Treiber wurde die Unterstützung für den Hardwarebeschleuniger NVJPG implementiert, der in SoC Tegra210 vorhanden ist.
    • Im Panthor-Treiber wurde die Unterstützung für die GPU Mali-G1 und die anfängliche Unterstützung des MediaTek MT8196-Chips hinzugefügt.
    • Die Unterstützung für die Sound-Subsysteme der Intel Nova Lake S-Chips, HP-Laptops mit HDA CS35L41 sowie die Audio-Schnittstellen CIX IPBLOQ HD und Onkyo SE-300PCIE wurde hinzugefügt.
    • Die Integration der Komponenten des Nova-Treibers für NVIDIA-GPUs, die mit GSP-Firmware ausgestattet sind, die ab der NVIDIA GeForce RTX 2000-Serie auf der Grundlage der Turing-Mikroarchitektur verwendet wird, wurde fortgesetzt. Der Treiber wurde in Rust geschrieben. In der neuen Version wurde mit der Arbeit an RPC begonnen und die Implementierung des GSP (GPU System Processor)-Co-Prozessors abgeschlossen.
    • Die Unterstützung von ARM-Plattformen, SoCs und Geräten wurde hinzugefügt: Bananapi r4 pro, LinkEase EasePi R1, Qualcomm MSM8937 (Snapdragon 430), Renesas R-Car X5H, FriendlyElec NanoPi R76S, TI AM62L, Black Sesame Technologies C1200, Aspeed AST2600, Genio 1200 EVK, grinn geniosbc-510/700, Tanix TX9 Pro, Radxa Dragon Q6A, Tinker Board 3/3S, Aquila AM69, phyBOARD-Segin-i.MX91, i.MX 95 Verdin Evaluation Kit, Toradex SMARC iMX95, VIDIA Jetson Nano 2GB, Renesas rz/g3s, Indiedroid Nova, 24 Varianten von Enclustra Mercury-Platinen.
    • Die Unterstützung für Smartphones und Tablets auf Basis des SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) und Qualcomm MSM8939 (ASUS ZenFone 2) wurde hinzugefügt. Die Unterstützung für Laptops auf SoC Qualcomm sdm850, wie das Huawei MateBook E 2019, wurde hinzugefügt.
    • Die Unterstützung für SoC und Platinen auf Basis der RISC-V-Architektur wurde hinzugefügt: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.

Zur selben Zeit hat die lateinamerikanische Free Software Foundation eine vollständig freie Kernel-Variante 6.19 – Linux-libre 6.19-gnu entwickelt, die von Firmware- und Treiberkomponenten gereinigt wurde, die nicht-freie Elemente oder Codeabschnitte enthalten, deren Nutzung durch den Hersteller eingeschränkt ist. Im Release 6.19 wurde der Code zum Laden binärer Firmware aus dem SDCA-Audiosubsystem entfernt. Der Code zur Reinigung von Blobs in den Treibern Intel XE, Nova-Core, Qualcomm Iris, Venus und Q6V5, TI PRUeth, Intel iwlwifi, Marvell mwifiex, FourSemi fs210x, Realtek rt1320 und den Audio-Codecs TI tas2783 wurde aktualisiert. Die Bereinigung von Blob-Namen in dts-Dateien (Device Tree) für ARM-Chips wurde durchgeführt. Die Bereinigung des Treibers STM C8SECTPFE DVB, der aus dem Kernel entfernt wurde, wurde eingestellt.

Quelle: opennet.ru

60GB SSD 8Gb DDR4