Nach zwei Monaten Entwicklung stellte Linus Torvalds die Version des Linux-Kernels 5.18 vor. Zu den bemerkenswertesten Änderungen gehören: eine umfassende Bereinigung veralteter Funktionen, die Erklärung des Reiserfs-Dateisystems als obsolet, die Implementierung von Ereignissen zur Nachverfolgung von Benutzerprozessen, die Hinzufügung von Unterstützung für den Sicherheitsmechanismus Intel IBT, die Aktivierung eines Überlauf-Detection-Modus bei Verwendung der memcpy()-Funktion, die Einführung eines Mechanismus zur Verfolgung von Funktionsaufrufen (fprobe), die Verbesserung der Leistung des CPU-Schedulers auf AMD Zen und die Integration eines Treibers zur Verwaltung von Intel-CPU-Funktionen (SDS). Zudem wurden einige Patches zur Restrukturierung von Header-Dateien integriert und die Verwendung des C11-Standards genehmigt.
In die neue Version wurden 16.206 Korrekturen von 2.127 Entwicklern aufgenommen (in der vorherigen Version gab es 14.203 Korrekturen von 1.995 Entwicklern), die Patch-Größe beträgt 108 MB (die Änderungen betrafen 14.235 Dateien, es wurden 1.340.982 Codezeilen hinzugefügt und 593.836 Zeilen gelöscht). Etwa 44 % aller Änderungen in 5.18 beziehen sich auf Gerätetreiber, etwa 16 % betreffen die Aktualisierung von architekturspezifischem Code, 11 % sind mit dem Netzwerk-Stack verbunden, 3 % mit Dateisystemen und 3 % mit internen Subsystemen des Kernels.
Hauptneuheiten im Kernel 5.18:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Btrfs-Dateisystem wurde Unterstützung für die Durchleitung komprimierter Daten bei den send- und receive-Operationen hinzugefügt. Vorher wurde bei der Verwendung von send/receive die sendende Seite gezwungen, die komprimierten Daten zu dekomprimieren, während die empfangende Seite sie vor dem Schreiben erneut komprimierte. Im Kernel 5.18 haben Anwendungen im Benutzerspeicher, die send/receive-Aufrufe verwenden, die Möglichkeit, komprimierte Daten ohne Neuverpackung zu übertragen. Diese Funktionalität wurde durch neue ioctl-Operationen BTRFS_IOC_ENCODED_READ und BTRFS_IOC_ENCODED_WRITE ermöglicht, die ein direktes Lesen und Schreiben von Informationen in Extents erlauben.
Darüber hinaus wurde die Leistung von fsync in Btrfs verbessert. Es wurde die Möglichkeit zur Deduplizierung und zur Durchführung von Reflink (Klonen von Dateimetadaten mit Erstellung eines Links zu bereits vorhandenen Daten ohne deren tatsächliche Kopie) für das gesamte Speichergerät hinzugefügt, ohne auf die Einhängepunkte beschränkt zu sein.
- Im Modus direkten Eingangs/Ausgangs (Direct I/O) ist der Zugriff auf verschlüsselte Dateien unter Verwendung von fscrypt Inline-Verschlüsselung möglich, bei der die Verschlüsselungs- und Entschlüsselungsoperationen von dem Speichercontroller und nicht vom Kernel durchgeführt werden. Bei herkömmlicher Verschlüsselung durch den Kernel ist der Zugriff auf verschlüsselte Dateien über Direct I/O nach wie vor nicht möglich, da der Zugriff auf die Dateien den Puffermechanismus im Kernel umgeht.
- Auf dem NFS-Server ist standardmäßig die Unterstützung des Protokolls NFSv3 aktiviert, das nun keine separate Aktivierung mehr erfordert und beim allgemeinen Aktivieren von NFS verfügbar ist. NFSv3 wird als die primäre und stets unterstützte Version von NFS betrachtet, während die Unterstützung von NFSv2 möglicherweise in Zukunft eingestellt wird. Die Effizienz beim Lesen des Inhalts von Verzeichnissen wurde erheblich verbessert.
- Das Dateisystem ReiserFS wurde als veraltet eingestuft und wird 2025 entfernt. Die Einstufung von ReiserFS als veraltet ermöglicht eine Verringerung des Aufwands für die Wartung allgemeiner Änderungen an Dateisystemen in Bezug auf die Unterstützung neuer APIs für das Einhängen, iomap und Folios.
- Für das FS F2FS wurde die Möglichkeit implementiert, Benutzer-IDs von eingehängten Dateisystemen zuzuordnen, die verwendet wird, um Dateien eines bestimmten Benutzers auf einem fremden eingehängten Laufwerk einem anderen Benutzer im aktuellen System zuzuordnen.
- Der Code zur Berechnung von Statistiken in den Device-Mapper-Handlern wurde überarbeitet, was die Genauigkeit der Abrechnung in solchen Handlern wie dm-crypt erheblich verbessert hat.
- Für NVMe-Geräte wurde die Unterstützung für 64-Bit-Prüfziffern zur Überprüfung der Integrität implementiert.
- Für das Dateisystem exfat wurde eine neue Einhängeoption „keep_last_dots“ vorgeschlagen, die das Entfernen von Punkten am Ende des Dateinamens verhindert (in Windows werden Punkte am Ende des Namens standardmäßig entfernt).
- In EXT4 wurde die Leistung des Modus fast_commit verbessert und die Skalierbarkeit erhöht. Die Einhängeoption „mb_optimize_scan“, die die Leistung bei hoher Fragmentierung des FS verbessert, wurde für die Arbeit mit Dateien mit Extents angepasst.
- Die Unterstützung für Schreibströme (write stream) im Teilsystem, das den Betrieb blockbasierter Geräte gewährleistet, wurde eingestellt. Diese Funktion wurde für SSDs vorgeschlagen, fand jedoch keine Verbreitung, und derzeit gibt es keine Geräte, die diesen Modus unterstützen. Es ist unwahrscheinlich, dass solche Geräte in Zukunft erscheinen werden.
- Im Btrfs-Dateisystem wurde Unterstützung für die Durchleitung komprimierter Daten bei den send- und receive-Operationen hinzugefügt. Vorher wurde bei der Verwendung von send/receive die sendende Seite gezwungen, die komprimierten Daten zu dekomprimieren, während die empfangende Seite sie vor dem Schreiben erneut komprimierte. Im Kernel 5.18 haben Anwendungen im Benutzerspeicher, die send/receive-Aufrufe verwenden, die Möglichkeit, komprimierte Daten ohne Neuverpackung zu übertragen. Diese Funktionalität wurde durch neue ioctl-Operationen BTRFS_IOC_ENCODED_READ und BTRFS_IOC_ENCODED_WRITE ermöglicht, die ein direktes Lesen und Schreiben von Informationen in Extents erlauben.
- Speicher und Systemdienste
- Die Integration eines Patch-Sets, das die Neuaufbauzeit des Kernels erheblich verkürzt, hat begonnen. Dies geschieht durch die Umstrukturierung der Hierarchie der Header-Dateien und die Reduzierung der Anzahl der Kreuzabhängigkeiten. Die Kernelversion 5.18 enthält Patches, die die Struktur der Header-Dateien des Prozessplaners (kernel/sched) optimieren. Im Vergleich zur vorherigen Version wurde der CPU-Zeitverbrauch beim Bauen des Codes kernel/sched um 61 % reduziert, und die tatsächliche Build-Zeit verringerte sich um 3,9 % (von 2,95 auf 2,84 Sekunden).
- Im Kerncode ist die Verwendung des Standards C11, der 2011 veröffentlicht wurde, erlaubt. Zuvor musste der zum Kernel hinzugefügte Code den ANSI C (C89) entsprechen, der 1989 festgelegt wurde. In den Build-Skripten des Kernels 5.18 wurde die Option '—std=gnu89' durch '—std=gnu11 -Wno-shift-negative-value' ersetzt. Es wurde in Betracht gezogen, den Standard C17 zu verwenden, jedoch hätte dies eine Erhöhung der minimal unterstützten GCC-Version erforderlich gemacht, während die Unterstützung von C11 den aktuellen Anforderungen an die GCC-Version (5.1) entspricht.
- Die Leistung des Task-Schedulings auf AMD-Prozessoren mit der Mikroarchitektur Zen wurde verbessert. Diese besitzen mehrere Last-Level-Caches (LLC) für jeden Knoten mit lokalen Speicherkanälen. In der neuen Version wurde das Ungleichgewicht zwischen den LLCs in NUMA-Knoten behoben, was unter bestimmten Lasten zu einer erheblichen Leistungssteigerung führte.
- Die Mittel zur Nachverfolgung von Anwendungen im Benutzermodus wurden erweitert. In der neuen Kernversion wurde die Möglichkeit hinzugefügt, dass Benutzerprozesse Nachverfolgungsereignisse (User events) erstellen und Daten in den Nachverfolgungspuffer schreiben können. Diese können dann über gängige Nachverfolgungswerkzeuge des Kernels, wie ftrace und perf, eingesehen werden. Benutzer-Tracking-Ereignisse sind von den Ereignissen des Kernel-Trackings isoliert. Der Status der Ereignisse kann über die Datei /sys/kernel/debug/tracing/user_events_status eingesehen werden, während die Registrierung eines Ereignisses und das Schreiben von Daten über die Datei /sys/kernel/debug/tracing/user_events_data erfolgt.
- Ein Mechanismus zur Verfolgung (Probe) von Funktionsaufrufen wurde hinzugefügt - fprobe. Die API fprobe basiert auf ftrace, ist jedoch auf die Möglichkeit beschränkt, Callback-Handler an Eintrittspunkte in Funktionen und zum Abschluss von Funktionen anzuhängen. Im Gegensatz zu kprobes und kretprobes ermöglicht der neue Mechanismus die Verwendung eines Handlers für mehrere Funktionen gleichzeitig.
- Die Unterstützung älterer ARM-Prozessoren (ARMv4 und ARMv5), die nicht mit einer Speicherverwaltungseinheit (MMU) ausgestattet sind, wurde eingestellt. Die Unterstützung für ARMv7-M-Systeme ohne MMU bleibt bestehen.
- Die Unterstützung der RISC-ähnlichen Architektur NDS32, die in Prozessoren von Andes Technologies verwendet wurde, wurde eingestellt. Der Code wurde aufgrund fehlender Wartung und des mangelnden Bedarfs an NDS32-Unterstützung im Hauptkern von Linux entfernt (die verbleibenden Nutzer verwenden spezialisierte Kernel-Builds von Hardwareherstellern).
- Die Kernel-Kompilierung mit Unterstützung für das Format a.out für die Architekturen alpha und m68k, in denen dieses Format weiterhin verwendet wird, ist standardmäßig deaktiviert. Es ist wahrscheinlich, dass die Unterstützung des veralteten Formats a.out bald vollständig aus dem Kernel entfernt wird. Pläne zur Entfernung des Formats a.out werden seit 2019 diskutiert.
- Für die PA-RISC-Architektur wurde eine minimale Unterstützung des vDSO-Mechanismus (virtual dynamic shared objects) implementiert, der eine begrenzte Anzahl von Systemaufrufen bereitstellt, die im Benutzerspeicher ohne Kontextwechsel verfügbar sind. Die Unterstützung von vDSO ermöglicht die Ausführung mit einem nicht ausführbaren Stapel.
- Die Unterstützung des Intel HFI (Hardware Feedback Interface) wurde hinzugefügt, das es der Hardware ermöglicht, dem Kernel Informationen über die aktuelle Leistung und Energieeffizienz jedes CPU zu übermitteln.
- Ein Treiber für den Mechanismus Intel SDSi (Software-Defined Silicon) wurde hinzugefügt, der die Aktivierung zusätzlicher Funktionen im Prozessor ermöglicht (z. B. spezialisierte Anweisungen und zusätzlichen Cache-Speicher). Die Idee besteht darin, Chips zu einem niedrigeren Preis mit gesperrten erweiterten Funktionen anzubieten, die dann 'gekauft' und aktiviert werden können, ohne den Chip physisch auszutauschen.
- Der Treiber amd_hsmp wurde hinzugefügt, um die Schnittstelle AMD HSMP (Host System Management Port) zu unterstützen, die den Zugriff auf Funktionen zur Prozessorsteuerung über einen Satz spezieller Register ermöglicht, die in den Serverprozessoren AMD EPYC ab der Generation Fam19h eingeführt wurden. Beispielsweise kann über HSMP auf Daten zum Energieverbrauch und zur Temperatur zugegriffen, Frequenzgrenzen gesetzt, verschiedene Leistungssteigerungsmodi aktiviert und die Speicheroperationen verwaltet werden.
- Im io_uring-Schnittstelle für asynchronen Ein-/Ausgabe wurde die Option IORING_SETUP_SUBMIT_ALL für die Registrierung eines Sets von Dateideskriptoren im Ring-Puffer implementiert, sowie die Operation IORING_OP_MSG_RING, die es ermöglicht, ein Signal von einem Ring-Puffer in einen anderen Ring-Puffer zu senden.
- Im Mechanismus DAMOS (Data Access Monitoring-based Operation Schemes), der das Freigeben von Speicher unter Berücksichtigung der Zugriffsfrequenz auf den Speicher ermöglicht, wurden die Möglichkeiten zur Überwachung von Speicheroperationen im Benutzerspeicherraum erweitert.
- Die dritte Serie von Patches zur Umsetzung des Konzepts von Seitenfolios (page folios) wurde integriert, die an verbundene Seiten (compound pages) erinnern, jedoch durch eine verbesserte Semantik und eine klarere Arbeitsorganisation unterscheiden. Der Einsatz von Folios ermöglicht eine schnellere Speicherverwaltung in einigen Kernsubsystemen. In den vorgeschlagenen Patches wurde die Umstellung auf Folios interner Speicherverwaltungsfunktionen, einschließlich Varianten der Funktion get_user_pages(), vorgenommen. Die Unterstützung für die Erstellung großer Folios im Code für vorab geladenen Daten wurde bereitgestellt.
- Im Build-System wird die Unterstützung für die Umgebungsvariablen USERCFLAGS und USERLDFLAGS eingeführt, mit denen zusätzliche Flags an den Compiler und den Linker übergeben werden können.
- Im eBPF-Subsystem wurde im Mechanismus BTF (BPF Type Format), der Informationen zur Typprüfung im BPF-Pseudocode bereitstellt, die Möglichkeit implementiert, Anmerkungen zu Variablen hinzuzufügen, die auf Speicherbereiche im Benutzerspeicher verweisen. Diese Anmerkungen unterstützen das BPF-Code-Verifizierungssystem dabei, Speicherzugriffe qualitativ besser zu identifizieren und zu überprüfen.
- Ein neuer Handler für die Speicherzuweisung zur Speicherung geladener BPF-Programme wurde vorgeschlagen, der eine effizientere Nutzung des Speichers in Situationen ermöglicht, in denen eine große Anzahl von BPF-Programmen geladen wird.
- Im Systemaufruf madvise(), der Mittel zur Optimierung des Speichermanagements eines Prozesses bereitstellt, wurde das Flag MADV_DONTNEED_LOCKED hinzugefügt, das das bereits vorhandene Flag MADV_DONTNEED ergänzt. Damit kann dem Kernel im Voraus mitgeteilt werden, dass ein Speicherblock freigegeben werden soll, d.h. dass dieser Block nicht mehr benötigt wird und vom Kernel verwendet werden kann. Im Gegensatz zu MADV_DONTNEED kann das Flag MADV_DONTNEED_LOCKED für im RAM verankerte Seiten verwendet werden, die beim Aufruf von madvise ohne Änderung ihres verankerten Status verdrängt werden und im Falle eines späteren Zugriffs auf den Block und der Erzeugung eines „Page Faults“ mit erhaltener Bindung zurückgegeben werden. Zusätzlich wurde eine Änderung hinzugefügt, die die Verwendung des Flags MADV_DONTNEED mit großen Speicherseiten im HugeTLB ermöglicht.
- Virtualisierung und Sicherheit
- Für die x86-Architektur wurde die Unterstützung des Schutzmechanismus zur Verfolgung indirekter Sprünge (IBT, Indirect Branch Tracking) von Intel hinzugefügt, der die Anwendung von Techniken zur Erstellung von Exploits unter Verwendung zurückkehrend orientierter Programmierung (ROP, Return-Oriented Programming) erschwert. Dabei wird der Exploit in Form einer Kette von Aufrufen bereits im Speicher vorhandener Maschinencode-Stücke gebildet, die mit einem Rückgabebefehl enden (in der Regel den Enden von Funktionen). Der Kern des implementierten Schutzverfahrens besteht darin, indirekte Sprünge in den Funktionskörper zu blockieren, indem zu Beginn der Funktion eine spezielle Anweisung ENDBR hinzugefügt wird. Die Ausführung über einen indirekten Sprung ist nur zulässig, wenn auf diese Anweisung zugegriffen wird (ein indirekter Aufruf über JMP und CALL muss immer auf die ENDBR-Anweisung zeigen, die sich am Anfang der Funktion befindet).
- Eine strengere Überprüfung der Puffergrenzen in den Funktionen memcpy(), memmove() und memset() wurde aktiviert, die beim Kompilierungsprozess im CONFIG_FORTIFY_SOURCE-Modus durchgeführt wird. Die hinzugefügte Änderung besteht darin, das Überschreiten der Grenzen von Elemente von Strukturen zu überprüfen, deren Größe bekannt ist. Dabei wird festgestellt, dass die implementierte Möglichkeit alle mit memcpy() in Verbindung stehenden Pufferüberläufe im Kernel, die in den letzten drei Jahren festgestellt wurden, blockieren könnte.
- Der zweite Teil des Codes der aktualisierten Implementierung des RDRAND Pseudo-Zufallszahlengenerators wurde hinzugefügt, der für die Funktionalität der Geräte /dev/random und /dev/urandom verantwortlich ist. Die neue Implementierung zeichnet sich durch die Vereinheitlichung der Funktionsweise von /dev/random und /dev/urandom aus, sowie durch den Schutz gegen das Auftreten von Duplikaten im Zufallszahlstrom beim Start. virtuelle Maschinen und durch den Übergang zur Verwendung der Hash-Funktion BLAKE2s anstelle von SHA1 für die Entropie-Mischoperationen. Diese Änderung hat es ermöglicht, die Sicherheit des Pseudo-Zufallszahlengenerators zu erhöhen, indem der problematische SHA1-Algorithmus eliminiert und die Überschreibung des Initialisierungsvektors des RNG ausgeschlossen wurde. Da der BLAKE2s-Algorithmus SHA1 in der Leistung übertrifft, hat sich dessen Einsatz auch positiv auf die Leistung ausgewirkt.
- Für die ARM64-Architektur wurde die Unterstützung für einen neuen Algorithmus zur Authentifizierung von Zeigern – „QARMA3“ – hinzugefügt, der schneller ist als der QARMA-Algorithmus und gleichzeitig ein angemessenen Schutzniveau aufrechterhält. Die Technologie ermöglicht die Verwendung spezialisierter ARM64-Anweisungen zur Überprüfung von Rückgabeverweisen mithilfe von digitalen Signaturen, die in den ungenutzten oberen Bits des Zeigers gespeichert sind.
- Für die ARM64-Architektur wurde die Unterstützung für den Aufbau mit aktivierter Schutzmechanismus in GCC 12 implementiert, der eine Rückgabeadressüberschreibung in Funktionen im Fall eines Pufferüberlaufs im Stack verhindert. Der Mechanismus besteht darin, die Rückgabadresse nach der Übergabe der Kontrolle an die Funktion in einem separaten „Schatten“-Stack zu speichern und diese Adresse vor dem Verlassen der Funktion abzurufen.
- Ein neues Schlüsselverwaltungssystem (keyring) – „machine“ – wurde hinzugefügt, das die Systembesitzer-Schlüssel (MOK, Machine Owner Keys) enthält, die im Shim-Bootloader unterstützt werden. Diese Schlüssel können zur Signierung von Komponenten des Kernels verwendet werden, die nach dem Start geladen werden (z.B. Kernelmodule).
- Die Unterstützung für asymmetrische Privatschlüssel für TPM wurde entfernt, die in der veralteten Version von TPM angeboten wurden, bekannte Sicherheitsprobleme aufwiesen und in der Praxis nicht verbreitet sind.
- Der Schutz von Daten vom Typ size_t vor Überläufen von Ganzzahlen wurde hinzugefügt. Im Code kommen die Handler size_mul(), size_add() und size_sub() zum Einsatz, die sicheres Multiplizieren, Addieren und Subtrahieren von Größen vom Typ size_t ermöglichen.
- Bei der Erstellung des Kernels wurden die Flags „-Warray-bounds“ und „-Wzero-length-bounds“ aktiviert, die Warnungen ausgeben, wenn der Index außerhalb des Array-Rahmens liegt oder Arrays mit Nulllängen verwendet werden.
- Im virtio-crypto-Gerät wurde die Unterstützung für die Verschlüsselung mit dem RSA-Algorithmus hinzugefügt.
- Netzwerksubsystem
- In der Implementierung der Netzwerkbrücken wurde die Unterstützung für den Portbinding-Modus (locked mode) hinzugefügt, bei dem der Benutzer den Datenverkehr nur über einen erlaubten MAC-Adresse senden kann. Zudem wurde die Möglichkeit hinzugefügt, mehrere Strukturen zur Bewertung des STP-Protokollstatus (Spanning Tree Protocol) zu verwenden. Frühere VLAN konnten nur direkt an STP (1:1) gebunden werden, wobei jedes VLAN unabhängig verwaltet wurde. In der neuen Version wurde der Parameter mst_enable hinzugefügt, durch den der Zustand der VLANs vom MST-Modul (Multiple Spanning Trees) überwacht wird und die Bindung der VLANs dem M:N-Modell entsprechen kann.
- Es wurde weiterhin an der Integration von Mitteln zur Verfolgung der Gründe für den Paketabwurf (reason-codes) im Netzwerk-Stack gearbeitet. Der Grundcode wird beim Freigeben des mit dem Paket verbundenen Speichers übermittelt und ermöglicht die Berücksichtigung von Situationen wie dem Abwurf von Paketen aufgrund von Fehlern bei der Felderfüllung im Header, das Erkennen von Spoofing durch den rp_filter, falsche Prüfziffern, Speichermangel, das Auslösen von IPSec XFRM-Regeln, falsche TCP-Folge-Nummern usw.
- Es wurde die Möglichkeit geschaffen, Netzwerkpakete aus BPF-Programmen zu übertragen, die im Benutzerraum im BPF_PROG_RUN-Modus ausgeführt werden, bei dem BPF-Programme im Kernel ausgeführt werden, aber die Ergebnisse in den Benutzerraum zurückgegeben werden. Die Pakete werden unter Verwendung des XDP-Subsystems (eXpress Data Path) übertragen. Es wird ein Live-Verarbeitungsmodus für Pakete unterstützt, in dem der XDP-Handler Netzwerkpakete in den Netzwerk-Stack oder an andere Geräte live umleiten kann. Zudem ist es möglich, softwarebasierte Traffic-Generatoren zu erstellen oder Netzwerkrahmen in den Netzwerk-Stack einzufügen.
- Für BPF-Programme, die an Netzwerk-cgroups angehängt sind, wurden Hilfsfunktionen zur expliziten Festlegung der von Systemaufrufen zurückgegebenen Werte vorgeschlagen, die es ermöglichen, umfassendere Informationen über die Gründe für die Blockierung des Systemaufrufs bereitzustellen.
- Im XDP (eXpress Data Path) wurde die Unterstützung für fragmentierte Pakete hinzugefügt, die in mehreren Puffern abgelegt werden, was es ermöglicht, Jumbo-Frames in XDP zu verarbeiten und TSO/GRO (TCP Segmentation Offload/Generic Receive Offload) für XDP_REDIRECT anzuwenden.
- Der Prozess zum Entfernen von Netzwerk-Namensräumen wurde erheblich beschleunigt, was bei einigen großen Systemen mit hohem Verkehrsaufkommen nachgefragt wurde.
- Ausrüstung
- Im Treiber amdgpu ist die FreeSync-Technologie für adaptive Synchronisation standardmäßig aktiviert, die die Aktualisierungsrate des Bildschirms anpasst und für ein flüssiges Bild ohne Bildrisse beim Spielen und Videoanschauen sorgt. Die Unterstützung für die GPU Aldebaran wurde als stabil erklärt.
- Im Treiber i915 wurde die Unterstützung für Intel Alderlake N-Chips und diskrete Grafikkarten Intel DG2-G12 (Arc Alchemist) hinzugefügt.
- Im Treiber nouveau wurde die Unterstützung für höhere Bitraten für DP/eDP-Schnittstellen und für Kabelverlängerungen lttprs (Link-Training Tunable PHY Repeaters) gewährleistet.
- Im drm (Direct Rendering Manager) wurden in den Treibern armada, exynos, gma500, hyperv, imx, ingenic, mcde, mediatek, msm, omap, rcar-du, rockchip, sprd, sti, tegra, tilcdc, xen und vc4 die Unterstützung für den Parameter nomodeset hinzugefügt, der es ermöglicht, das Umschalten der Video-Modi auf Kernel-Ebene zu deaktivieren und Hardwarebeschleunigung für Rendering zu nutzen, wobei nur die Funktionalität des Systemframebuffers erhalten bleibt.
- Die Unterstützung für ARM SoCs Qualcomm Snapdragon 625/632 (verwendet in den Smartphones LG Nexus 5X und Fairphone FP3), Samsung Exynos 850, Samsung Exynos 7885 (verwendet in Samsung Galaxy A8), Airoha (Mediatek/EcoNet) EN7523, Mediatek mt6582 (Tablet Prestigio PMT5008 3G), Microchip Lan966, Renesas RZ/G2LC, RZ/V2L, Tesla FSD, TI K3/AM62 und i.MXRTxxxx wurde hinzugefügt.
- Die Unterstützung für ARM-Geräte und Platinen von Broadcom (Raspberry Pi Zero 2 W), Qualcomm (Google Herobrine R1 Chromebook, SHIFT6mq, Samsung Galaxy Book2), Rockchip (Pine64 PineNote, Bananapi-R2-Pro, STM32 Emtrion emSBS, Samsung Galaxy Tab S, Prestigio PMT5008 3G Tablet), Allwinner (A20-Marsboard), Amlogic (Amediatek X96-AIR, CYX A95XF3-AIR, Haochuangy H96-Max, Amlogic AQ222 und OSMC Vero 4K+), Aspeed (Quanta S6Q, ASRock ROMED8HM3), Marvell MVEBU/Armada (Ctera C200 V1 und V2 NAS), Mstar (DongShanPiOne, Miyoo Mini), NXP i.MX (Protonic PRT8MM, emCON-MX8M Mini, Toradex Verdin, Gateworks GW7903) wurde hinzugefügt.
- Die Unterstützung für Audiosysteme und -codecs AMD PDM, Atmel PDMC, Awinic AW8738, i.MX TLV320AIC31xx, Intel CS35L41, ESSX8336, Mediatek MT8181, nVidia Tegra234, Qualcomm SC7280, Renesas RZ/V2L und Texas Instruments TAS585M wurde hinzugefügt. Eine erste Implementierung des Audiotreibers für den DSP-Chip Intel AVS wurde hinzugefügt. Die Unterstützung für Treiber für Intel ADL und Tegra234 wurde aktualisiert, und es wurden Änderungen vorgenommen, um die Audiounterstützung auf Geräten von Dell, HP, Lenovo, ASUS, Samsung und Clevo zu verbessern.
Gleichzeitig hat die lateinamerikanische Free Software Foundation eine vollständig freie Version des 5.18-Kernels – Linux-libre 5.18-gnu – entwickelt, der von Firmware-Elementen und Treibern befreit wurde, die nicht freie Komponenten oder Codeabschnitte enthalten, deren Verwendung vom Hersteller eingeschränkt ist. In dieser neuen Version wurden die Treiber für MIPI DBI-Panels, VPU Amphion, WiFi MediaTek MT7986 WMAC, Mediatek MT7921U (USB) und Realtek 8852a/8852c, Audioprozessoren Intel AVS und Texas Instruments TAS5805M gereinigt. Außerdem wurden die DTS-Dateien für verschiedene SoCs von Qualcomm mit Prozessoren auf Basis der AArch64-Architektur bereinigt. Der Code zur Bereinigung von Blobs in den Treibern und Subsystemen AMD GPU, MediaTek MT7915, Silicon Labs WF200+ WiFi, Mellanox Spectrum Ethernet, Realtek rtw8852c, Qualcomm Q6V5, Wolfson ADSP und MediaTek HCI UART wurde aktualisiert.
Quelle: opennet.ru
