Nach zweimonatiger Entwicklungszeit veröffentlichte Linus Torvalds den Kernel. Linux 6.12. Zu den wichtigsten Änderungen gehören: die Möglichkeit, den Echtzeitmodus zu aktivieren, sched_ext zum Erstellen von CPU-Schedulern über eBPF, QR-Code-Ausgabe in Notfallsituationen, Device Memory TCP-Mechanismus, SCHED_DEADLINE Serverressourcenreservierungsmechanismus, Verbesserung des EEVDF-Task-Schedulers, IPE-Modul zum Festlegen von Integritätsrichtlinien.
Die neue Version enthält 14607 Fixes von 2167 Entwicklern, die Patchgröße beträgt 37 MB (die Änderungen betrafen 13087 Dateien, 507913 Codezeilen wurden hinzugefügt, 234083 Zeilen wurden gelöscht). Die letzte Version enthielt 15130 Fixes von 2078 Entwicklern, die Patchgröße betrug 85 MB (im 6.10-Kernel war der Patch 41 MB groß). Ungefähr 45 % aller in 6.12 eingeführten Änderungen beziehen sich auf Gerätetreiber, ungefähr 12 % der Änderungen beziehen sich auf die Aktualisierung von Code, der für Hardwarearchitekturen spezifisch ist, 13 % beziehen sich auf den Netzwerkstapel, 6 % beziehen sich auf Dateisysteme und 3 % beziehen sich auf beziehen sich auf interne Kernel-Subsysteme.
Wichtige Neuerungen im Kernel 6.12:
- Speicher- und Systemdienste
- Die Möglichkeit, den Kernel mit der Option PREEMPT_RT ohne zusätzliche Patches für den Echtzeitbetrieb zu kompilieren, ist nun gegeben. Das letzte fehlende Kernel-Feature, das die Aktivierung des PREEMPT_RT-Modus verhinderte, war die Unterstützung für nicht-blockierende atomare Ausgaben über die printk-Funktion, die nun ebenfalls im Kernel enthalten ist. PREEMPT_RT wird für die Architekturen x86, x86_64, ARM64 und RISC-V unterstützt. Bisher wurde die Implementierung des PREEMPT_RT-Modus in Form externer Patches bereitgestellt, die von einigen Distributionen wie RHEL, SUSE und anderen nicht verwendet wurden. Ubuntu, haben separate Echtzeit-Editionen ihrer Produkte entwickelt, die in Bereichen wie Finanzsystemen, Audio- und Videoverarbeitungsgeräten, Luftfahrt, Medizin, Robotik, Telekommunikation und Industriesystemen gefragt sind, wo eine vorhersehbare Ereignisverarbeitungszeit erforderlich ist.
- Der Mechanismus „sched_ext“ (SCX) wurde hinzugefügt, der die Verwendung von eBPF zur Erstellung von CPU-Schedulern ermöglicht, die praktisch alle Aspekte der Aufgabenplanung und CPU-Ressourcenzuweisung abdecken. Solche Scheduler können dynamisch geladen und im Kernel ausgeführt werden. Linux в virtuelle Maschine eBPF. Der sched_ext-Mechanismus vereinfacht die Erstellung aufgabenspezifischer Scheduler, ermöglicht das Experimentieren mit verschiedenen Scheduling-Techniken und -Strategien und erlaubt die schnelle Entwicklung funktionsfähiger Prototypen sowie den dynamischen Austausch von Schedulern in Produktionsumgebungen. Mit sched_ext lässt sich beispielsweise ein Scheduler erstellen, der die Besonderheiten einer bestimmten Anwendung berücksichtigt und seine Scheduling-Strategie dynamisch an den Systemzustand und andere Faktoren anpasst.
- Die Zusammenstellung umfasst den verbleibenden Teil der Patches, die für den Betrieb des Servermechanismus SCHED_DEADLINE erforderlich sind, der das Problem der Unterauslastung der CPU-Ressourcen durch normale Aufgaben löst, wenn die CPU durch Aufgaben mit hoher Priorität (Echtzeit) monopolisiert wird. Um eine CPU-Monopolisierung zu verhindern, verwendete der Kernel zuvor den Echtzeit-Drosselungsmechanismus, der versuchte, 5 % für Aufgaben mit niedriger Priorität zu reservieren, sodass 95 % der Zeit für Echtzeitaufgaben übrig blieben. Dieser Mechanismus ließ zu wünschen übrig, da gewöhnliche Aufgaben in vielen Situationen nicht genügend Prozessorzeit erhielten. Der SCHED_DEADLINE-Server implementiert einen effizienteren Ressourcenreservierungsmechanismus.
- Die Integration des EEVDF-Aufgabenplaners (Earliest Eligible Virtual Deadline First) wurde abgeschlossen, der den CFS-Scheduler (Completely Fair Scheduler) ersetzt, der ab Kernel 2.6.23 bereitgestellt wird. Der neue Scheduler berücksichtigt bei der Auswahl des nächsten Prozesses, an den die Ausführung übertragen werden soll, Prozesse, die nicht genügend Prozessorressourcen oder ungerechtfertigt viel Prozessorzeit erhalten haben. Im ersten Fall wird die Übergabe der Kontrolle an den Prozess erzwungen, im zweiten Fall dagegen verschoben. Der alte CFS-Scheduler verwendete Heuristik und Feinabstimmung, um Prozesse zu identifizieren, die besondere Aufmerksamkeit erforderten, während der neue Planer sie expliziter verfolgt und keine Feinabstimmung erfordert. Es wird erwartet, dass EEVDF Verzögerungen bei Aufgaben reduziert, bei denen CFS Planungsprobleme hatte.
- Im Kernel-Notfallhandler DRM Panic, der das DRM-Subsystem (Direct Rendering Manager) verwendet, um einen visuellen Bericht im Stil des „Blue Screen of Death“ anzuzeigen, besteht die Möglichkeit, ein Logo und einen QR-Code mit einem kmsg-Bericht anzuzeigen Der Bildschirm, wenn ein Notfallzustand eintritt, wurde hinzugefügt. Da nur 2953 Bytes in einen QR-Code passen, wird die Option DRM_PANIC_SCREEN_QR_CODE_URL bereitgestellt, bei der der kmsg-Bericht mithilfe von zlib komprimiert und als Parameter an die URL angehängt wird, wodurch etwa 40 Bytes über den V7500-QR-Code übertragen werden können. Beim Erstellen von Paketen mit dem Kernel können Distributionen eine Basis-URL für die URL festlegen, die es ihnen ermöglicht, zu einer Seite zu navigieren, auf der sie ein Problem melden können. Zur Auswahl des QR-Code-Formats steht die Einstellung DRM_PANIC_SCREEN_QR_VERSION zur Verfügung.
- Unterstützung für ARM POE (Permission Overlay Extension) hinzugefügt, mit der Sie Zugriffsrechte auf Speicherbereiche festlegen können. Mit dieser Erweiterung kann auf Systemen mit ARM64-Prozessoren der Memory Protection Keys-Mechanismus implementiert werden, der dazu dient, den Zugriff auf Speicherseiten zu beschränken, ohne die Speicherseitentabelle zu ändern.
- Für Loongarch-, ARM64-, PowerPC- und s390-Architekturen wurde die Implementierung des Systemaufrufs getrandom() verschoben und mithilfe des vDSO-Mechanismus (Virtual Dynamic Shared Object) optimiert, der es ermöglicht, den Systemaufruf-Handler vom Kernel zum Benutzer zu verschieben Platz sparen und Kontextwechsel vermeiden. Durch die Optimierung können Sie die Generierung von Zufallszahlen um das bis zu 15-fache beschleunigen.
- Dem asynchronen Eingabe-/Ausgabe-Subsystem io_uring wurde die Möglichkeit hinzugefügt, absolute Zeitüberschreitungen zu verwenden, die ausgelöst werden, wenn eine bestimmte Zeit auf der Systemuhr erreicht ist (zuvor konnten nur relative Zeitüberschreitungen festgelegt werden, die die Dauer ab Beginn des Vorgangs anzeigten). ).
- Dateien zum Generieren von Bindungen für die libcpupower-Bibliothek mithilfe des SWIG-Toolkits hinzugefügt, mit dem Sie Bindungen aus C/C++-Code für verschiedene Programmiersprachen generieren können. Mit Bindungen können Sie Skripte in Python und anderen Sprachen erstellen und diese verwenden, um die Funktionalität der libcpupower-Bibliothek zu erweitern, die eine API zum Verwalten von cpufreq und Treibern aus dem Benutzerbereich bereitstellt.
- Das Dienstprogramm cpuidle zeigt den Wert des Ruhezustands „Residency“ an, der für Echtzeitsysteme verwendet wird und die Mindestzeit berücksichtigt, die der Prozessor im Ruhezustand sein muss, um die Energiekosten für den Übergang in und aus diesem Zustand zu rechtfertigen.
- Die Möglichkeit, den Clang-Compiler zum Erstellen der Standard-C-Bibliothek nolibc zu verwenden, die im Kernel-Quellcode enthalten ist, wurde hinzugefügt. Linux und stellt eine Wrapper-Funktion für grundlegende Systemaufrufe bereit. Beim Kompilieren von nolibc in Clang wird die Linkzeitoptimierung (LTO) aktiviert.
- Einige cgroup1-Schnittstellen sind veraltet, z. B. TCP-Accounting, Soft Limit Version XNUMX und Speicherauslastungsmanagement. Die Unterstützung für diese Funktionen bleibt vorerst in vollem Umfang bestehen, und es wird gewarnt, die Anzahl der Benutzer zu untersuchen, die diese Funktionen weiterhin nutzen.
- Es wurde die Möglichkeit hinzugefügt, einen Ring-Trace-Puffer zu konfigurieren, um die gesammelten Daten nach einem Neustart zu speichern, sodass Sie im Falle eines Kernel-Absturzes keine gesammelten Debugging-Informationen verlieren. Die Daten werden im Speicher abgelegt. Die Aktivierung erfolgt über den Kernel-Befehlszeilenparameter „trace_instance“. Durch die Einstellung „trace_instance=boot_map@0x285400000:12M“ werden beispielsweise 12 MB Speicher bei 0x285400000 für den „boot_map“-Puffer reserviert, auf den über die Datei /sys/kernel zugegriffen werden kann /tracing/instances/boot_map.
- Fortsetzung der Migration von Änderungen aus dem Rust-for-BranchLinuxDie Verwendung von Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen wurde verbessert (Rust-Unterstützung ist nicht standardmäßig aktiviert und Rust gehört nicht zu den erforderlichen Build-Abhängigkeiten des Kernels). Die Module „list“ und „rbtree“ für die Arbeit mit doppelt verketteten Listen und Rot-Schwarz-Suchbäumen wurden hinzugefügt. Die Funktionalität der Module „init“, „sync“, „types“ und „error“ wurde erweitert. Die Verwendung von Rust-Code beim Erstellen eines Kernels mit Schutz vor Spectre-Angriffen (Optionen MITIGATION_{RETHUNK,RETPOLINE,SLS}), unter Verwendung des KASAN-Debugging-Systems, der Schutzmechanismen kCFI (Kernel Control Flow Integrity) und Shadow Call sowie bei Verwendung zusätzlicher GCC-Plugins wurde ermöglicht. Ein in Rust geschriebener Treiber für den Applied Micro QT2025 PHY Ethernet-Controller wurde hinzugefügt. Eine separate Website mit Dokumentation ist verfügbar: rust.docs.kernel.org.
- Das Hilfsprogramm xdrgen wurde dem Kernel-Quellcode hinzugefügt, um XDR-Spezifikationen (eXternal Data Representation) in XDR-Codierungs- und Decodierungsfunktionen umzuwandeln, die im vom Kernel übernommenen C-Stil geschrieben wurden. Linux.
- Der Kernel wurde geändert, um einen Zeigermaskierungsmechanismus zu implementieren, um die Anzahl langsamer Aufrufe von barrier_nospec() in der 64-Bit-Funktion copy_from_user() zu reduzieren, die zum Kopieren von Daten aus dem Benutzerbereich in den Kernel verwendet wird. Die Verwendung von Maskierung beschleunigt den „per_thread_ops“-Test, der die Anzahl der Operationen bewertet, die in einem Thread ausgeführt werden können, um 2.6 %.
- Es wurde ein neuer USB-Treiber hinzugefügt, der es Ihnen ermöglicht, das 9pfs-Protokoll als Transport zum Senden und Empfangen von Daten von einem USB-Gerät zu verwenden, wenn Sie das 9p-Dateisystem über USB mounten (z. B. „mount -t 9p -o trans=usbg, aname=/pfad/zu/fs /mnt/9"). Ein Beispiel für die Verwendung des neuen Treibers ist seine Verwendung anstelle von NFS, um den Start der Root-Partition bei der Entwicklung eingebetteter Geräte zu organisieren.
- Festplattensubsystem, E/A und Dateisysteme
- Dem VFS-Subsystem wurde die Möglichkeit hinzugefügt, mit Speichergeräten zu arbeiten, deren Blockgröße größer ist als die Größe der Speicherseite im System. In Dateisystemen wird diese Funktion derzeit nur in XFS unterstützt.
- Das FUSE-Subsystem, mit dem Sie Implementierungen von Dateisystemen erstellen können, die im Benutzerbereich ausgeführt werden, verfügt über Unterstützung für die Zuordnung von Benutzerkennungen gemounteter Dateisysteme, die dazu dienen, die Dateien eines bestimmten Benutzers auf einer gemounteten fremden Partition mit einem anderen Benutzer auf der aktuellen Partition abzugleichen System.
- Eine neue fcntl-Operation, F_CREATED_QUERY, wurde implementiert, die einer Anwendung die Möglichkeit gibt, zu bestimmen, ob eine mit dem O_CREAT-Flag geöffnete Datei erstellt wurde oder ob sie bereits zuvor vorhanden war.
- Es wurde die Möglichkeit hinzugefügt, eindeutige 64-Bit-Mount-Punkt-IDs zum Systemaufruf name_to_handle_at() zu verwenden, um Race-Bedingungen beim Parsen von /proc/mountinfo zu vermeiden.
- Die Größe der „Datei“-Struktur im Kernel wurde von 232 auf 184 Byte reduziert, was den Speicherverbrauch auf Systemen reduziert, die aktiv mit Dateien arbeiten.
- Das Mounten von Dateisystemen an Mountpunkten innerhalb der /proc-Hierarchie, wie z. B. /proc/PID/fd, war verboten, was zu potenziellen Sicherheitsproblemen führte.
- Das Pseudo-FS NSFS (NameSpace FS), das für die Arbeit mit Namespaces verwendet wird, liefert zusätzliche Informationen über die Namespaces von Mount-Punkten.
- Das Dateisystem EROFS (Extendable Read-Only File System), das für die Verwendung auf schreibgeschützten Partitionen entwickelt wurde, unterstützt jetzt das direkte Mounten von Dateisystemen aus als Dateien gespeicherten Disk-Images.
- Für den Austausch von Inhalten zwischen zwei Dateien wurden XFS die neuen ioctl-Befehle XFS_IOC_START_COMMIT und XFS_IOC_COMMIT_RANGE hinzugefügt.
- NFS bietet nun Unterstützung für das „LOCALIO“-Protokoll, mit dem Sie feststellen können, ob der Client und Server NFS auf demselben Host, um die entsprechenden Optimierungen zu ermöglichen.
- Im Btrfs-Dateisystem wurden Leistungsoptimierungen vorgeschlagen, der Code wurde überarbeitet, der Bereich der Bereichssperre während Lesevorgängen wurde reduziert, die Arbeit an der Konvertierung von Speicherseiten zur Verwendung von Seitenfolios wurde fortgesetzt und die automatische Speicherfreigabe wurde durchgeführt für die btrfs_path-Struktur implementiert.
- Im Ext4-Dateisystem wurden Fehler im Zusammenhang mit der Blockzuteilung, Extent-Verwaltung, Fast Commit und Journaling behoben.
- Virtualisierung und Sicherheit
- Das von Microsoft entwickelte IPE-LSM-Modul (Integrity Policy Enforcement) wurde hinzugefügt, um das bestehende obligatorische Zugangskontrollsystem zu erweitern. Mit dem Modul können Sie eine allgemeine Integritätsrichtlinie für das gesamte System definieren, die angibt, welche Vorgänge zulässig sind und wie die Authentizität von Komponenten überprüft werden soll. Mithilfe von IPE können Sie beispielsweise festlegen, welche ausführbaren Dateien ausgeführt werden dürfen, und dabei deren Übereinstimmung mit der Referenzversion mithilfe kryptografischer Hashes berücksichtigen, die vom dm-verity-System bereitgestellt werden.
- In der Kernel-Kompilierungsphase ist es möglich, verfügbare Schutzmethoden gegen verschiedene Schwachstellen der Spectre-Klasse in der CPU separat zu aktivieren. Kconfig bietet neue Parameter: MITIGATE_MDS (Schutz vor der Schwachstelle Microarchitectural Data Sampling), MITIGATE_TAA (Schutz vor der Schwachstelle TSX Asynchronous Abort), MITIGATE_MMIO_STALE_DATA (Schutz vor der Schwachstelle MMIO Stale Data), MITIGATE_L1TF (Schutz vor der Schwachstelle L1 Terminal Fault), MITIGATE_RETBLEED (Schutz vor Retbleed-Schwachstellen), MITIGATE_SPECTRE_V1, MITIGATE_SPECTRE_V2 (Schutz vor Spectre-Schwachstellen), MITIGATE_SRBDS (Schutz vor der Schwachstelle Special Register Buffer Data Sampling), MITIGATE_SSB (Schutz vor der Schwachstelle Speculative Store Bypass).
- Befehlszeilenoption proc_mem.force_override und eine Reihe von Assembly-Einstellungen in Kconfig (PROC_MEM_FORCE_ALWAYS, PROC_MEM_FORCE_PTRACE und PROC_MEM_FORCE_NEVER) hinzugefügt, um Speicheränderungen über /proc/pid/mem zu verhindern.
- LSM-Subsystem (Linux Das Sicherheitsmodul wurde auf die Verwendung statischer Aufrufe umgestellt, was die Sicherheit und Leistung verbessert hat.
- Die Möglichkeit, Standardkerne für die ARM64-Architektur in Gastumgebungen zu verwenden, die auf Android-Systeme mit einem modifizierten KVM-Hypervisor (geschütztes KVM).
- Das Landlock LSM-Modul, mit dem Sie die Interaktion einer Gruppe von Prozessen mit der externen Umgebung einschränken können, implementiert das „IPC-Scoping“-Konzept, um die Interaktion mit Sandbox-Umgebungen mithilfe von Unix-Sockets und -Signalen selektiv einzuschränken. Sie können beispielsweise Verbindungen über Unix-Sockets aus einer Sandbox-Umgebung zu Prozessen verbieten, auf die keine Isolation angewendet wurde, aber Verbindungen zu Prozessen im gleichen Bereich zulassen.
- Im KVM-Hypervisor wurde der CPUID für Gastsysteme ein Flag hinzugefügt, das die Unterstützung für AVX10.1-Erweiterungen anzeigt.
- Netzwerk-Subsystem
- Der Gerätespeicher-TCP-Mechanismus wurde hinzugefügt und ermöglicht die Verwendung von Netzwerk-Sockets, um den Inhalt des Speichers von Peripheriegeräten direkt über das Netzwerk zu senden (Zero-Copy-Modus) und den Inhalt von Netzwerkpaketen direkt im Gerätespeicherbereich auf dem zu platzieren Empfängerseite. In Paketen übertragene Daten werden unter Umgehung der CPU von der Netzwerkkarte an den Speicher eines Peripheriegeräts oder vom Gerätespeicher direkt an die Netzwerkkarte übertragen, und die Paketheader landen in regulären Kernel-Puffer.
- Die Fähigkeiten vieler Ethernet- und Wireless-Treiber wurden erweitert. Beispielsweise fügte der Intel iwlwifi-Treiber Unterstützung für die Verlagerung von RLC/SMPS-Vorgängen auf die Firmware-Seite hinzu, der RealTek rtw89-Treiber erhöhte die Leistung und fügte Unterstützung für RTL8852BT/8852BE-VT (WiFi 6)-Chips hinzu, der Mikrochip-Ethernet-Treiber fügte Unterstützung für IEEE 802.3 hinzu bw (100BASE)-Spezifikationen -T1) und IEEE 802.3bp, verbesserte virtuelle Ethernet-Implementierungen Microsoft vNIC und IBM veth. Neue Treiber für Realtek RTL9054, RTL9068, RTL9072, RTL9075, RTL9068, RTL9071 und Microchip LAN8650/1 10BASE-T1S MAC-PHY Ethernet-Chips hinzugefügt.
- Bei MPTCP (MultiPath TCP), einer Erweiterung des TCP-Protokolls zur Organisation der gleichzeitigen Zustellung von TCP-Paketen auf mehreren Routen über verschiedene Netzwerkschnittstellen, wird die Größe der beim Routing verwendeten Gewichte von 8 auf 16 Bit erhöht. Es wurde die Erkennung von verlorenem (Blackhole-)Verkehr und die vorübergehende Unterbrechung von Verbindungsversuchen mit Systemen implementiert, was zu Verkehrsverlusten führte.
- Für IPv6 ist die Unterstützung für das „p“-Flag im PIO (Prefix Information Option) implementiert, das in RA-Ankündigungen (IPv6 Router Advertisements) verwendet wird, um ein Client-Bereitstellungsmodell über DHCPv6-PD (DHCPv6 Prefix Delegation, RFC9663) anstelle einer Zuweisung auszuwählen individuelle Adressen basierend auf Präfixen mittels SLAAC (Stateless Address Autoconfiguration). IPv6 IOAM6 bietet Unterstützung für einen neuen tunsrc-Kapselungsmodus, der eine bessere Leistung ermöglicht.
- Verbesserte Leistung bei der Verarbeitung von IPsec-Kontrollpaketen.
- Verbesserte Leistung beim Leeren großer nftables-Regelsätze. nfnetlink_queue hat die Unterstützung für das SCTP-Protokoll verbessert.
- Die Ethtool-API bietet Unterstützung für die Bindung mehrerer Netzwerkkarten an eine Netzwerkschnittstelle.
- Ausrüstung
- Im AMDGPU-Treiber wird weiterhin an der Implementierung der Unterstützung für AMD RDNA4 („GFX12“) GPUs gearbeitet. Es wurde die Möglichkeit hinzugefügt, einzelne Aufgabenwarteschlangen zurückzusetzen, ohne die gesamte GPU zurückzusetzen.
- Die Arbeiten am Xe drm-Treiber (Direct Rendering Manager) für GPUs auf Basis der Intel Xe-Architektur, der in Grafikkarten der Intel Arc-Familie und integrierten Grafiken verwendet wird, beginnend mit Tiger Lake-Prozessoren, wurden fortgesetzt. Die neue Version bietet Unterstützung für GPUs, die auf den Mikroarchitekturen Battlemage und Lunar Lake basieren. Unterstützung für Xe2 CCS-Modifikatoren (Color Control Surface) wurde eingeführt, um die Parameter integrierter und diskreter GPUs zu steuern.
- Der i915-Treiber implementiert die Möglichkeit, Informationen über die Lüftergeschwindigkeit über die HWMON- oder sysfs-Schnittstelle auszugeben (das Attribut „fan1_input“). Der Parameter „i915.modeset“ ist veraltet; der Parameter „i915.nomodeset“ sollte anstelle von „i0.modeset=915“ verwendet werden.
- Unterstützung für A615-, A306- und A621-GPUs zum msm DRM-Treiber (Qualcomm Adreno GPU) hinzugefügt.
- Die internen Strukturen des Nouveau-Treibers wurden überarbeitet und gereinigt.
- Der intel_pstate-Treiber, der die Stromverbrauchsparameter (P-State) auf Systemen mit Intel-Prozessoren steuert, hat Unterstützung für Hybridsysteme mit asymmetrischen (unterschiedlichen Eigenschaften) CPUs sowie Unterstützung für die Energieverwaltung von Prozessoren basierend auf Granite Rapids und Sierra Forest hinzugefügt Mikroarchitekturen. Unterstützung für Xeon Granite Rapids CPU zum intel_idle-Treiber hinzugefügt. Der intel_rapl-Treiber ermöglicht die Erkennung von Prozessen der AMD 1Ah-Familie und Intel ArrowLake-U-Prozessoren.
- Weitere Änderungen zur Unterstützung des ARM-SoC Snapdragon X Elite, der Qualcomms eigene 12-Kern-Oryon-CPU und Qualcomm Adreno-GPU verwendet. Der Chip ist für den Einsatz in Laptops und PCs konzipiert und liegt in vielen Leistungstests vor den Chips Apple M3 und Intel Core Ultra 155H.
- Unterstützung für ARM-Boards, SoCs und Geräte hinzugefügt: Broadcom bcm2712 (Raspberry Pi 5), Renesas R9A09G057 (RZ/V2H), Qualcomm Snapdragon 414 (MSM8929), Lenovo ThinkPad T14s Gen 6, Lenovo A6000/A6010, Surface Laptop 7, Anbernic RG35XXSP , Firefly Core-PX30-JD4, Lunzn Fastrhino R68S, Aspeed Riser, AGX Orin, Rockchip Qnap-TS433, Huashan Pi, Meta Catalina, BeagleY-AI, NanoPi R2S Plus, ExynosAuto v920, SOPHGO SG2002, Qualcomm IPQ5332, LG G4 (h815) CoolPi CM5 GenBook, Anbernic RG35XXSP, GameForce Ace, IBM P11, Kontron i.MX93 OSM-S, NanoPC-T6
- Unterstützung für Anbernic RG28XX, On Tat Industrial Company KD50G21-40NT-A1, Innolux G070ACE-LH3, Melfas lmfbx101117480, Densitron DMT028VGHMCMI-1D, Microchip AC40T08A, AOU B116XTN02.3 und AUO-Bildschirmpanels hinzugefügt B116XAN06.1, AOU B116XAT04.1, BOE TV101WUM-LL2, BOE NV140WUM-N41, BOE NV133WUM-N63, BOE NV116WHM-A4D, BOE NE140WUM-N6G, CMN N116BCA-EA2, CMN N116BCP-EA2, CSW MNB601LS1-4, Starry er88577.
- Das Audio-Subsystem hat Unterstützung für Chips und Codecs RME Digiface USB, AMD ACP 7.1, Mediatek MT6367, MT8365, Realtek RTL1320 und C-Media CM9825 hinzugefügt. Alte Soundtreiber für Intel ASoC wurden für veraltet erklärt und es wird empfohlen, stattdessen AVS-Treiber zu verwenden. Am SoundWire-Treiber wurden viele Verbesserungen vorgenommen.
Source: opennet.ru
