Veröffentlichung des Linux-Kernels 6.9.

Nach zwei Monaten Entwicklung präsentierte Linus Torvalds die Veröffentlichung des Linux-Kernels 6.9. Zu den bemerkenswertesten Änderungen gehören: das dm-vdo-Modul zur Deduplizierung und Komprimierung von Blockgeräten, ein direkter Zugriff auf Dateien im FUSE, Unterstützung für die Erstellung von pidfd für einzelne Threads, der BPF-Token-Mechanismus, Unterstützung für Rust auf ARM64-Systemen, die Einstufung des Ext2-Dateisystems als veraltet und die Entfernung des alten NTFS-Treibers.

In die neue Version wurden 15680 Korrekturen von 2106 Entwicklern integriert, die Patchgröße beträgt 54 MB (die Änderungen betreffen 11825 Dateien, 687954 Codezeilen wurden hinzugefügt und 225344 Zeilen entfernt). In der vorherigen Veröffentlichung gab es 15641 Korrekturen von 2018 Entwicklern, die Patchgröße betrug 44 MB. Etwa 42 % aller in 6.9 enthaltenen Änderungen beziehen sich auf Gerätetreiber, etwa 17 % sind mit Code-Updates speziell für Hardwarearchitekturen verbunden, 13 % hängen mit dem Netzwerk-Stack zusammen, 7 % mit Dateisystemen und 4 % mit internen Kernsubsystemen.

Die wichtigsten Neuerungen im Kernel 6.9:

  • Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
    • Im Device Mapper (DM) wurde ein neuer Handler dm-vdo (virtual data optimizer) hinzugefügt, der es ermöglicht, basierend auf bestehenden Blockgeräten ein virtuelles Blockgerät zu implementieren. Dieses bietet Funktionen wie die Deduplizierung von redundanten Daten, Datenkompression, Ausschluss von leeren Blöcken und die Erhöhung der Größe des Blockgeräts nach Bedarf (thin provisioning). Die genannten Funktionen werden auf der Ebene des Blockgeräts realisiert und sind unabhängig vom verwendeten Dateisystem. Beispielsweise kann mit dm-vdo eine automatische Zusammenführung redundanter Daten und die Speicherung von Informationen in komprimierter Form für beliebige Dateisysteme erfolgen. Der Einsatz von dm-vdo für physische Speicher mit einer Größe von bis zu 256 TB sowie die Erstellung logischer Volumes von bis zu 4 PB wird unterstützt. Zur Verwaltung von VDO-Partitionen wird die Verwendung von lvm empfohlen. Die VDO-Technologie wurde von der Firma Permabit entwickelt und nach der Übernahme durch Red Hat im Jahr 2017 geöffnet.
    • In der FUSE-Subsystem, das zur Implementierung von Dateisystemen im Benutzerspace verwendet wird, wurde eine erste Implementierung des «Passthrough»-Modus hinzugefügt. Dieser ermöglicht es, direkt auf Kernel-Ebene auf Dateidaten zuzugreifen, ohne den im Benutzerspace laufenden Prozess zu durchlaufen. Dadurch kann in bestimmten Situationen die Leistung erheblich gesteigert werden. Beispielsweise können FUSE-Implementierungen von Dateisystemen, die im Nur-Lese-Modus arbeiten und den Zugriff auf Dateien beschränken, den Inhalt der Dateien aus dem zugrunde liegenden Dateisystem bereitstellen, ohne diese an den FUSE-Prozess weiterzugeben.
    • Der Treiber mit der Implementierung des Dateisystems Ext2 ist in die Kategorie der veralteten (deprecated) Treiber überführt worden. Als Grund wird angeführt, dass der Treiber nur 32-Bit-Zeitstempel in den Inodes unterstützt, die am 19. Januar 2038 überlaufen werden. Statt des Ext2-Treibers wird empfohlen, den Ext4-Treiber zu verwenden, der mit dem Ext2-Dateisystem kompatibel ist und dessen Funktionen unterstützt. Gleichzeitig kann er in Ext2-Partitionen Zeitstempel verwenden, die nicht vom Problem des Jahres 2038 betroffen sind, sofern das Dateisystem mit Inodes erstellt wurde, die größer als 255 Bytes sind (im Ext2-Treiber wurden 32-Bit-Zeitstempel unabhängig von der Größe des Inodes verwendet).
    • Der alte NTFS-Dateisystemtreiber wurde entfernt, und ab der Version 5.15 wurde der neue NTFS3-Treiber eingeführt. Die Bereitstellung von zwei NTFS-Implementierungstreibern im Kernel wurde als unzweckmäßig erachtet, da der alte Treiber seit vielen Jahren nicht mehr aktualisiert wurde, sich in einem bedauerlichen Zustand befindet und nur im Lese-Modus betrieben werden kann.
    • In die Dateisysteme zonefs und hugetlbfs wurde die Unterstützung für das Mapping von Benutzer-ID-Identifikatoren in gemounteten Dateisystemen integriert, die verwendet wird, um Dateien eines bestimmten Benutzers auf einem gemounteten fremden Partition mit einem anderen Benutzer im aktuellen System abzugleichen.
    • In NFSv4 haben Administratoren die Möglichkeit, die Zustände von geöffneten Dateien und deren Sperrungen zu bereinigen.
    • Für das Dateisystem Ext4 wird nur eine Fehlerkorrektur und ein Update der Kunit-Tests vermerkt.
    • In Btrfs wird die Übertragung von Funktionen auf die Verwendung von Seitenbuchseiten (page folios) fortgesetzt.
    • Im XFS-Dateisystem wird weiterhin an der Implementierung der Möglichkeit gearbeitet, das Tool fsck für die Überprüfung und Behebung von Problemen im Online-Modus zu verwenden, ohne das Dateisystem aushängen zu müssen.
    • Dem Systemaufruf pwritev2() wurde das Flag RWF_NOAPPEND hinzugefügt, das es ermöglicht, eine Offset für die Schreiboperation anzugeben, auch wenn die Datei im Anhangsmodus geöffnet wurde.
    • Neue ioctl-Befehle wurden hinzugefügt: FS_IOC_GETUUID — gibt die UUID des angegebenen Dateisystems zurück, und FS_IOC_GETFSSYSFSPATH — bestimmt den Speicherort in /sys/fs des angegebenen gemounteten FS.
    • Die Dateisysteme efs, qnx4 und coda wurden auf die Verwendung der neuen API zum Mounten von Partitionen umgestellt.
    • Die Implementierung von Dateioperationen im Groß-/Kleinschreibungsunabhängigen Modus wurde verbessert. Die Leistung wurde gesteigert, indem zuerst ein Vergleich unter Berücksichtigung der Groß- und Kleinschreibung durchgeführt und dann auf eine Suche ohne Berücksichtigung der Groß- und Kleinschreibung zurückgegriffen wird. Probleme beim Einhängen von overlayfs über Verzeichnisse, für die der Modus ohne Berücksichtigung der Groß- und Kleinschreibung aktiviert wurde, wurden behoben.
  • Speicher und Systemdienste
    • Die Unterstützung des Intel FRED (Flexible Return and Event Delivery)-Mechanismus wurde implementiert, der entwickelt wurde, um die Effizienz und Zuverlässigkeit der Übertragung von Informationen über niedrigstufige Ereignisse im Vergleich zum derzeit verwendeten IDT (Interrupt Descriptor Table)-Mechanismus zu verbessern. Die Leistung wird erhöht und die Latenz verringert, indem Ereignisse durch die Prozessoranweisung IRET zurückgegeben werden, anstatt sie über die IDT-Tabelle zu übermitteln. Die Zuverlässigkeit wird durch die separate Verarbeitung des Eintreffens von Ereignissen im Kontext des Kernels und des Benutzerkontexts, den Schutz vor geschachtelter NMI-Ausführung und die Speicherung aller mit der Ausnahme verbundenen CPU-Register im erweiterten Stapelrahmen erreicht.
    • Die Möglichkeit zur Optimierung des Zugriffs auf Daten bestimmter CPU-Kerne wurde durch die Verwendung von benannten Adressräumen (Named Address Spaces) im Code eingeführt, die in GCC als GNU C-Erweiterung implementiert sind.
    • Der Funktion pidfd_open() wurde das Flag PIDFD_THREAD hinzugefügt, das es ermöglicht, pidfd für einzelne Threads zu erstellen, anstatt pidfd nur im Kontext des Gruppenleiters von Threads zu verwenden. Zudem wurde eine Implementierung eines Pseudo-Dateisystems vorgeschlagen, um auf pidfd über ein virtuelles Dateisystem zuzugreifen. Im Gegensatz zur Identifizierung von Prozessen mit PID ist die pidfd-ID an einen bestimmten Prozess gebunden und bleibt unverändert, während die PID nach dem Abschluss des aktuellen Prozesses einem anderen Prozess zugeordnet werden kann.
    • Ein Mechanismus für BPF-Token wurde in das BPF-Subsystem eingeführt, der es ermöglicht, programmspezifische Zugriffsrechte auf privilegierte BPF-Operationen selektiv zu delegieren. Beispielsweise kann einem nicht privilegierten Programm der Zugriff auf bestimmte BPF-Subsysteme gewährt werden, ohne vollständige CAP_BPF-Rechte zu gewähren.
    • In das BPF-Subsystem wurde ein neuer Typ des gemeinsam genutzten Speichers bpf_arena eingeführt, der einen Bereich definiert, der von BPF-Programmen und Benutzermodus-Prozessen gemeinsam genutzt werden kann. Die may_goto-Anweisung wurde hinzugefügt, um die Ausführung von Schleifen zu organisieren, die vom Verifikator unterbrochen werden können. Es besteht die Möglichkeit, zufällige TCP SYN-Cookies aus BPF-Programmen zu generieren und BPF-Handler zur Bekämpfung von SYN-Floods zu erstellen.
    • Die Übertragung der Änderungen aus dem Rust-for-Linux-Zweig wird fortgesetzt, die mit der Verwendung der Programmiersprache Rust als zweiter Sprache für die Entwicklung von Treibern und Kernel-Modulen verbunden sind (die Unterstützung von Rust ist standardmäßig nicht aktiv und führt nicht dazu, dass Rust zu den erforderlichen Abhängigkeiten des Kernels gehört). Die Unterstützung für die Verwendung von Rust auf 64-Bit-ARM-Prozessoren wurde hinzugefügt. Es wurde auf die Rust-Version 1.76 umgestellt. Das Makro ‘container_of!’ wurde eingeführt. Anstelle der instabilen Funktionalität ‘ptr_metadata’ wurde die stabile Methode ‘byte_sub’ verwendet. Ein Modul ‘time’ mit der Funktion zur Zeitumrechnung ‘msecs_to_jiffies()’ wurde hinzugefügt.
    • Im io_uring-Subsystem wurde die Möglichkeit zum Trimmen von Dateien (ftruncate_file) hinzugefügt.
    • Ein neuer Typ von Arbeitswarteschlangen WQ_BH (Workqueue Bottom Halves) wurde hinzugefügt, um Code im Kontext von Software-Interrupts asynchron auszuführen, anstelle der veralteten Tasklets.
    • Das Subsystem für die Timerverwaltung wurde umfassend überarbeitet, wobei die Logik zur Auswahl des aktiven CPU-Kerns zur Ausführung des ausgelösten Timers verbessert wurde, um zu verhindern, dass inaktive Kerne aus dem Schlafmodus geweckt werden.
    • Die Möglichkeit zur Aktualisierung des Energieverbrauchsmodells des Kerns (EM, Energy Model) während des Betriebs wurde implementiert. Dies kann beispielsweise verwendet werden, um den Einfluss der Betriebstemperatur auf die Energieeffizienz der CPU zu berücksichtigen. Die Leistung der Funktion em_cpu_energy() wurde erheblich gesteigert, sodass sie in Tests auf einem stationären System jetzt 1,43-mal schneller ausgeführt wird, und im Test auf der RockPi 4B-Platine sogar 1,69-mal schneller.
    • Die Unterstützung für den Betrieb von Systemen auf ARM64-Architekturen im LPA2-Modus mit einem 52-Bit virtuellen Adressraum wurde hinzugefügt.
    • Für ARM64-Systeme wurde die Unterstützung für kontinuierliche PTE (Page Table Entry)-Aufzeichnungen implementiert, die die Leistung durch eine verbesserte Effizienz der Nutzung des TLB (Translation Lookaside Buffer) steigern.
    • Patches zur Steigerung der Leistung des Speichermanagement-Subsystems wurden übernommen, um konkurrierende Sperren in vmalloc() zu reduzieren.
    • Für die LoongArch-Architektur wurde ein Mechanismus für das Live-Patching des Kernels implementiert, der es ermöglicht, Korrekturen am Kernel ohne Neustart anzuwenden.
    • Für RISC-V-Systeme wurde Unterstützung für den Systemaufruf membarrier() implementiert, der Speicherbarrieren für aktive Threads im System festlegt.
    • Die Anforderungen an die Version von LLVM/Clang, die zum Kompilieren des Kernels verwendet werden kann, wurden erhöht. Für den Build wird jetzt mindestens die Version LLVM 13.0.1 benötigt (zuvor war ein Build mit LLVM 11+ möglich).
    • Im Mechanismus "User Trace Events", der es ermöglicht, Trace-Events aus Benutzerprozessen zu erstellen, um Aktivitäten im Benutzerbereich zu verfolgen, wurde die Unterstützung für den Export von Ereignisinformationen in verschiedenen Formaten (USER_EVENT_REG_MULTI_FORMAT) hinzugefügt.
    • In den Mechanismus zur Rückverfolgung von Funktionsaufrufen wurde die Möglichkeit hinzugefügt, den Status der eingehenden Funktionsargumente beim Verfolgen des Funktionsausgangs zu überwachen. Die Werte des Rückgabewerts können nun mit den Argumenten, die beim Aufruf der Funktion verwendet wurden, abgeglichen werden.
    • Das Utility perf unterstützt jetzt den Aggregationsmodus "cluster" ("perf stat -a --per-cluster"), um die Statistiken gemeinsamer Ressourcen zu konsolidieren. Es wurde die Möglichkeit zur Nutzung der Bibliothek libcapstone für die Disassemblierung von Prozessoranweisungen ("perf script -F disasm") implementiert. Zudem wurden Optimierungen des Speicherverbrauchs bei der Ausführung der Befehle perf report und perf annotate durchgeführt.
  • Virtualisierung und Sicherheit
    • Der Schutz vor der Schwachstelle RFDS (Register File Data Sampling) in Intel Atom-Prozessoren wurde hinzugefügt. Diese ermöglicht es, Restinformationen aus den Registerdateien (RF, Register File) des Prozessors zu extrahieren, die zur gemeinsamen Speicherung des Inhalts von Registern in allen Aufgaben auf demselben CPU-Kern verwendet werden. Um die Schwachstelle zu blockieren, ist ein Mikrocodupdate erforderlich, sowie die Verwendung des Befehls VERW zur Säuberung der Inhalte der mikroarchitektonischen Puffer beim Zurückkehren vom Kernel in den Benutzermodus. Zur Aktivierung des Schutzes beim Booten des Kernels kann das Flag „reg_file_data_sampling=on“ gesetzt werden. Informationen über die Verletzbarkeit und die Verfügbarkeit des benötigten Mikrocodes zum Schutz können in der Datei „/sys/devices/system/cpu/vulnerabilities/reg_file_data_sampling“ bewertet werden.
    • Die grundlegende Unterstützung für den Schutz von Gastsystemen durch die AMD SEV-SNP (Secure Nested Paging)-Erweiterung wurde hinzugefügt. Diese gewährleistet eine sichere Arbeit mit verschachtelten Seitentabellen und schützt vor den Angriffen „undeSErVed“ und „SEVerity“ auf AMD EPYC-Prozessoren, die den Schutzmechanismus AMD SEV (Secure Encrypted Virtualization) umgehen können. KVM Die erforderlichen Änderungen für die Nutzung von SNP sind in der Version 6.10 geplant.
    • Die Module, die die Technologien IMA (Integrity Measurement Architecture) und EVM (Extended Verification Module) implementieren, wurden auf das Framework LSM (Linux Security Modules) umgestellt. Dies ermöglichte eine deutliche Vereinfachung des Codes, ohne die Funktionalität zu verlieren, indem redundante Funktionen zusammengeführt und die über LSM verfügbaren typischen Möglichkeiten genutzt wurden. Das IMA-Modul dient der Überprüfung der Integrität von Betriebssystemkomponenten anhand digitaler Signaturen und Hashes. Das EVM-Modul schützt erweiterte Dateiattribute (xattrs) vor Angriffen, die darauf abzielen, ihre Integrität zu gefährden (EVM lässt keine Offline-Angriffe zu, bei denen ein Angreifer Metadaten ändern kann, beispielsweise indem er von seinem eigenen Speichergerät startet).
    • Die Systemaufrufe lsm_list_modules(), lsm_get_self_attr() und lsm_set_self_attr() wurden für eine bessere Kompatibilität mit 32-Bit-Umgebungen überarbeitet. Diese wurden entwickelt, um eine Liste der geladenen LSM-Module (Linux Security Modules) anzuzeigen und Attribute des LSM-Moduls abzurufen oder zu setzen. Diese Änderungen brechen die Abwärtskompatibilität, jedoch hält Linus Torvalds diese Änderung für zulässig, da die neuen Systemaufrufe in der letzten Kernelversion hinzugefügt wurden und bisher in Anwendungen nicht verwendet werden.
    • Es wurde versucht, die Verwendung des UBSAN-Mechanismus (Undefined Behavior Sanitizer) wiederherzustellen. Das Problem liegt darin, dass Compiler ganz unterschiedlich mit ganzzahligen Überläufen von signierten und unsignierten Typen umgehen. Signierte Überläufe und Überläufe von Zeigern fallen in die Kategorie des undefinierten Verhaltens, während unsignierte Überläufe modulo 2n abgeschnitten werden, wobei nur die niederwertigen Bits des Ergebnisses („wrap-around“) erhalten bleiben, sodass sie nicht unter das undefinierte Verhalten fallen. Um Situationen zu vermeiden, die zu undefiniertem Verhalten führen, wird der Kernel mit der Option „-fno-strict-overflow“ kompiliert, die zu einer Verwendung von „wrap-around“ für alle ganzzahligen Überläufe führt. GCC und Clang können einige Probleme bei der Verwendung des Flags „-fno-strict-overflow“ nicht ordnungsgemäß diagnostizieren, und die Aktivierung von UBSAN zielt darauf ab, in Zusammenarbeit mit den Compiler-Entwicklern falsche Alarme zu beseitigen und ganzzahlige Überläufe an den Stellen zu identifizieren, an denen keine expliziten Überprüfungen vorhanden sind.

      Zur Überprüfung möglicher Überläufe im Kern werden Konstrukte wie „var + offset PAGE_SHIFT) < pgoff){..}"), die an die Kompilierung mit dem Flag „-fno-strict-overflow" gebunden sind und nicht den gesamten Code abdecken, in dem potenziell Überläufe auftreten können. Das Problem ist, dass die Verwendung von UBSAN in solchen Überprüfungen zu einer Vielzahl von Fehlalarmen geführt hat, weshalb UBSAN im Jahr 2021 deaktiviert werden musste. In der aktualisierten Implementierung wird vorgeschlagen, spezielle Annotationen wie __signed_wrap und __unsigned_wrap sowie fertige Makros mit Überprüfungen wie add_would_overflow(a, b) und add_wrap(a, b) zu verwenden, die eine Trennung zwischen der vom Entwickler vorgesehenen Nutzung von ganzzahligen Überläufen und dem Auftreten zufälliger Überläufe, die zu Sicherheitsanfälligkeiten führen können, ermöglichen. Der Vorschlag für eine umfassendere Überarbeitung des Kerns durch die Einführung zusätzlicher Typdefinitionen wurde von Linus Torvalds abgelehnt.

  • Netzwerksubsystem
    • Im Netzwerk-Subsystem wurden Maßnahmen ergriffen, um die Entstehung von konkurrierenden Sperren („lock contention“, der Versuch, eine von einem anderen Thread gehaltene Sperre zu erwerben) zu reduzieren. Die Verwendung von RTNL-Sperren wurde verringert.
    • Die Möglichkeit zur Aktivierung der Unterstützung für aktives Socket-Polling (busy polling) im Kontext einzelner epoll-Aufrufe wurde hinzugefügt. Die Poolgröße und die Budgetparameter können separat von den systemweiten Standardeinstellungen festgelegt werden.
    • Die Struktur net_hotdata wurde implementiert, um die Effizienz des Cache für die am häufigsten verwendeten Netzwerk-Konfigurationsvariablen zu erhöhen.
    • In MPTCP wurde die Unterstützung für die Einstellung der Option TCP_NOTSENT_LOWAT für Sockets hinzugefügt, die die Größe des Sende-Puffers begrenzt. Im MCTP-Socket-API wurde die Unterstützung für Netzwerk-IDs hinzugefügt, die es ermöglichen, mehrere nicht überlappende MCTP-Netzwerke auf einem Host zu verwenden.
    • In IPSec wurde die Unterstützung für die Weiterleitung von ICMP-Nachrichten mit Fehlermeldungen (RFC 4301) hinzugefügt.
    • Der Prozess des Scannens von Routen mit abgelaufener Lebensdauer wurde beschleunigt.
    • Die XDP-Leistung wurde durch die strikte Vermeidung der Zuweisung großer Speicherblöcke verbessert.
    • Die Möglichkeit zur Anheftung von Metadaten an netconsole-Nachrichten wurde hinzugefügt.
    • In Netfilter ist die Definition von Tabellen aus dem Benutzerspeicherraum erlaubt, die an einen verwaltenden Hintergrundprozess gebunden sind und nach dem Abschluss der Benutzeranwendung nicht automatisch gelöscht werden.
    • In nftables wurde das Hinzufügen von Elementen zu Set-Gruppen mit kombinierten Bereichen beschleunigt.
  • Ausrüstung
    • Im i915-Treiber wurde die Arbeit an der Unterstützung von Intel LunarLake (Xe 2)-Chips fortgesetzt. Neue PCI-Identifikatoren für Geräte auf Basis von Intel Arrow Lake und Alder Lake N wurden hinzugefügt. Für Displayport wurde Unterstützung für Tunneling (DP Tunneling) und Bandbreitenzuweisung (Bandwidth Allocation) hinzugefügt. Für alle Plattformen wurde der Fastboot-Modus aktiviert. Unterstützung für Debug-Ausgaben im Zusammenhang mit einzelnen Geräten wurde hinzugefügt.
    • Im AMDGPU-Treiber wurde die Vorbereitung zur Unterstützung von GPU AMD RDNA3.5 und RDNA4 durchgeführt. Unterstützung für ATHUB 4.1, LSDMA 7.0, JPEG DPG, IH 7.0, HDP 7.0, VCN 5.0, SMU 13.0.6, NBIO 7.11, SDMA 6.1, MMHUB 3.3, DCN 3.5.1, NBIF 6.3.1, VPE 6.1.1 und das RAS ACA-Framework wurde hinzugefügt. Im Kernel-Modul wurde der Parameter freesync_video hinzugefügt, um die experimentelle Unterstützung zur Optimierung des Wechsels zwischen Videomodi mit FreeSync-Technologie zu aktivieren.
    • Im Nouveau-Treiber wurde der Anzeigesteuerungscode auf die Verwendung der Funktion kmemdup() umgestellt.
    • Die Entwicklung des drm-Treibers (Direct Rendering Manager) für die Xe-GPU-Architektur von Intel, die in Intel Arc-Grafikkarten und integrierter Grafik ab Tiger Lake-Prozessoren verwendet wird, wurde fortgesetzt.
    • DRM-Treiber für Mediatek MT8188 VDOSYS1-Chips hinzugefügt.
    • Kernel-Einstellungen, die mit der Video-Subsystemen verbunden sind, wurden in den Abschnitt CONFIG_VIDEO verschoben.
    • Unterstützung für ARM64 SoC: Mediatek MT7981B (Filogic 820), MT7988A (Filogic 880), NXP i.MX8DXP, Renesas R8A779G2 (R-Car V4H ES2.0), R8A779H0 (R-Car V4M), TI J722S hinzugefügt.
    • Unterstützung für ARM-Plattformen und -Geräte hinzugefügt: Android-Smartphones mit Tegra30-Chips, Chromebook-Modelle mit Mediatek MT8186, NAS, Tablets und Spielekonsolen auf Basis von Rockchips RK35xx, White Hawk-Boards auf Renesas SoC, Qualcomm SM8550 (Snapdragon 8 Gen 2)-Boards, Apalis Evaluation Board, Sielaff i.MX6 Solo Board, Samsung Galaxy Tab 4 10.1 LTE.
    • Der Code des Audio-Subsystems ALSA wurde refaktoriert. Unterstützung für die Audiosysteme Microchip SAM9x7, NXP i.MX95 und Qualcomm WCD939x wurde hinzugefügt. Der SoundWire-Treiber unterstützt jetzt ASoC mit den Audio-Co-Prozessoren AMD ACP 6.3, und für Intel-Systeme wurde ein DSPless-Modus implementiert. Unterstützung für zusätzliche Audio-Codecs Cirrus HD wurde hinzugefügt. Im Virtio-Treiber wurde das Management von Audio-Geräten verbessert.
    • Unterstützung für Ethernet-Controller Marvell Octeon PCI Endpoint NIC VF und Intel E825-C 100G wurde hinzugefügt.

Gleichzeitig hat die lateinamerikanische Free Software Foundation eine vollständig freie Variante des Kernels 6.9 – Linux-libre 6.9-gnu – erstellt, die von Elementen von Firmware und Treibern gereinigt wurde, die nichtfreie Komponenten oder Codeabschnitte enthalten, deren Verwendung vom Hersteller eingeschränkt ist. In der Version 6.9 wurde der Code zur Bereinigung von Blobs in den Treibern amdgpu, ath12k, adreno, btusb und r8169 aktualisiert. Der neue Treiber ptp_fc3 wurde gereinigt. Die Benennung von Blobs in DTS-Dateien (Device Tree) für die Architektur Aarch64 wurde bereinigt. Probleme mit der Treiberbereinigung von i915, die zu Abstürzen während der Initialisierung führten, wurden behoben. Änderungen im Zusammenhang mit der Verarbeitung von Blobs, die in Form von hexadezimalen Dumps geliefert werden, wurden eingeführt.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster