Nach zwei Monaten Entwicklung stellte Linus Torvalds die Veröffentlichung des Linux-Kernels 7.2 vor. Zu den bemerkenswertesten Änderungen gehören: der Datenstrommechanismus USB4STREAM, Leistungsoptimierungen für btrfs, xfs und ext4, die fortgesetzte Entfernung des Codes zur Unterstützung von CPU i486, die Möglichkeit zur Erstellung verschachtelter Scheduler SCHED_EXT, geringerer Speicherverbrauch im Swap-Subsystem, beschleunigte ungekennzeichnete Kanäle, Unterstützung für Intel MBEC- und AMD GMET-Erweiterungen in KVM, Entfernung des AppleTalk-Protokolls und erste Unterstützung für HDMI 2.1 FRL im AMDGPU-Treiber.
Die wichtigsten Neuerungen im Kernel 7.2 (1, 2, 3):
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Mechanismus iomap wurde ein überflüssiger Funktionsaufruf von memset für bereits abgeschlossene Iterationen in der Funktion iomap_iter() entfernt, was bei intensiven Ein-/Ausgaben auf schnellen NVMe-Speicher Geräten die Anzahl der Ein-/Ausgabeoperationen pro Sekunde (IOPS) in Tests um 5 % erhöhte, wenn das Dateisystem ext4 und xfs verwendet wurde.
- In XFS wurde die Unterstützung für zonierte Speichergeräte (Aufteilung in Zonen von Blockgruppen oder Sektoren, in die nur sequentiell Daten hinzugefügt werden dürfen, während die gesamte Gruppe von Blöcken aktualisiert wird) als stabil erklärt.
- In Btrfs wurde die Unterstützung für große Seitenfolien (large folios) standardmäßig aktiviert, was die Overhead-Kosten senkt und die Leistung bei intensiven sequentiellen Ein-/Ausgaben erhöht. Experimentelle Unterstützung für riesige Folien („huge folios“) mit einer Größe von bis zu 2 MB wurde hinzugefügt. Ein neuer ioctl GET_CSUMS wurde hinzugefügt, um Informationen über Prüfziffern im Benutzerspeicher bereitzustellen, beispielsweise für das Tool mkfs und zur Optimierung der Deduplikation. Die Leistung bei sequentiellem Schreiben von Daten wurde um 15 % und bei direktes Ein-/Ausgeben um 59 % verbessert.
- In ext4 wurde die Implementierung des Mechanismus „fast commit“ erheblich überarbeitet, um das Auftreten von Wettbewerbs- und gegenseitigen Sperren zu vermeiden. Die Statistik zu Snapshots von Inodes kann nun über /proc/fs/ext4/*/fc_info exportiert werden. Die Leistung bei der Berechnung von Hashes für Verzeichnisse wurde optimiert (bei Namen mit 255 Zeichen fast verdoppelt, 64 Zeichen 27 %, 32 Zeichen — 11 %).
- In F2FS wurde die Unterstützung für die Rückgabe von fserror-Fehlern hinzugefügt, die es aus dem Benutzerspeicher ermöglichen, Probleme mit dem Dateisystem zu verfolgen. Die Zeit, die im Kontext der Interruptverarbeitung verbracht wird, wurde verkürzt.
- Im Device Mapper (DM) wurde ein neuer Handler dm-inlinecrypt hinzugefügt, der eine transparente Verschlüsselung und Entschlüsselung von Blockgeräten unter Verwendung von Hardware mit Inline-Verschlüsselungsfunktion ermöglicht.
- Dokumentation zum Hinzufügen neuer Dateisysteme zum Kernel wurde vorgeschlagen.
- In NFS wurde die Standardblockgröße auf 4 MB für Systeme mit mindestens 16 GB RAM erhöht (um die Blockgröße manuell zu ändern, kann /proc/fs/nfsd/max_block_size verwendet werden). Es wurde Unterstützung für die Delegation der Verzeichnisverwaltung an den Client (directory delegation) hinzugefügt, was es ermöglicht, bestimmte Operationen mit diesem Verzeichnis für eine gewisse Zeit ohne Überprüfung des Zustands durchzuführen. Server.
- Im SMB-Server wurde die Unterstützung für komprimierte Dateien hinzugefügt sowie die Datenkompression während der Übertragung über das Netzwerk.
- In der neuen NTFS-Implementierung (ntfsplus) wurde Unterstützung für Windows-Symbolic Links hinzugefügt, und eine korrekte Verarbeitung vieler Arten von Metadatenbeschädigungen wurde gewährleistet.
- Das Backend fscache für die Caching von Daten des EROFS (Enhanced Read-Only File System) wurde entfernt, welches vor zwei Jahren als veraltet erklärt wurde.
- Im Ceph-Dateisystem wurde die Unterstützung für manuelles Zurücksetzen von Client-Sitzungen hinzugefügt.
- Im 9P-Dateisystem wurden Optimierungen vorgenommen, die die Leistung in Szenarien wie dem Erstellen von Projekten beschleunigten.
- In den Systemaufruf file_getattr() wurden Flags für die Beschaffung von Informationen über die Groß-/Kleinschreibung in Dateisystemen hinzugefügt. Das Flag FS_XFLAG_CASEFOLD zeigt an, dass die Überprüfung von Dateinamen ohne Berücksichtigung der Groß-/Kleinschreibung erfolgt, während das Flag FS_XFLAG_CASENONPRESERVING besagt, dass bei der Erstellung neuer Dateinamen keine Informationen zur Groß-/Kleinschreibung beibehalten werden. Diese Flags können in NFS-Clients verwendet werden, die ohne Berücksichtigung der Groß-/Kleinschreibung arbeiten.
- Im Systemaufruf openat2() wurde das Flag O_EMPTYPATH hinzugefügt, das die Übertragung eines leeren Dateipfades erlaubt. In diesem Fall wird der Pfad zur zu öffnenden Datei anhand des übergebenen Dateideskriptors bestimmt.
- Im Systemaufruf openat2() wurde das Flag OPENAT2_REGULAR hinzugefügt, das nur das Öffnen von regulären Dateien erlaubt (bei dem Versuch, eine spezielle Datei wie ein Socket, ein Kanal oder ein Gerät zu öffnen, wird der Fehler EFTYPE zurückgegeben).
- Speicher und Systemdienste
- Der USB4STREAM-Mechanismus für die Datenübertragung zwischen Computern, die über USB4-Ports verbunden sind, wurde implementiert. Ein Gerät /dev/tbstreamX wurde hinzugefügt, mit dem Daten gelesen und geschrieben werden können, indem die Standardfunktionen read() und write() ähnlich wie beim Lesen und Schreiben in Dateien verwendet werden. Zum Beispiel kann auf einem Host Informationen mit dem Befehl „echo hello > /dev/tbstream0“ gesendet werden, während sie auf einem anderen mit dem Befehl „cat /dev/tbstream0“ gelesen werden können. Der USB4STREAM-Mechanismus kann mit der Möglichkeit zur Einrichtung einer Netzwerkverbindung über USB4-Kabel (thunderbolt_net) kombiniert oder separat verwendet werden, wenn Daten zwischen Anwendungen übertragen werden müssen, die keine Netzsockets unterstützen.
- Die zweite Serie von Änderungen zur Beendigung der Unterstützung für i486-Prozessoren wurde aktiviert. Über 13 Codezeilen, die mit der Emulation einer FPU-Blockeinheit für Prozessoren ohne FPU verbunden sind, wurden entfernt. Die Unterstützung für i486-Prozessoren ohne Hardware-Operationen CX8 (Vergleichen und Austauschen von 8 Byte) und TSC (CPU-Zähler, der im Task-Scheduler verwendet wird) wurde entfernt, der Code zur Emulation davon wurde gelöscht.
- Die Unterstützung für AMD Geode-Prozessoren, die im OLPC XO-1-Computer verwendet werden, wurde als unbetreut (orphaned) erklärt.
- Die Unterstützung für die Aktualisierung der Implementierung des Intel TDX-Mechanismus (Trusted Domain Extensions), der zur Verschlüsselung des Arbeitsspeichers von Gastbetriebssystemen verwendet wird, wurde hinzugefügt. TDX wird in Form eines speziellen Software-Runtime-Moduls implementiert, das während des Bootvorgangs vom BIOS aus dem Flash-Speicher in den Arbeitsspeicher übertragen wird. Im Kernel wurden Funktionen zur Verwaltung dieses Moduls und zum Ersetzen durch eine neuere Version in einem laufenden System hinzugefügt, ohne dass ein Neustart erforderlich ist.
- Ein neuer Fair GPU-Scheduler wurde implementiert, der zur Bestimmung der Ausführungsreihenfolge von auf dem GPU ausgeführten Arbeiten verwendet wird, die von Prozessen gesendet werden, die die GPU nutzen. Anstelle der Verwendung einer traditionellen FIDO-Warteschlange für GPU-Anfragen setzt der neue Scheduler Mechanismen für eine gerechte Verteilung der Ressourcen ein, die an den CFS (Completely Fair Scheduler) angelehnt sind und einen Plan zur Ausführung mit einer Wechselzeit für den nächsten Prozess anwenden. Der bemerkenswerteste Effekt der Verwendung des neuen Schedulers zeigt sich beim parallelen Ausführen interaktiver Aufgaben, die intensiv mit der GPU arbeiten. Kurz vor der Veröffentlichung des Kernels 7.2 wurde die Aktivierung des Fair GPU Schedulers zurückgezogen und der alte FIFO-Scheduler wurde wiederhergestellt, da eine Debugging-Regression aufgetreten ist, die die Leistung verringert und zu einer 100%-igen Auslastung der GPU beim Start bestimmter Spiele in Proton führt.
- Änderungen im eBPF-Subsystem: Es wurde die Möglichkeit hinzugefügt, ein BPF-Programm an mehreren Tracepoints anzuhängen. In die an Tracepoints gebundenen BPF-Programme wurde die Möglichkeit integriert, auf den Speicher von Komponenten zuzugreifen, die im Benutzerspeicherbetrieb arbeiten, mit einer korrekten Handhabung von Referenzen auf nicht zugewiesene Speicherseiten (Page Fault). Der Systemaufruf bpf() wurde um die Unterstützung typischer Attribute (log_buf, log_size, log_level und log_true_size) erweitert, was eine einheitliche Übergabe von Metadaten in allen BPF-Befehlen ermöglicht, ohne sich auf die Befehle BPF_PROG_LOAD, BPF_BTF_LOAD und BPF_MAP_CREATE zu beschränken. Es gibt keine Begrenzung mehr für die Übergabe von nicht mehr als 5 Parametern in den BPF-Funktionen. Es wurde die Möglichkeit hinzugefügt, sicher auf den gemeinsam genutzten Speicher bpf_arena zuzugreifen, ohne befürchten zu müssen, auf nicht zugewiesene Speicherseiten (Page Fault) zuzugreifen. Eine neue Variante der BPF-Hashmap-Struktur wurde implementiert, die eine dynamische Größenänderung ermöglicht.
- Die Ausgabe von «/proc/interrupts» mit Interrupt-Statistiken wurde optimiert, und die Strukturen zur Speicherung der Interrupt-Zähler wurden modernisiert und mit Caching erweitert.
- Die Generierung der Datei «/proc/filesystems», die in libselinux verwendet wird, wurde beschleunigt.
- Im Task-Scheduler wurde die Unterstützung für die Lastverteilung zwischen den CPU-Kernen implementiert, die den Zustand des internen CPU-Caches berücksichtigt. Der Scheduler versucht nun, Prozesse zu gruppieren, die gemeinsame Ressourcen nutzen, wie zum Beispiel Threads eines Prozesses, sodass sie im Kontext desselben oberen Caches verwendet werden können, was die Effizienz des Datenzugriffs durch eine höhere Wahrscheinlichkeit, die benötigten Daten im Cache zu finden, erhöht.
- Im SCHED_EXT-Mechanismus, der es ermöglicht, BPF zur Erstellung von CPU-Schedulern zu verwenden, wurde die Implementierung der Möglichkeit zur Erstellung verschachtelter Scheduler (Sub-Scheduler) fortgesetzt, mit denen für jede cgroup ein eigener Task-Scheduler aktiviert werden kann.
- Der Transfer von Änderungen aus dem Rust-for-Linux-Zweig, die sich auf die Verwendung der Programmiersprache Rust als zweite Sprache für die Entwicklung von Treibern und Kernel-Modulen beziehen, wird fortgesetzt (Rust-Unterstützung ist standardmäßig nicht aktiviert und führt nicht dazu, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört). Die Möglichkeit, Rust im Kernel zu verwenden, wurde für die Architektur s390 implementiert. Das Paket "zerocopy" mit schnellen Primitiven zur Speicherbearbeitung für "unsafe"-Code ist enthalten.
- Die minimale Version des LLVM-Toolkits, die für den Bau des Kernels erforderlich ist, wurde auf 17.0.1 angehoben.
- In der minimalistischen C-Bibliothek nolibc, die mit dem Quelltext des Linux-Kernels geliefert wird und eine Wrapper-Schicht über die grundlegenden Systemaufrufe bereitstellt, wurde die Unterstützung für die Architekturen OpenRISC und 32-Bit PA-RISC implementiert.
- Im Swap-Subsystem wurden Optimierungen vorgenommen, die die Leistung erhöhen und den Speicherverbrauch im Subsystem selbst reduzieren, indem die Overheads bei der Speicherung statischer Metadaten ausgeschlossen und die Arbeit mit anonymer und Shared Memory beim Einsatz von Pfaden vereinheitlicht wird. Der Rückgang des Speicherverbrauchs ist durchaus erheblich, zum Beispiel wird beim Einhängen einer 1 TB großen Swap-Partition eine Einsparung von etwa 512 MB beobachtet.
- Die Effizienz des Speicherauslagerungsmechanismus, der Speicherbereiche entfernt oder in den Swap-Bereich verschiebt, um Speicher freizugeben, wenn er im System knapp wird, wurde erhöht. Bei bestimmten Lasten, zum Beispiel beim Testen von MongoDB mit YCSB (Yahoo! Cloud Serving Benchmark), wird ein Leistungszuwachs von bis zu 30 % beobachtet.
- Im Build-System wurde der Befehl „make sbom“ hinzugefügt, um SBOM-Listen (Software Bill Of Materials) zu generieren, die die in der aktuellen Kernel-Build verwendeten Komponenten, Bibliotheken und Abhängigkeiten sowie Informationen über deren Lizenzen enthalten, die aus den SPDX-Headern in den Code-Dateien stammen.
- In der Implementierung von anonymen Pipes wurde die Handhabung von Sperren optimiert (Speicherzuweisungen wurden außerhalb des Sperrbereichs verlagert), was die Durchsatzrate anonyme Pipes um 21-48 % erhöht und die Latenz um 17-33 % verringert hat.
- Virtualisierung und Sicherheit
- Im Slab-Speicherverteilungsmechanismus (Slab Allocator) wurde die Möglichkeit hinzugefügt, Allocation Tokens zu verwenden, die im Compiler Clang 22 implementiert sind. Tokens ermöglichen es, Speicherzuweisungsoperationen mit einzigartigen Identifikatoren zu kennzeichnen und verschiedene Objekttypen getrennt zu platzieren, um die Ausnutzung von Schwachstellen, die durch Pufferüberläufe verursacht werden, zu erschweren (beim Trennen ist es weniger einfach, einen Pufferüberlauf bei einem Objekttyp zu nutzen, um anderen Objekttypen zu schaden).
- Der AF_ALG-Mechanismus, der in der Copy Fail-Sicherheitsanfälligkeit zur Modifizierung von Daten im Seitencache verwendet wird, wurde als veraltet erklärt und ist zur Entfernung in einer zukünftigen Version vorgesehen. AF_ALG ermöglicht die Nutzung von Hardwarebeschleunigern für kryptographische Berechnungen im Crypto API des Kernels, wird jedoch nur in recht spezifischen Situationen angewendet. In Kernel 7.2 wurde die Unterstützung für asynchrone Ein-/Ausgabe, alte Treiber und den Zero-Copy-Mechanismus in der Implementierung von skcipher und aead entfernt. Es bleiben nur die Softwareimplementierungen kryptografischer Algorithmen erhalten, und die Unterstützung für Hardware-Krypto-Beschleuniger im Crypto API des Kernels wurde entfernt, da AF_ALG die Angriffsfläche erheblich vergrößert, aber im Vergleich zu der Implementierung der Kryptografie im Benutzerspeicher keinen Leistungsvorteil bietet. AF_ALG wurde im Cryptsetup-Werkzeug verwendet, seine Unterstützung wurde jedoch in der aktuellen Version 2.8.7 entfernt.
- Im IMA-Mechanismus (Integrity Measurement Architecture), der es einem externen Dienst ermöglicht, den Zustand der Kernel-Subsysteme zu verifizieren, um deren Authentizität sicherzustellen, wurde die Unterstützung für den Export interner Tabellen mit Messungsergebnissen in den Benutzerspeicher hinzugefügt, wobei diese aus den Kernel-Puffern entfernt werden, um Speicher zu sparen.
- Im Landlock-Modul, das unprivilegierten Programmen Werkzeuge zur Begrenzung der Nutzung von Objekten im Linux-Kernel (Dateihierarchien, Netzwerk-Sockets, ioctl usw.) bereitstellt, wurde die Unterstützung für den Zugriff auf UDP-Sockets hinzugefügt sowie die Möglichkeit, die Protokollierung von Informationen über die Blockierung von Objekten selektiv zu deaktivieren, um eine Überladung des Protokolls mit unwichtigen Informationen zu vermeiden.
- Der Kernel wurde von der Verwendung der Funktion strncpy() befreit, die eine festgelegte Anzahl von Bytes aus einer Eingabezeichenfolge kopiert. Der Einsatz von strncpy() birgt die Gefahr von Fehlern durch das Versäumen des Nullzeichens am Ende der Zeichenfolge oder das Hinzufügen von Nullauffüllungen. Statt strncpy() wird empfohlen, die Funktionen strscpy() und strscpy_pad() zum Kopieren von nullterminierten Zeichenfolgen sowie strtomem_pad(), memcpy_and_pad() und memcpy() zum Kopieren von Zeichenfolgen einer bekannten festen Größe zu verwenden. Die Arbeit zur Beseitigung der Verwendung von strncpy() im Kernel begann im Jahr 2020 und erforderte die Annahme von 362 Änderungen durch 70 Entwickler.
- Im Hypervisor KVM wurde die Unterstützung für die Intel MBEC (Mode-Based Execution Control) und AMD GMET (Guest-Mode Execution Trap) Erweiterungen hinzugefügt, die es ermöglichen, die Ausführungsrechte für Kernel und Benutzerspace in Gastsystemen getrennt in den Speicherübersetzungstabellen zu behandeln. Zuvor erlaubten die Hardware-Virtualisierungserweiterungen von Intel und AMD, Speicherseiten nur mit einem einzelnen Bit als ausführbar zu kennzeichnen, wobei die Rechte für Kernel und Benutzerspace auf Hypervisor-Ebene programmatisch getrennt wurden. Die Verwendung von MBEC und GMET ermöglicht es, Berechtigungsprüfungen auf Hypervisorebene zu vermeiden und die ressourcenintensive Kontrolle von der Gastsystem zum Hypervisor VMexit erheblich zu reduzieren.
- Netzwerksubsystem
- Die Implementierung der TCP-AO-Erweiterung (TCP Authentication Option, RFC 5925) wurde auf die Verwendung der neuen kryptografischen Bibliothek libcrypto umgestellt, was den Code vereinfachte und die Effizienz erhöhte. TCP-AO ermöglicht die Verifizierung von TCP-Headern basierend auf MAC-Codes (Message Authentication Code) unter Verwendung modernerer Algorithmen wie HMAC-SHA-1-96 und AES-128-CMAC-96 anstelle der zuvor verfügbaren TCP-MD5-Option, die auf dem veralteten MD5-Algorithmus basierte.
- Die Anzahl der Subströme, die für Multipath TCP (MPTCP)-Verbindungen unterstützt werden, wurde von 8 auf 64 erhöht.
- Die Arbeit zur Reduzierung der Verwendung der globalen Sperre rtnl_lock im Netzwerkstack des Kernels wurde fortgesetzt.
- Die Implementierung des AppleTalk-Protokollstacks wurde aus dem Kernel entfernt, der seit 1985 in Apple-Computern verwendet wurde und in den 1990er Jahren durch TCP/IP ersetzt wurde. Zusätzlich wurden Komponenten der ATM-Datenübertragungstechnologie entfernt, die nicht mit PPPoATM verbunden sind, sowie Netzwerkinterfaces von ARCnet auf Basis von ISA- und PCMCIA-Bussen, PCMCIA-Bluetooth-Adapter, Chelsea-TLS-Beschleuniger, Code zur Integration von TLS mit sockmap und die Unterstützung von Frequenzbereichen von 5/10 MHz im kabellosen Stack cfg80211/mac80211. Aufgrund unlösbarer Probleme mit Sperren und dem Fehlen begleitender Maßnahmen wurde die spezifische Implementierung der TLS-Beschleunigung auf Basis von TCP Offload Engine entfernt (die verbreitetere Implementierung der TLS-Offload wurde beibehalten). Der Code zur Sicherstellung der Kompatibilität mit 32-Bit x_tables auf 64-Bit-Systemen wurde deaktiviert und zur Entfernung vorgesehen.
- Im pppoe-Treiber wurde die Unterstützung der Mechanismen GRO (Generic Receive Offload) und GSO (Generic Segmentation Offload) für die hardwarebasierte Beschleunigung der Neuordnung und Segmentierung von Paketen hinzugefügt. Der Einsatz von GRO und GSO ermöglicht eine signifikante Steigerung der Bandbreite für den eingehenden Datenverkehr, beispielsweise hat sich bei MediaTek MT7621-Geräten in einer Konfiguration mit Adressübersetzer die maximale Bandbreite von 130 Mbit/s auf 630 Mbit/s erhöht.
- Ausrüstung
- Der AMDGPU-Treiber hat erste Unterstützung für die HDMI 2.1 FRL (Fixed Rate Link)-Technologie erhalten, die die Übertragung von unkomprimiertem Video in 4K/120 Hz und 8K/60 Hz ermöglicht. Zuvor gelang es nicht, die Unterstützung von HDMI 2.1 in offenen Treibern aufgrund der Lizenzanforderungen des HDMI-Forums zu implementieren, aber jetzt ist es AMD gelungen, eine solche Implementierung zu vereinbaren.
- Im i915-Treiber wurde die Unterstützung zur Einstellung der Hintergrundfarbe im Display-Controller hinzugefügt. Der Parameter pin_params.needs_low_address wurde implementiert.
- Die Arbeit am drm-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel-Xe-Architektur, die in Intel-Grafikkarten der Arc-Familie und in integrierter Grafik seit den Tiger-Lake-Prozessoren verwendet wird, wurde fortgesetzt. Erste Unterstützung für die CRI-Plattform (Crescent Island) wurde hinzugefügt. Für dGPU-Plattformen Xe3p wurde ein systemseitiger Controller implementiert.
- Im Nouveau-Treiber wurden Probleme mit der NVIDIA GA100-GPU behoben.
- Im v3d-Treiber wurde die Möglichkeit zur Steuerung des Energieverbrauchs der v3D-GPU auf Raspberry-Pi-Platinen hinzugefügt.
- Die Integration der Nova-Treiberkomponenten für NVIDIA GPUs mit GSP-Firmware, die seit der GeForce RTX 2000-Serie auf der Turing-Mikroarchitektur verwendet werden, wurde fortgesetzt. Der Treiber ist in Rust geschrieben. Unterstützung für die NVIDIA GA100 GPU sowie die Hopper- und Blackwell-Serien wurde hinzugefügt.
- Unterstützung für ARM-Plattformen, SoCs und Geräte hinzugefügt: Apple t8122 (M3), Motorola Edge 30, Nothing Phone 3a, Google Pixel 3a XL, Qualcomm Dragonwing IPQ9650, Huawei Hawi, ZTE zx297520v3, Renesas R-Car M3Le, ASPEED AST27xx, Cortina Gemini, NXP i.MX6/8/9, NXP LX2160A, TI K3 AM62x.
Gleichzeitig hat die lateinamerikanische Free Software Foundation einen vollständig freien Kernel 7.2 – Linux-libre 7.2-gnu – veröffentlicht, der von Firmware- und Treiberelementen befreit wurde, die nicht-freie Komponenten oder Codeabschnitte enthalten, deren Nutzung vom Hersteller eingeschränkt ist. In der Version 7.2 wurden neue Treiber wie rt722-sdca und tac5xx2 von Blobs gesäubert. Der Reinigungscode in den Treibern amdgpu, nova core, qcom iris, q6v5, iwlwifi, amdxnda, adreno, r8152 und mt792x wurde aktualisiert. Schnittstellen für das Laden von Firmware wurden angepasst. Es wurde eine Säuberung der Blob-Namen in dts-Dateien (Devicetree) für ARM-Chips durchgeführt.
Quelle: opennet.ru
