Nach zwei Monaten Entwicklung prĂ€sentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 6.14. Zu den bemerkenswertesten Ănderungen gehören: der ntsync-Treiber mit Synchronisationsprimitiven fĂŒr Windows NT, die Anpassung der Lastverteilung bei LesevorgĂ€ngen in Btrfs RAID1, UnterstĂŒtzung von reflink in XFS im Realtime-Modus, die Möglichkeit von nicht-cachierbarem gepuffertem I/O, dmem cgroup zur Begrenzung des GPU-Speichers, die Nutzung von io_uring in FUSE, die Delegation von Attributen in NFS, UnterstĂŒtzung fĂŒr atomare SchreibvorgĂ€nge im Device Mapper, Beschleunigung von symbolischen Links, Verwaltung der AusfĂŒhrungsfĂ€higkeit von Skripten, UnterstĂŒtzung fĂŒr Qualcomm Snapdragon 8 Elite Chips, einen Treiber fĂŒr NPU AMD.
In die neue Version wurden 12115 Fehlerbehebungen von 1984 Entwicklern aufgenommen, die PatchgröĂe betrĂ€gt 39 MB (die Ănderungen betreffen 10170 Dateien, 531586 Codezeilen wurden hinzugefĂŒgt, 235999 Zeilen entfernt). In der vorherigen Veröffentlichung gab es 14172 Fehlerbehebungen von 2086 Entwicklern, die PatchgröĂe betrug 46 MB. Etwa 41 % aller in 6.14 eingefĂŒhrten Ănderungen beziehen sich auf GerĂ€tetreiber, etwa 13 % auf Updates von architekturspezifischem Code, 14 % auf das Netzwerk-Stack, 7 % auf Dateisysteme und 4 % auf interne Subsysteme des Kernels.
Die wichtigsten Neuerungen im Kernel 6.14:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Btrfs-Dateisystem wurde die UnterstĂŒtzung neuer Methoden zur Lastverteilung bei LesevorgĂ€ngen zwischen den Laufwerken im RAID1-Verbund eingefĂŒhrt. Neben der bereits bestehenden Lastverteilung auf Basis von Prozess-IDs (pid) bietet die neue Version drei neue Lastverteilungsmodi an: ârotationâ (gleichmĂ€Ăige Verteilung der Last auf alle Laufwerke, standardmĂ€Ăig aktiviert); âlatencyâ (Verteilung unter BerĂŒcksichtigung von Verzögerungen, kann bei AusfĂ€llen oder instabiler Arbeitsweise von Laufwerken nĂŒtzlich sein); devid (manuelle Steuerung). FĂŒr die Ănderung des Lastverteilungsmodus wurde die Schnittstelle â/sys/fs/btrfs//read_policyâ hinzugefĂŒgt. Zu den weiteren Ănderungen in Btrfs gehört die Implementierung von ioctl FS_IOC_READ_VERITY_METADATA.
- Ein Modus fĂŒr nicht zwischengespeicherte Puffereingaben/-ausgaben wurde hinzugefĂŒgt, bei dem die Daten aus dem Seitencache sofort gelöscht werden, nachdem die Lese- oder Schreiboperationen abgeschlossen sind. Diese Ănderung kann nĂŒtzlich sein, wenn sehr schnelle SpeichergerĂ€te verwendet werden, bei denen das Zwischenspeichern von Operationen im Arbeitsspeicher ĂŒberflĂŒssig ist. FĂŒr solche GerĂ€te ermöglicht der neue Modus, den ĂŒbermĂ€Ăigen Speicherverbrauch durch den Seitencache zu vermeiden, ohne auf die komplexe API fĂŒr direkte Eingabe/Ausgabe (Direct I/O) zurĂŒckzugreifen.
- Im fsnotify, dem Mechanismus zur Verfolgung von Ănderungen im Dateisystem, wurde ein neues Ereignis FS_PRE_ACCESS hinzugefĂŒgt, das in der Phase vor dem Zugriff auf den Inhalt einer Datei generiert wird. Das Ereignis wird synchron verarbeitet, d.h. der Kernel sendet das Ereignis und wartet auf eine Antwort. Wenn die Antwort eingeht, wird die Operation ausgefĂŒhrt, und wenn ein Fehler auftritt, gibt der Systemaufruf einen Fehlercode an den Benutzerraum zurĂŒck. Mithilfe von FS_PRE_ACCESS kann der Prozess im Benutzerraum beispielsweise das AuffĂŒllen der Datei entsprechend der VerfĂŒgbarkeit der Daten in einem langsamen Speicher organisieren.
- In das FUSE-Subsystem, das die Implementierung von Dateisystemen im Benutzerraum ermöglicht, wurde die UnterstĂŒtzung fĂŒr den Datenaustausch zwischen dem Kernel und dem Handler im Benutzerraum unter Verwendung des Eingabe/Ausgabe-Mechanismus io_uring hinzugefĂŒgt. Diese Ănderung erhöht die Leistung von FUSE, indem die Kontextwechsel zwischen Kernel und Benutzerraum reduziert werden.
- Im Dateisystem XFS wurde die Möglichkeit der Nutzung von Reverse-Mapping (rmap) im Modus mit vorhersehbaren Latenzen (ârealtime deviceâ) hinzugefĂŒgt. Mit Reverse-Mapping kann festgestellt werden, welcher Block auf dem Speichermedium fĂŒr die Speicherung welcher Datei verwendet wird. Durch rmap wird im XFS fĂŒr den Realtime-Modus die UnterstĂŒtzung der Operation reflink realisiert, die es ermöglicht, Kopien von Dateien durch Klonen der Dateimetadaten zu erstellen und einen Link zu bereits vorhandenen Daten zu schaffen, ohne diese tatsĂ€chlich zu kopieren.
- Im VFS wurde das Caching der GröĂe von symbolischen Links implementiert, was eine Beschleunigung von 1,5% bei der AusfĂŒhrung der Operation readlink (im Test mit /initrd.img in ext4) ermöglichte. Das Caching ist im Dateisystem ext4 und tmpfs aktiviert.
- In der Implementierung von NFSv4.2 wurde die UnterstĂŒtzung fĂŒr die Delegation von Dateiattributen hinzugefĂŒgt, die es ermöglicht, solche Dateiattribute wie die Ănderungszeit (mtime) auf der Seite des NFS-Clients zu verwalten, ohne Ănderungen auf den Server zurĂŒcksetzen zu mĂŒssen. Zudem wurde die UnterstĂŒtzung fĂŒr das Protokoll âLOCALIOâ verbessert, das es ermöglicht festzustellen, ob sich der NFS-Client und der Server auf demselben Host befinden, um entsprechende Optimierungen wie die Nutzung von Direct I/O durch den Client zu aktivieren.
- Die Leistung der Leseoperationen in den Dateisystemen NETFS, CIFS und AFS (Andrew File System) wurde verbessert.
- In Squashfs wurde der Modus fĂŒr das direkte Laden von Blöcken in den Seitencache (SQUASHFS_FILE_DIRECT) integriert, der es ermöglicht, auf einen separaten Cache fĂŒr read_page zu verzichten. Diese Ănderung hat die Menge an Speicher reduziert, die Squashfs wĂ€hrend des Betriebs benötigt.
- Im Systemaufruf statx() wurde das Flag STATX_DIO_READ_ALIGN implementiert, um die erforderliche Ausrichtung fĂŒr LesevorgĂ€nge aus einer Datei zu bestimmen.
- Im Dateisystem Bcachefs wurde das Format der DatentrĂ€gerstrukturen aktualisiert und stabilisiert. ZukĂŒnftige Ănderungen am Format werden als optional betrachtet und sollen in Form von ergĂ€nzenden Optionen umgesetzt werden. Die Geschwindigkeit der IntegritĂ€tsprĂŒfung des FS wurde erheblich erhöht. DarĂŒber hinaus wurde die Leistung von Bcachefs im Nur-Lese-Modus verbessert; Probleme, die zu Speicherzugriffen nach der Freigabe (use after free) fĂŒhrten, wurden behoben; es wurden Probleme mit reflink-Pointern in fsck gelöst; die Verarbeitung von Transaktionsneustarts wurde korrigiert.
- Das Modul md-linear, das zur ZusammenfĂŒhrung von BlockgerĂ€ten dient, wurde zurĂŒckgebracht. Dieses Modul war zuvor als veraltet eingestuft und aus dem Kernel 6.8 entfernt worden, hat sich jedoch als gefragt herausgestellt und wurde daher nun wiederhergestellt.
- Die Dateisysteme F2FS und SQUASHFS wurden auf die Verwendung von Seitenfolien (page folios) umgestellt.
- Die Dateisysteme OCFS2 und DLMFS wurden auf die Verwendung der neuen API fĂŒr das Einbinden von Partitionen umgestellt.
- Im Treiber null_blk wurde das Attribut ârotationalâ implementiert, das ĂŒber configfs gesetzt wird und ermöglicht, die Arbeit mit einem GerĂ€t auf Basis von rotierenden Platten zu simulieren, um Tests der Kernel-Funktionen zu erleichtern.
- Im Device Mapper und in den Modulen dm-mirror, dm-io, dm-table, dm-linear, dm-stripe und dm-raid1 wurde die UnterstĂŒtzung fĂŒr atomare SchreibvorgĂ€nge implementiert.
- Speicher und Systemdienste
- Die Integration in den ntsync-Treiberkern, der das Zeichenverfahren /dev/ntsync und eine Reihe von Synchronisierungsprimitive bietet, die im Windows NT-Kernel verwendet werden, wurde abgeschlossen. Die Implementierung solcher Primitive auf Kernel-Ebene ermöglicht eine signifikante Leistungssteigerung bei Windows-Spielen, die mit Wine ausgefĂŒhrt werden. Dieser Leistungszuwachs wird durch den Verzicht auf Overhead erreicht, der mit der Verwendung von RPC im Benutzerspeicher verbunden ist. Die Schaffung eines separaten Treibers fĂŒr den Linux-Kernel erklĂ€rt sich durch die Schwierigkeiten bei der korrekten Implementierung der NT-Synchronisierungs-API ĂŒber bestehenden Primitiven im Kernel.
- Ein neuer DMEM cgroup-Controller wurde hinzugefĂŒgt, um separate Bereiche des Speichers von GerĂ€ten wie GPUs zu erfassen. DMEM ermöglicht die Erstellung separater cgroups fĂŒr verschiedene Aufgaben, die mit GPUs arbeiten, sodass sie unabhĂ€ngig voneinander ausgefĂŒhrt werden können. Diese neue Funktion löst das Problem des erzwungenen Abbruchs von GPU-VorgĂ€ngen bei Erschöpfung des verfĂŒgbaren Speichers, da der Speicher, der von der GPU und von den Treibern genutzter CPU-Spiele, in separaten cgroups berĂŒcksichtigt wird.
- Optimierungen fĂŒr das Scaling der Cache-Flush-Operation (Translation Lookaside Buffer, TLB), das verwendet wird, um die Umwandlung von virtuellen Adressen in physische Adressen zu beschleunigen, wurden vorgenommen. Die hinzugefĂŒgten Optimierungen bestehen darin, bestimmte Datenstrukturen wĂ€hrend des Kontextwechsels verzögert zu aktualisieren, was die Leistung bei bestimmten Tests verbessert.
- Die Leistung des MGLRU-Mechanismus (Multi-Generational LRU), der zur Bestimmung verwendet wird, welche Speicherseiten genutzt werden und welche in den Swap-Bereich ausgelagert werden können, wurde verbessert.
- Der Transfer von Ănderungen aus dem Rust-for-Linux-Zweig, die mit der Verwendung der Programmiersprache Rust als zweiter Sprache zur Entwicklung von Treibern und Kernmodulen verbunden sind, wurde fortgesetzt (die UnterstĂŒtzung von Rust ist standardmĂ€Ăig deaktiviert und fĂŒhrt nicht dazu, dass Rust zu den obligatorischen Build-AbhĂ€ngigkeiten des Kernels hinzugefĂŒgt wird). Es wurde die Möglichkeit angeboten, im Kernelcode das Makro âderive(CoercePointee)â zu verwenden, das es ermöglicht, Smart Pointer mit Trait-Objekten zu nutzen. Im Kernel sind Rust-Bindings fĂŒr PCI, Plattformen, Open Firmware, ZeichenendgerĂ€te und bestimmte Ein-/Ausgabefunktionen enthalten. Greg Kroah-Hartman, der fĂŒr die UnterstĂŒtzung des stabilen Linux-Kernel-Zweigs verantwortlich ist, beschrieb den aktuellen Stand als âfast bereit, um einen echten Treiber in Rust zu schreibenâ.
- In den Build-Skripten wurde ein neuer Code zur Generierung von Versionen von Debug-Symbolen fĂŒr ladbare Module vorgeschlagen, der jetzt Informationen aus Debug-Daten im DWARF-Format verwendet, anstatt den Quellcode direkt zu parsen. Diese Ănderung ermöglicht die Anwendung der Versionierung von Debug-Symbolen fĂŒr Module, die in Rust geschrieben sind. Die alte Implementierung bleibt ebenfalls im Kernel erhalten, und der Generator wird auf Ebene der Build-Optionen ausgewĂ€hlt.
- FĂŒr die PowerPC-Architektur wurde die UnterstĂŒtzung fĂŒr den Modus des latenten Task-Ausschlusses (PREEMPT_LAZY, lazy preemption) implementiert, der dem Modus des vollstĂ€ndigen Ausschlusses (âfull preemptionâ) fĂŒr Echtzeitaufgaben (RR/FIFO/DEADLINE) entspricht, jedoch den Ausschluss normaler Aufgaben (SCHED_NORMAL) bis zur Tick-Grenze verzögert.
- Im Leistungsmesssystem âperfâ wurde die UnterstĂŒtzung fĂŒr EnergieverbrauchszĂ€hler von AMD-Prozessoren hinzugefĂŒgt. Die Möglichkeit, auf Systemen mit bis zu 2048 CPU-Kernen zu arbeiten, wurde hinzugefĂŒgt.
- Es wurde die Möglichkeit geschaffen, den sysctl-Parameter pid_max mit den NamensrĂ€umen der Prozess-IDs (ID namespace) zu verwenden. Der Parameter pid_max dient zur Begrenzung des maximalen Wertes der Prozess-IDs (PID) und kann jetzt verwendet werden, um die maximal mögliche Anzahl an Prozessen, die im angegebenen Namensraum ausgefĂŒhrt werden, zu begrenzen. Die Behandlung des Parameters erfolgt hierarchisch, d.h. die EinschrĂ€nkungen in Ă€uĂeren NamensrĂ€umen gelten fĂŒr verschachtelte NamensrĂ€ume.
- Bei der Verwendung des Systemaufrufs execveat zur AusfĂŒhrung eines Prozesses wird nun im Dateisystem /proc der Name der gestarteten Datei anstelle der Nummer des Dateideskriptor angezeigt.
- Der Quellcode des Kernels (im Verzeichnis samples/vfs) wurde um das Dienstprogramm mountinfo erweitert, das die Verwendung der Systemaufrufe statmount() und listmount() demonstriert.
- Im BPF-Subsystem wurden neue Funktionen bpf_local_irq_save() und bpf_local_irq_restore() eingefĂŒhrt, um Unterbrechungen auf der lokalen CPU vorĂŒbergehend zu deaktivieren. Diese Funktionen können verwendet werden, um Strukturen zu implementieren, deren Bearbeitung nicht durch Unterbrechungen unterbrochen wird.
- Im Systemaufruf madvise() wird beim Einsatz der Flags MADV_DONTNEED und MADV_FREE sichergestellt, dass die Speichertabellen, die mit dem freigegebenen Adressbereich verbunden sind, freigegeben werden, da in bestimmten Situationen leere Speicherseiten viel Speicherplatz belegen können.
- FĂŒr die OpenRISC-Architektur wurde die UnterstĂŒtzung fĂŒr das Mechanismus der wiederherstellbaren Sequenzen (rseq, restartable sequences) implementiert, das fĂŒr die schnelle atomare AusfĂŒhrung von Operationen gedacht ist. Diese Operationen werden im Falle von Unterbrechungen durch einen anderen Thread zurĂŒckgesetzt und erneut versucht.
- Der Code wurde reorganisiert mit der Implementierung der Algorithmen CRC32 und CRC-T10DIF, die nicht mehr mit dem Subsystem crypto kreuzen und direkt ĂŒber die BibliotheksoberflĂ€che aufgerufen werden. Diese Ănderung ermöglichte eine Vereinfachung des Codes und steigerte dessen Effizienz.
- Im asynchronen Eingabe-/Ausgabesystem io_uring wurde eine Schnittstelle hinzugefĂŒgt, um zusĂ€tzliche Metadaten zur IntegritĂ€t bei Lese- und Schreiboperationen zu ĂŒbermitteln.
- Virtualisierung und Sicherheit
- Im Systemaufruf execveat wurde das Flag AT_EXECVE_CHECK hinzugefĂŒgt, das eine ĂberprĂŒfung der ZulĂ€ssigkeit der AusfĂŒhrung einer Datei ohne deren tatsĂ€chlichen Start ermöglicht, jedoch unter BerĂŒcksichtigung der Sicherheitsrichtlinien, Zugriffsrechte und aktiven LSM-Module. Um in Verbindung mit AT_EXECVE_CHECK verwendet zu werden, wurden die securebit-Flags SECBIT_EXEC_RESTRICT_FILE und SECBIT_EXEC_DENY_INTERACTIVE vorgeschlagen, die verwendet werden können, um die AusfĂŒhrung von Dateien mit Scripts in interpretierten Programmiersprachen einzuschrĂ€nken. Das Flag SECBIT_EXEC_RESTRICT_FILE verlangt von Linkern und Interpretern, die Option AT_EXECVE_CHECK zur ĂberprĂŒfung der ZulĂ€ssigkeit der AusfĂŒhrung zu verwenden, wĂ€hrend das Flag SECBIT_EXEC_DENY_INTERACTIVE die Verarbeitung interaktiver Befehle verbietet. Die Hauptidee dieser Ănderung besteht darin, die Anwendung von Sicherheitsrichtlinien nicht nur auf traditionelle ausfĂŒhrbare Dateien, sondern auch auf Textdateien mit Skripten zu erweitern, die ĂŒber den Start eines Interpreters geladen werden können (d. h. das Verbot der AusfĂŒhrung kann nicht nur beim Start von './script.sh', sondern auch bei der AusfĂŒhrung in der Form 'sh script.sh' umgesetzt werden).
- Auf x86-Systemen ist UnterstĂŒtzung fĂŒr sichere ZeitstempelzĂ€hler fĂŒr Gastbetriebssysteme implementiert, die das Ăndern der Systemuhr des Gastbetriebssystems aus der Hostumgebung verhindern. Diese Funktion wurde auf der Grundlage des AMD SEV (Secure Encrypted Virtualization)-Mechanismus implementiert, der in Virtualisierungssystemen zum Schutz verwendet wird. virtuelle Maschinen gegen Ăbergriffe von Hypervisoren oder Administratoren des Hostsystems.
- Im SELinux-Mandatssystem fĂŒr Zugriffssteuerung wurde UnterstĂŒtzung fĂŒr xperm-Regeln hinzugefĂŒgt, die es ermöglichen, SELinux-Richtlinien an bestimmten ioctl()-Aufrufen oder netlink-Nachrichten zu binden.
- Zur digitalen Signatur von Kernelmodulen wird standardmĂ€Ăig der SHA512-Algorithmus anstelle von SHA1 verwendet.
- In den Treibern fĂŒr Gastbetriebssysteme von VirtualBox wurde UnterstĂŒtzung fĂŒr die ARM64-Architektur hinzugefĂŒgt.
- Im Hypervisor KVM Die Arbeiten zur Nutzung des Intel TDX (Trusted Domain Extensions)-Mechanismus zur VerschlĂŒsselung des Arbeitsspeichers von Gastbetriebssystemen wurden fortgesetzt.
- In virtio_blk wurde UnterstĂŒtzung fĂŒr den Fehlerbehebungsmodus hinzugefĂŒgt.
- Netzwerksubsystem
- In der RxRPC-Protokollimplementierung ist jetzt die Verwendung von groĂen UDP-Paketen möglich, um die Durchsatzrate zu erhöhen.
- FĂŒr TCP wurde UnterstĂŒtzung fĂŒr den RACK-TLP-Algorithmus zur Erkennung von Paketverlusten hinzugefĂŒgt.
- Ein neuer sysctl-Parameter tcp_tw_reuse_delay wurde hinzugefĂŒgt, der im Zusammenhang mit dem Namensraum (network namespace) funktioniert und eine Verzögerung definiert, bevor das System die Portnummer nach SchlieĂen eines TCP-Sockets erneut verwenden kann.
- Die Möglichkeit zur Auswahl eines Zeitdienstanbieters (PTP) zur Erstellung von Zeitstempeln auf PHY- und MAC-Ebenen wurde hinzugefĂŒgt.
- FĂŒr IPsec wurde UnterstĂŒtzung fĂŒr den Mechanismus zur Aggregation und Fragmentierung von gekapselten IP-Paketen â IP-TFS/AGGFRAG (IP Traffic Flow Security/Aggregation and Fragmentation Mode for Encapsulating Security Payload) â implementiert.
- Im Netzwerk-Socket-System wurde UnterstĂŒtzung fĂŒr die Ăbertragung von PrioritĂ€tsinformationen (SO_PRIORITY) in Form von Steuernachrichten (cmsg â control messages) hinzugefĂŒgt. FĂŒr Netzwerk-Sockets wurde die Option SO_RCVPRIORITY hinzugefĂŒgt, die in der Funktion recvmsg() die Ăbertragung von PrioritĂ€tsinformationen ĂŒber den Socket ermöglicht.
- AusrĂŒstung
- Ein Treiber fĂŒr amdxdna wurde hinzugefĂŒgt, der in die CPUs von AMD integrierte NPU-Beschleuniger (Neural Processing Unit) basierend auf der XDNA-Architektur unterstĂŒtzt, die zur Beschleunigung von operationen im Zusammenhang mit maschinellem Lernen gedacht sind. NPU auf der Basis der XDNA-Architektur wird in den Prozessorserien 7040 und 8040 AMD Ryzen sowie in den Beschleunigern AMD Alveo V70 und SoC AMD Versal angeboten.
- Im i915-Treiber wurden Identifikatoren neuer GPUs hinzugefĂŒgt, ein Fehlerbehandlungsmechanismus fĂŒr die HDMI-Initialisierung implementiert und die ZuverlĂ€ssigkeit des GPU-Engine-Reset auf Haswell und Ă€lteren Systemen verbessert.
- Die Arbeiten am DRM-Treiber (Direct Rendering Manager) Xe fĂŒr GPUs auf Basis der Intel Xe-Architektur wurden fortgesetzt, die in den Intel Arc-Grafikkarten und der integrierten Grafik ab den Tiger-Lake-Prozessoren verwendet wird.
- Im Nouveau-Treiber wurde die Möglichkeit hinzugefĂŒgt, GSP-RM-Logbuffer ĂŒber debugfs zu ĂŒbermitteln.
- Im AMDGPU-Treiber wurde die UnterstĂŒtzung fĂŒr den DRM-Panic-Mechanismus implementiert, der eine Art «blauer Bildschirm des Todes» bei Fehlern anzeigt. Die Vorbereitung auf die UnterstĂŒtzung zukĂŒnftiger Grafikarten der Radeon RX 9000-Serie auf Basis der RDNA4-Architektur wurde fortgesetzt. Die UnterstĂŒtzung fĂŒr 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 und ISP wurde aktualisiert.
- Im DRM-Treiber msm (GPU Qualcomm Adreno) wurde die UnterstĂŒtzung fĂŒr die Plattform Qualcomm SM6150 (QCS615) hinzugefĂŒgt.
- Im DRM-Treiber panfrost wurde die UnterstĂŒtzung des MediaTek MT8188 SoC mit Mali-G57 GPU hinzugefĂŒgt.
- Im DRM-Treiber vc4 wurde die UnterstĂŒtzung des Broadcom BCM2712 SoC (Raspberry Pi 5) hinzugefĂŒgt.
- Im vfio-Treiber nvgrace-gpu wurde die UnterstĂŒtzung fĂŒr die NVIDIA Grace Blackwell 200-ChipsĂ€tze hinzugefĂŒgt.
- Der Treiber fĂŒr Intel THC (Touch Host Controller), der fĂŒr die Interaktion mit Touchscreens und Touchpads auf einigen Laptops verwendet wird, wurde aufgenommen. Die UnterstĂŒtzung fĂŒr Wacom-GerĂ€te mit PCI-Schnittstelle wurde hinzugefĂŒgt. Die UnterstĂŒtzung fĂŒr die Spielcontroller von QH Electronics wurde ebenfalls hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr ARM-Plattformen, SoCs und GerĂ€te wurde hinzugefĂŒgt: 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. Es wurde UnterstĂŒtzung fĂŒr die RISC-V-Architektur-basierte SoC SpacemiT K1 hinzugefĂŒgt.
- Im ALSA-Audiosubsystem wurde die API rawmidi und der Sequencer fĂŒr MIDI 2.0 erweitert. In der API zur Auslagerung von Kompressionsoperationen zur Soundkarte wurde die UnterstĂŒtzung fĂŒr ASRC (Asynchronous Sample Rate Conversion) hinzugefĂŒgt.
- Die UnterstĂŒtzung fĂŒr Audiosysteme von GerĂ€ten wie Allwinner suinv F1C100s, Awinc AW88083, Realtek ALC5682I-VE, TAS2781, Focusrite Scarlett 4th Gen 16i16, 18i16 und 18i20 wurde hinzugefĂŒgt. Auch die UnterstĂŒtzung fĂŒr drahtlose Kopfhörer von SteelSeries Arctis 9 wurde hinzugefĂŒgt.
Quelle: opennet.ru
