Nach zwei Monaten Entwicklung hat Linus Torvalds die Version 6.19 des Linux-Kernels veröffentlicht. Zu den bemerkenswertesten Änderungen gehören: das Live Update Orchestrator-Subsystem, 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 Erstellung von Live-Patches, Unterstützung der LoongArch32-Architektur, QoS für s2idle, Optimierung des Auditsubsystems, Intel LASS zum Schutz vor Spectre, Unterstützung der Hash-Algorithmen SHA-3 und BLAKE2b, der Confidential VMBus-Mechanismus, TX-Optimierungen im Netzwerk-Subsystem sowie das CAN XL-Protokoll und APIs zur hardwarebasierten Beschleunigung von HDR-Ausgaben.
In der Ankündigung der neuen Version teilte Linus mit, dass die nächste Kernel-Version die Nummer 7.0 erhalten wird. In der 6.x-Serie haben sich ausreichend viele Releases angesammelt, um die erste Ziffer der Versionsnummer zu ändern (zumal die Version 6.0 im Anschluss an 5.19 veröffentlicht wurde). Die Änderung der Nummerierung erfolgt aus ästhetischen Gründen und ist ein formaler Schritt, um das Unbehagen aufgrund der Vielzahl an Releases in der Serie zu beseitigen. Linus witzelte, dass ihn große Zahlen verwirren, für die ihm die Finger an Händen und Füßen nicht ausreichen. Gleichzeitig gibt es einen formalen Grund für eine signifikante Änderung der Versionsnummer, da ab der nächsten Version die Unterstützung für Rust von experimentellen in die Hauptfunktionen des Kernels überführt wird.
In die neue Version wurden 15.657 Korrekturen von 2.237 Entwicklern aufgenommen, die Patchgröße beträgt 52 MB (die Änderungen betreffen 13.682 Dateien, es wurden 794.649 Codezeilen hinzugefügt und 335.498 Codezeilen entfernt). In der vorherigen Version gab es 15.035 Korrekturen von 2.217 Entwicklern, die Patchgröße betrug 45 MB. Etwa 40% aller in 6.19 vorgenommenen Änderungen betreffen Gerätetreiber, rund 13% der Änderungen beziehen sich auf spezifische Codeaktualisierungen für Hardwarearchitekturen, 12% sind mit dem Netzwerk-Stack verbunden, 5% mit Dateisystemen und 3% mit internen KernsSubsystemen.
Die wichtigsten Neuerungen im Kernel 6.19 (1, 2, 3):
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Bei Btrfs blockieren die Prozesse zur Überprüfung des Dateisystems (scrub) und den Austausch von Geräten nicht mehr den Wechsel des Systems in den Energiesparmodus (vor dem Schlafen wird der Zustand der scrub-Überprüfung gespeichert; nach dem Aufwachen wird die scrub-Überprüfung fortgesetzt und die Austauschoperation der Geräte neu gestartet). Die Implementierung von RAID56 umfasst jetzt die Unterstützung von Blöcken, deren Größe die Größe der Speicherseite übersteigt. Vorbereitungen zur Unterstützung von fscrypt wurden getroffen. Die Leistung bei der Arbeit mit Sperren bei der Durchführung von Speicherplatzreservierungsoperationen wurde verbessert. Die Unterstützung für den ioctl-Befehl "shutdown" wurde hinzugefügt, der es dem Dateisystem ermöglicht, in einen Zustand zu wechseln, in dem versucht wird, bereits gestartete Operationen abzuschließen, während alle neuen Operationen blockiert werden.
- Im Ext4-Dateisystem wurde die Unterstützung für Blöcke implementiert, deren Größe die Seitenzwischenspeichergröße überschreitet (>4KB auf x86-Systemen). Die Verwendung größerer Blöcke kann die Leistung von gepufferten Schreiboperationen im Durchschnitt um 50 % verbessern, beeinträchtigt jedoch die Leistung der direkten Ein- und Ausgabe aufgrund der erhöhten Berechnungszeit für Prüfziffern. In der neuen Version wurden auch 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 Seitenfolien (large folios) verbessert. Über iomap wird die Möglichkeit zur Nachverfolgung von teilweise aktuellen Folien realisiert, um nur die Daten zu laden, die im Puffer fehlen.
- Im VFS wurde die Unterstützung für widerrufbare Verzeichniskoordination (recallable directory delegation) hinzugefügt, die es ermöglicht, im NFS die Verordnungszuständigkeit für Verzeichnisse zu übertragen. Server dem Client, sodass der NFS-Client den Status des Verzeichnisses ohne Anfragen an den NFS-Server selbstständig basierend auf dem lokalen Cache überwachen kann. Wenn ein anderer NFS-Client Änderungen an diesem Verzeichnis vornimmt, wird die Verwaltung des ersten Clients zurückgezogen.
- Für NFS wurde die Unterstützung für das Lesen im Direct I/O-Modus hinzugefügt. Die Einstellungen /sys/kernel/debug/nfsd/io_cache_read und /sys/kernel/debug/nfsd/io_cache_write wurden implementiert, um das Caching und die Direct I/O-Operationen zu steuern; die Manipulation dieser Einstellungen ermöglicht eine Reduzierung des Overheads auf der Seite des NFS-Clients während großer Ein-/Ausgabe-Operationen.
- In NTFS wurde die Unterstützung für den ioctl-Befehl shutdown implementiert, die Standard-Mount-Optionen "acl" und "prealloc" wurden aktiviert, sowie eine Unterstützung für die Zeit bis zum 1. Januar 1970 hinzugefügt.
- Für Blockgeräte und Dateisysteme wurde standardmäßig ein separates Caching von Objekten "bio" (Block I/O) für jede CPU aktiviert, das aktive Ein-/Ausgabe-Operationen definiert.
- Speicher und Systemdienste
- Im Kernel ist das Live Update Orchestrator (LUO) System integriert, das es ermöglicht, den Kernel vollständig neu zu starten und zu aktualisieren, ohne den Betrieb zu unterbrechen und dabei den Zustand des Systems, der Geräte und der Prozesse zu verlieren. Das LUO-System basiert auf dem zuvor in den Kernel eingefügten KHO-Mechanismus (Kexec HandOver) und löst zusätzlich zur Möglichkeit, einen neuen Kernel aus einem alten ohne Verlust des Systemzustands zu starten, auch Aufgaben wie die Speicherung des Zustands von Geräten und Arbeitsspeicher sowie die Gewährleistung der Kontinuität von Operationen, die mit DMA und Interrupt-Verarbeitung verbunden sind. Der Zustand wird bis zum Wechsel auf den neuen Kernel gespeichert und nach der Aktivierung des neuen Kernels wiederhergestellt, ohne die kontinuierlichen Operationen mit Geräten zu stören, die von System und Anwendungen im Benutzerspeicher durchgeführt werden.
- Der Systemaufruf listns() wurde hinzugefügt, um eine Liste der im System vorhandenen Namensräume auszugeben, ohne dass es erforderlich ist, /proc//ns/ für alle Prozesse zu durchsuchen.
- Im io_uring-System für asynchrone Ein- und Ausgabe wurde die Unterstützung für die Platzierung von Elementen unterschiedlicher Größe in der Versandwarteschlange (SQE, Submission Queue Entry) hinzugefügt, ähnlich wie im vorherigen Release, wo das Mischen der Größe der Elemente in der Ergebniswarteschlange (CQE, Completion Queue Event) erlaubt wurde. Zuvor mussten alle Elemente in der Warteschlange dieselbe Größe haben, was zu übermäßigem Speicherverbrauch führte, da die maximale Größe für alle Elemente in der Warteschlange verwendet werden musste.
Im io_uring wurde außerdem die Unterstützung für den Mechanismus zcrx (Zero-Copy Receive) hinzugefügt, um Daten ohne Kopieren zwischen dem Kernel und dem Benutzermodus zu empfangen. Unterstützung für Speicherlayout-Abfragen für die Warteschlangen SQ (Submission Queue) und CQ (Completion Queue) wurde hinzugefügt, um Informationen über die Größe des ringpuffers zu erhalten, die bei der benutzerspezifischen Speicherzuweisung mit den Flags IORING_SETUP_NO_MMAP und IORING_MEM_REGION_TYPE_USER erforderlich sind.
- Für eine schnelle Stack-Trace mit Tools wie perf wurde die Unterstützung des SFrame-Formats hinzugefügt, das Informationen über das Unwind des Funktionsaufrufs enthält. SFrame wird bereits von GCC und binutils unterstützt, beeinträchtigt die Leistung nicht und enthält im Gegensatz zum DWARF-Format nur die minimal notwendigen Informationen für die Stack-Trace.
- Die perf-Utility unterstützt jetzt die einheitliche Beschreibung von Metriken und Ereignissen im JSON-Format sowie das verzögerte Unwinden (deferred unwinding) des Stacks im Benutzerspeicher.
- Für AMD-Prozessoren wurde ein Mechanismus zur Datenersetzung im Cache implementiert, der es Eingabe-/Ausgabegeräten ermöglicht, Daten direkt in den L3-Cache der CPU zu schreiben, ohne sie zuvor im RAM zu speichern.
- Unterstützung für MPAM (Memory System Resource Partitioning and Monitoring) hinzugefügt, eine Erweiterung der ARMv8-A-Befehlssatzarchitektur, um jede Speicheranfrage mit einer Partitions-ID (PARTID) und einer Überwachungsgruppen-ID (PMG) zu kennzeichnen. In Verbindung mit PARTID können Ressourcen wie Speicherbandbreite oder Cache-Größe eingeschränkt werden, sodass eine Aufgabe nicht alle Ressourcen beansprucht. Im Monitoring-Kontext kann die Kombination von PMG und PARTID zur Überwachung der Speichernutzung bei bestimmten Lastarten verwendet werden.
- Im Falle eines unerwarteten Prozessabbruchs nach dem Erhalt eines Signals kann ein anderer Prozess, der den pidfd des beendeten Prozesses hat, nun die Signalnummer bestimmen, die zur Beendigung des Prozesses geführt hat.
- Die Implementierung von wiederherstellbaren Sequenzen (restartable sequences) wurde überarbeitet, die es Anwendungen ermöglichen, eine pseudoatomare, nicht unterbrochene Ausführung von Gruppen von Anweisungen zu organisieren (bei Unterbrechung durch einen anderen Thread wird ein erneuter Versuch zur Ausführung der Sequenz unternommen). Die neue Implementierung zeichnet sich durch mehr aus. hoher Leistung kombiniert..
- Für BPF-Programme wurden die Instruktionen BPF_JMP, BPF_X und BPF_JA implementiert, um indirekte Sprünge auf eine bestimmte Position aus der Sprungtabelle zu ermöglichen. Das Konzept dynamischer Zeiger (dynptr) wurde hinzugefügt, um Daten aus strukturierten Dateien zu lesen. Zudem wurde die Möglichkeit eingeführt, mehreren Bytes mit Metadaten an Netzwerkpakete anzuhängen.
- Die in Python geschriebenen Module zur Verarbeitung der Dokumentation des Kernels wurden in das Verzeichnis tools/lib/python verschoben.
- Die Funktion mempool_alloc_bulk() wurde hinzugefügt, um die sichere Zuweisung von Elementen aus dem Speicherpool für mehrere Objekte auf einmal zu ermöglichen.
- Die Übertragung von Änderungen aus dem Branch Rust-for-Linux wird fortgesetzt, die die Verwendung von Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen betrifft (die Rust-Unterstützung ist standardmäßig deaktiviert und führt nicht dazu, dass Rust zu den erforderlichen 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. Eine neue Bibliothek ‚num‘ mit dem Trait Integer zur Manipulation von Ganzzahlen wurde hinzugefügt. Der „module!“-Makro erhielt Unterstützung für 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 (Pulsweitenmodulation)-Subsysteme wurden realisiert.
- Ein neuer Macro „at_least“ wurde hinzugefügt (zum Beispiel „param[at_least 7]“), der über die minimal zulässige Größe des Arrays informiert, das an die Funktion übergeben wird. Wenn ein Array mit weniger Elementen an die Funktion übergeben wird, gibt der Compiler eine Warnung aus.
- Im Paket ist das Skript klp-build enthalten, das Module für den Kernel generiert, die Änderungen am laufenden Kernel (Livepatch) basierend auf einer Patch-Datei vornehmen. In das Werkzeug objtool wurden die notwendigen Änderungen für die Erstellung von Live-Patches integriert.
- In User-mode Linux (Ausführung des Kernels als Benutzerprozess) wurde eine eingeschränkte Unterstützung für Mehrprozessorsysteme hinzugefügt, jedoch können Threads innerhalb eines Prozesses derzeit nicht gleichzeitig ausgeführt werden. Das Portieren von User-mode Linux auf die nolibc-Bibliothek hat begonnen.
- Die Unterstützung für die Architektur LoongArch32 (LA32R, LA32S) wurde zusätzlich zu LoongArch64 hinzugefügt.
- Es wurde die Möglichkeit hinzugefügt, QoS-Limits für die Intensität der CPU-Aktivierung im Energiesparmodus s2idle (Suspend-To-Idle) festzulegen, der die Ausführung von Prozessen im Benutzerspeicher einfriert, bestimmte Handler jedoch im Kernel aktiv lässt.
- Die Unterstützung für das Management von Speicherseiten-Tabellen für IOMMU-Controller (Input-Output Memory Management Unit), die die Übersetzung von virtuellen Adressen, die von Hardwaregeräten gesehen werden, in physische Adressen durchführen, wurde hinzugefügt, mit der Möglichkeit, DMA-Operationen basierend auf virtuellen Adressen zu filtern sowie Eingabe- und Ausgabeoperationen zu begrenzen und zu isolieren.
- In den Ereignissen der Systemaufruf-Trace ist die Möglichkeit implementiert, Pufferspeicher aus dem Benutzerspace zu lesen und deren Inhalte (zum Beispiel Dateinamen) in das Trace-Ergebnis einzuschließen.
- Speicherwächterseiten (guard page), deren Zugriff eine Ausnahme und das Abbauen des Prozesses (SIGSEGV) verursacht, werden nun in der Datei /proc/PID/smaps mit einem speziellen Tag markiert.
- Die Möglichkeit zur Verwaltung großer Speicherseiten (transparent huge page) im privaten Speicher zonierter Geräte wurde hinzugefügt.
- Im zram-Gerät, das für die komprimierte 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) implementiert.
- Die Schriftart 'Terminus 10×18' wurde hinzugefügt, um die Lesbarkeit von Informationen auf Konsolenbildschirmen von Notebooks mit mittlerer Auflösung (1440×900) zu verbessern.
- Die Leistung des Auditsystems wurde erheblich optimiert – die Overheadkosten wurden um die Hälfte reduziert.
- Virtualisierung und Sicherheit
- Die Unterstützung für die von Intel-Prozessoren bereitgestellte Funktion zur Trennung des linearen Adressraums (LASS, linear address-space separation) wurde hinzugefügt, die es ermöglicht, die Adressbereiche des Benutzer- und Kernelraums hardwaremäßig zu trennen, um die Sicherheit zu erhöhen. Der Adressraum wird anhand des höchstwertigen Bits der Adresse getrennt – die Hälfte des Adressraums mit gesetztem höchstwertigem Bit wird für den Kernel verwendet, und die untere Hälfte für den Benutzerspeicher. In einer frühen Phase der Ausführung von Anweisungen (in der Phase vor der spekulativen Ausführung) wird die Zulässigkeit des Zugriffs aus dem Benutzerraum auf Adressen mit gesetztem höchstwertigem Bit und umgekehrt überprüft. Diese Trennung ermöglicht es, die Speicherlecks des Kernels in den Benutzerspeicher über sekundäre Kanäle, selbst bei spekulativer Ausführung von Anweisungen, zu blockieren, wodurch es möglich wird, LASS zum Schutz vor Meltdown- und Spectre-Angriffen anzuwenden, ohne dass es zu hohen Overhead-Kosten kommt.
- Die Möglichkeit zur Aktivierung von Sicherheitserweiterungen für den PCI Express-Bus wurde hinzugefügt – PCIe Link Encryption und PCIe Device Authentication, die es ermöglichen, die Authentizität zu bestätigen und die Kommunikationskanäle zwischen dem PCIe-Gerät und der virtuellen Maschine zu verschlüsseln. Diese sind durch Intel TDX (Trusted Domain Extensions) und AMD SEV-SNP (Secure Nested Paging) abgesichert. Die implementierten Technologien verhindern das Abfangen, Analysieren und Einfügen von Daten in den DMA-Verkehr bei Zugriff auf das Host-System oder andere Geräte.
- Die integrierte Kryptografiebibliothek unterstützt jetzt die Algorithmen SHA-3 (SHA3-224, SHA3-256, SHA3-384, SHA3-512), SHAKE128, SHAKE256 und BLAKE2b.
- Für LSM-Module (Linux Security Modules) und insbesondere 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ätspolitik 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 von Skripten vor ihrer Ausführung durch den Interpreter aktiviert.
- Die Funktionen scoped_user_read_access(), scoped_user_write_access und scoped_user_rw_access() wurden hinzugefügt, um den eingeschränkten Zugriff auf Daten im Benutzerraum mit Schutz vor spekulativen Angriffen zu ermöglichen.
- Unterstützung für den Mechanismus Confidential VMBus wurde hinzugefügt, der im Hypervisor HyperV verwendet wird, um eine aus dem Hypervisor geschützte Interaktion zwischen dem Gastsystem, das im vertraulichen Modus (mit Speicherverschlüsselung und Isolation von Registern auf Basis von AMD SNP und Intel TDX) ausgeführt wird, und dem Paravisor, der für den Zugriff auf Geräte zuständig ist, die vertrauliche Daten verarbeiten.
- Die Möglichkeit hinzugefügt, Informationen über einen unerwartet beendeten Prozess (zur Erstellung eines Coredumps) über den pidfd-Mechanismus zu übertragen. Die PIDFD-ID ist mit einem bestimmten Prozess verknüpft und bleibt unverändert, während die PID nach dem Beenden des aktuellen Prozesses, der mit dieser PID verknüpft ist, an einen anderen Prozess gebunden werden kann. Die Verwendung von pidfd ermöglicht es, Angriffe auf den Austausch eines beendeten SUID-Prozesses mit einem anderen Prozess zu verhindern, indem ein Race Condition-Zustand erreicht wird, nachdem das Kernel mit der Handhabung des unerwarteten Beendens begonnen hat, aber bevor der Benutzerraum-Handhabungsparameter des Prozesses überprüft wird.
- Netzwerksubsystem
- Im Netzwerksubsystem wurden Optimierungen zur Verbesserung der Effizienz der Datenübertragung (TX) vorgenommen. Die Beseitigung der Spin-Locks in der Funktion __dev_queue_xmit() und die Verwendung der sperrfreien llist-Struktur haben die Leistung unter hoher Last vervierfacht und die Paketübertragungsintensität bei verringerter CPU-Last verdoppelt.
- Es wurde die Möglichkeit geschaffen, die systembedingten Speichernutzungslimits für einzelne Netzwerk-Sockets zu deaktivieren (in diesem Fall werden die allgemeinen Limits für den Speicher verwendet, die für einzelne Container festgelegt sind). Zur Verwaltung der Deaktivierung der Limits wurde sysctl net.core.bypass_prot_mem und das Flag SK_BPF_BYPASS_PROT_MEM in der Funktion bpf_setsockopt vorgeschlagen.
- Unterstützung für die Erweiterung RFC 5837 hinzugefügt, die in ICMP-Nachrichten „Time Exceeded“, die bei Ablauf der Lebenszeit (TTL) eines Pakets zurückgegeben werden, Informationen über die eingehenden Netzwerkinterfaces stattfindet, um detailliertere Informationen bei der Routenverfolgung mit dem Tool traceroute zu erhalten.
- Unterstützung für aktives Busy Polling in einem separaten Kernel-Thread hinzugefügt, um Deskriptoren aus RX/TX-Warteschlangen für Anwendungen zu extrahieren, die minimale Latenzen erfordern.
- Unterstützung für das Protokoll CAN XL (Controller Area Network eXtended Length) hinzugefügt, bei dem die Größe des Datenfeldes auf 2048 Bytes erhöht wurde, um die Integration mit TCP/IP-Netzen zu ermöglichen, die Möglichkeit zum Tunnelbetrieb von Ethernet-Frames implementiert und die Unterstützung für Pulsweitenmodulation hinzugefügt, die Datenraten von 20 Mbit/s und mehr ermöglicht.
- Unterstützung für die sockaddr_unsized Struktur hinzugefügt, eine Variante der sockaddr Struktur, die ein Array mit flexiblen Elementen anstelle eines Arrays mit fester Größe verwendet (sa_data[] anstelle von sa_data[14], das im Wesentlichen für Verweise auf andere größere Strukturen verwendet wurde).
- Möglichkeit zur Nutzung der Funktionalität von getsockname und getpeername über das io_uring Subsystem hinzugefügt.
- Neue sysctl Parameter net.ipv4.tcp_rcvbuf_low_rtt und net.ipv4.tcp_comp_sack_rtt_percent zur Optimierung von TCP hinzugefügt.
- Unterstützung für Verbindungen mit einer Bandbreite von 1600 Gbps (1.6T) hinzugefügt.
- Ausrüstung
- In das DRM (Direct Rendering Manager) Subsystem wurde eine API integriert, die die Nutzung der Hardwarefähigkeiten zur Farbkonvertierung ermöglicht und damit die Notwendigkeit vermeidet, solche Konvertierungen über Shaders oder CPU-Code auszuführen. Für die Ausgabe von Inhalten auf einem HDR-Monitor können komplexe Farbkonvertierungen jetzt vom Display-Controller in der Phase vor und nach dem Mischen der Schichten (blending) durchgeführt werden, anstelle von softwarebasierter Komposition im finalen Anzeige-Puffer. Neben der Reduzierung von Overhead und Energieverbrauch bei der Ausgabe in HDR kann die angebotene Funktionalität auch zur korrekten Farbwiedergabe in Video- oder Bildbearbeitungsprogrammen verwendet werden.
- Ein Treiber für „ethosu“ wurde für die NPU Arm Ethos U65 und U85 hinzugefügt, der zur hardwaremäßigen Beschleunigung der Ausführung von AI-Modellen dient.
- Im i915-Treiber für GPUs der Lunar Lake-Serie und neuer wurde die Unterstützung für hardwaregestütztes Bildschärfen (Sharpening) hinzugefügt.
- Die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs basierend auf der Intel Xe Architektur, die in Intel Arc Grafikkarten und integrierter Grafik, beginnend mit Tiger Lake Prozessoren, verwendet wird, wurde fortgesetzt. Erste Unterstützung für die Architektur Xe3P, die in der GPU Crescent Island und in Prozessorfamilien mit integrierter Grafik Nova Lake verwendet wird, wurde hinzugefügt.
- Der AMDGPU-Treiber bietet vollständige Unterstützung für AMD-Grafikkarten der GCN-Familien 1.0 "Southern Island" und 1.1 "Sea Islands", für die zuvor der Radeon-Treiber verwendet wurde. Der AMDGPU-Treiber wurde hinsichtlich der Fähigkeiten auf dasselbe Niveau wie der Radeon-Treiber gebracht und ist standardmäßig für die genannten GPUs aktiviert. GCN 1.x-Karten wurden von 2012 bis 2019 produziert 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 % erlaubt der Übergang zu AMDGPU auch die Implementierung des Grafik-APIs Vulkan 1.3 für diese GPUs. Darüber hinaus wurde die Unterstützung analoger Anschlüsse und des 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.
- Der Nouveau-Treiber unterstützt den in SoC Tegra210 integrierten Hardwarebeschleuniger NVJPG.
- Im Panthor-Treiber wurde die Unterstützung für die GPU Mali-G1 und die erste Unterstützung für den MediaTek MT8196-Chip hinzugefügt.
- Die Unterstützung für die Audioundersysteme der Intel Nova Lake S-Chips, die HP-Laptops mit HDA CS35L41 und die Audiointerfaces CIX IPBLOQ HD und Onkyo SE-300PCIE wurde hinzugefügt.
- Die Integration der Nova-Treiberkomponenten für NVIDIA-GPUs mit GSP-Firmware, die mit der NVIDIA GeForce RTX 2000-Serie auf der Turing-Mikroarchitektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. In der neuen Version wurde die Arbeit an RPC aufgenommen und die Implementierung des GSP-Co-Prozessors (GPU System Processor) abgeschlossen.
- Unterstützung für ARM-Plattformen, SoCs und Geräte 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 der Enclustra Mercury-Plattformen hinzugefügt.
- Unterstützung für Smartphones und Tablets mit SoC Mediatek MT6582 (Alcatel yarisxl), Nvidia Tegra124 (Xiaomi Mi Pad) und Qualcomm MSM8939 (ASUS ZenFone 2) hinzugefügt. Unterstützung für Laptops mit SoC Qualcomm sdm850, wie dem Huawei MateBook E 2019, hinzugefügt.
- Unterstützung für SoCs und Plattformen auf Basis der RISC-V-Architektur hinzugefügt: OrangePi R2S, OrangePi RV, Anlogic dr1v90, Tenstorrent Blackhole.
Gleichzeitig hat die lateinamerikanische Stiftung für Freie Software eine vollständig freie Version des Kernels 6.19 - Linux-libre 6.19-gnu, die von Firmware-Elementen und Treibern befreit ist, die nichtfreie Komponenten oder Codeabschnitte enthalten, deren Verwendung durch den Hersteller eingeschränkt ist, erstellt. Im Release 6.19 wurde der Code zum Laden binärer Firmwares aus dem SDCA-Audiosubsystem entfernt. Der Code zur Bereinigung 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 Reinigung der Blob-Namen in den 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
