Nach zwei Monaten Entwicklung hat Linus Torvalds das Release des Linux-Kernels 5.18 vorgestellt. Zu den bemerkenswertesten Änderungen gehören: Eine umfassende Bereinigung veralteter Funktionen, die Erklärung des Dateisystems Reiserfs als veraltet, die Umsetzung von Ereignissen zur Nachverfolgung von Benutzerprozessen, die Einführung von Unterstützung für den Blockierungsmechanismus gegen Intel IBT-Exploits, die Aktivierung des Pufferüberlauf-Erkennungsmodus bei Verwendung der Funktion memcpy(), die Einführung eines Mechanismus zur Verfolgung von Funktionsaufrufen fprobe, eine verbesserte Leistungsfähigkeit des CPUschedulers für AMD Zen und die Integration eines Treibers zur Verwaltung der Funktionalität von Intel CPUs (SDS). Außerdem wurden Teile von Patches zur Umstrukturierung von Header-Dateien integriert, und die Anwendung des Standards C11 wurde genehmigt.
In die neue Version wurden 16.206 Korrekturen von 2.127 Entwicklern übernommen (im vorherigen Release waren es 14.203 Korrekturen von 1.995 Entwicklern). Die Patch-Größe beträgt 108 MB (Änderungen betrafen 14.235 Dateien, es wurden 1.340.982 Codezeilen hinzugefügt und 593.836 entfernt). Etwa 44 % aller Änderungen in 5.18 betreffen Gerätetreiber, rund 16 % beziehen sich auf Updates von architekturspezifischem Code, 11 % haben mit dem Netzwerk-Stack zu tun, 3 % mit Dateisystemen und 3 % mit internen Kernsublayers.
Die wichtigsten Neuerungen im Kernel 5.18:
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Dateisystem Btrfs wurde die Unterstützung für das Durchreichen komprimierter Daten bei den Operationen send und receive hinzugefügt. Zuvor entpackte die send-Seite die komprimierten Daten, während die empfangende Seite diese vor dem Schreiben erneut komprimierte. In Kernel 5.18 erhalten Anwendungen im Benutzerspeicher, die send/receive-Befehle verwenden, die Möglichkeit, komprimierte Daten ohne erneutes Packen zu übertragen. Diese Funktionalität wurde durch neue ioctl-Operationen BTRFS_IOC_ENCODED_READ und BTRFS_IOC_ENCODED_WRITE ermöglicht, die einen direkten Zugriff auf die Informationen in den Extents erlauben.
Darüber hinaus wurde die Leistung von fsync in Btrfs verbessert. Es wurde die Möglichkeit zur Deduplikation und zur Durchführung von Reflink (Klondierung von Metadaten einer Datei mit der Erstellung eines Links zu vorhandenen Daten ohne deren tatsächliche Kopie) für den gesamten Speicher hinzugefügt, ohne auf bestimmte Mount-Punkte beschränkt zu sein.
- Im Modus für direkten Zugriff (Direct I/O) wurde die Möglichkeit geschaffen, auf verschlüsselte Dateien zuzugreifen, wenn fscrypt-Inline-Verschlüsselung verwendet wird, bei der die Verschlüsselungs- und Entschlüsselungsoperationen vom Speicherkontroller und nicht vom Kernel durchgeführt werden. Bei herkömmlicher Verschlüsselung durch den Kernel bleibt der Zugriff auf verschlüsselte Dateien mit Direct I/O wie zuvor unmöglich, da der Zugriff auf Dateien den Puffermechanismus im Kernel umgeht.
- Auf dem NFS-Server ist standardmäßig die Unterstützung für das NFSv3-Protokoll aktiviert, das nun keine separate Aktivierung mehr erfordert und bei der allgemeinen Aktivierung von NFS verfügbar ist. NFSv3 wird als die primäre und immer unterstützte Version von NFS betrachtet, und die Unterstützung für NFSv2 könnte in Zukunft eingestellt werden. Die Effizienz beim Lesen von Verzeichnisinhalten wurde erheblich gesteigert.
- Das Dateisystem ReiserFS wurde als veraltet eingestuft und wird 2025 entfernt. Die Einstufung von ReiserFS als veraltet ermöglicht eine Reduzierung des Aufwands für die Wartung allgemeiner Änderungen in Dateisystemen, die mit der Unterstützung einer neuen API für das Einbinden, Iomap und Bibliotheken verbunden sind.
- Für das Dateisystem F2FS wurde die Möglichkeit zur Zuordnung von Benutzer-IDs in gemounteten Dateisystemen implementiert, die verwendet wird, um Dateien eines bestimmten Benutzers in einem gemounteten fremden Speicherbereich mit einem anderen Benutzer im aktuellen System abzugleichen.
- Der Code zur Berechnung von Statistiken in Device-Mapper-Handlern wurde überarbeitet, was zu einer deutlichen Erhöhung der Genauigkeit der Abrechnung in Handlern wie dm-crypt geführt hat.
- Für NVMe-Geräte wurde die Unterstützung von 64-Bit-Prüfziffern zur Gewährleistung der Integrität implementiert.
- Für das Dateisystem exFAT wurde eine neue Mount-Option "keep_last_dots" eingeführt, die das Löschen von Punkten am Ende des Dateinamens verhindert (unter Windows werden Punkte am Ende des Namens standardmäßig entfernt).
- In EXT4 wurde die Leistung des fast_commit-Modus verbessert und die Skalierbarkeit erhöht. Die Einhängeoption „mb_optimize_scan“, die die Leistung bei starker Fragmentierung des Dateisystems steigert, wurde angepasst, um mit Dateien mit Extents zu arbeiten.
- Die Unterstützung für Schreibströme (write streams) im Subsystem, das für die Funktionalität von Blockgeräten sorgt, wurde eingestellt. Diese Funktion wurde ursprünglich für SSDs angeboten, fand jedoch keine Verbreitung, und Geräte mit dieser Unterstützung sind mittlerweile nicht mehr im Umlauf. Es ist unwahrscheinlich, dass sie in Zukunft verfügbar sein werden.
- Im Dateisystem Btrfs wurde die Unterstützung für das Durchreichen komprimierter Daten bei den Operationen send und receive hinzugefügt. Zuvor entpackte die send-Seite die komprimierten Daten, während die empfangende Seite diese vor dem Schreiben erneut komprimierte. In Kernel 5.18 erhalten Anwendungen im Benutzerspeicher, die send/receive-Befehle verwenden, die Möglichkeit, komprimierte Daten ohne erneutes Packen zu übertragen. Diese Funktionalität wurde durch neue ioctl-Operationen BTRFS_IOC_ENCODED_READ und BTRFS_IOC_ENCODED_WRITE ermöglicht, die einen direkten Zugriff auf die Informationen in den Extents erlauben.
- Speicher und Systemdienste
- Die Integration eines Patchsets hat begonnen, das die benötigte Zeit zum Neuaufbau des Kernels erheblich verkürzt, indem die Hierarchie der Header-Dateien umstrukturiert und die Anzahl der gegenseitigen Abhängigkeiten reduziert wird. In den Kernel 5.18 wurden Patches aufgenommen, die die Struktur der Header-Dateien des Prozessplaners (kernel/sched) optimieren. Im Vergleich zur vorherigen Version verringerte sich die Prozessorzeit bei der Kompilierung des Codes kernel/sched/ um 61 %, und die tatsächliche Zeit reduzierte sich um 3,9 % (von 2,95 auf 2,84 Sekunden).
- Im Kernel-Code ist die Verwendung des C11-Standards erlaubt, der 2011 veröffentlicht wurde. Zuvor musste der zum Kernel hinzugefügte Code der ANSI C-Spezifikation (C89) entsprechen, die bereits 1989 formuliert 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 C17-Standard zu verwenden, jedoch hätte das eine Erhöhung der minimal unterstützten GCC-Version zur Folge gehabt; die Unterstützung von C11 entspricht jedoch den aktuellen Anforderungen an die GCC-Version (5.1).
- Die Leistung der Aufgabenplanung auf AMD-Prozessoren mit Zen-Mikroarchitektur wurde verbessert, bei denen jeder Knoten mit lokalen Speicherkanälen mehrere Last Level Caches (LLC, Last Level Cache) bereitstellt. In der neuen Version wurde das Ungleichgewicht des LLC zwischen NUMA-Knoten beseitigt, was bei bestimmten Arten von Belastungen zu einem signifikanten Leistungssteigerung führte.
- Die Möglichkeiten zur Nachverfolgung von Anwendungen im Benutzerspeicher wurden erweitert. In der neuen Kernel-Version wurde die Möglichkeit hinzugefügt, dass Benutzerprozesse Nachverfolgungsereignisse (User events) erstellen und Daten in einen Nachverfolgungsbuffer aufzeichnen können. Diese Daten können über gängige Kernel-Nachverfolgungswerkzeuge wie ftrace und perf angezeigt werden. Die Nachverfolgungsereignisse aus dem Benutzerspeicher sind von den Kernel-Nachverfolgungsereignissen isoliert. Der Zustand der Ereignisse kann über die Datei /sys/kernel/debug/tracing/user_events_status eingesehen werden, während die Registrierung eines Ereignisses und die Aufzeichnung von Daten über die Datei /sys/kernel/debug/tracing/user_events_data erfolgt.
- Ein Mechanismus zur Nachverfolgung (Probe) von Funktionsaufrufen wurde hinzugefügt — fprobe. Die fprobe-API basiert auf ftrace, ist jedoch ausschließlich auf die Möglichkeit der Anbringung von Callback-Handlern an die Eintrittspunkte und das Ende von Funktionen beschränkt. Im Gegensatz zu kprobes und kretprobes ermöglicht der neue Mechanismus die Verwendung eines Handlers für mehrere Funktionen gleichzeitig.
- Die Unterstützung für alte ARM-Prozessoren (ARMv4 und ARMv5), die nicht mit einem Speicherverwaltungseinheit (MMU) ausgestattet sind, wurde eingestellt. Die Unterstützung für ARMv7-M Systeme ohne MMU bleibt erhalten.
- Die Unterstützung der RISC-ähnlichen Architektur NDS32, die in den Prozessoren von Andes Technologies verwendet wurde, wurde eingestellt. Der Code wurde aufgrund fehlender Pflege und der geringen Nachfrage nach Unterstützung für NDS32 im Hauptkernel von Linux entfernt (die verbleibenden Benutzer verwenden spezialisierte Kernels von Hardwareherstellern).
- Standardmäßig ist die Kernelkonstruktion mit Unterstützung für das a.out-Executable-Format für die Architekturen alpha und m68k, in denen dieses Format weiterhin verwendet wird, deaktiviert. Wahrscheinlich wird die Unterstützung für das veraltete a.out-Format bald vollständig aus dem Kernel entfernt. Pläne zur Abschaffung des a.out-Formats 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 Menge an Systemaufrufen bereitstellt, die im Benutzerspeicher ohne Kontexwechsel verfügbar sind. Die Unterstützung von vDSO ermöglicht den Betrieb mit einem nicht ausführbaren Stack.
- Die Unterstützung des Intel HFI-Mechanismus (Hardware Feedback Interface) wurde hinzugefügt, der es der Hardware ermöglicht, dem Kernel Informationen über die aktuelle Leistung und Energieeffizienz jedes CPU zu übermitteln.
- Ein Treiber für den Intel SDSi (Software-Defined Silicon) Mechanismus wurde hinzugefügt, der die Aktivierung zusätzlicher Funktionen im Prozessor ermöglicht (zum Beispiel spezialisierte Instruktionen und zusätzlichen Cache). Die Idee dahinter ist, dass Chips zu einem niedrigeren Preis mit deaktivierten erweiterten Funktionen geliefert werden können, die später „freigeschaltet“ und aktiviert werden können, ohne den Chip hardwareseitig austauschen zu müssen.
- Der Treiber amd_hsmp wurde hinzugefügt, um den AMD HSMP (Host System Management Port) zu unterstützen, der Zugriff auf Funktionen zur Prozessormanagement über eine Reihe spezieller Register ermöglicht, die in den Serverprozessoren AMD EPYC ab der Generation Fam19h eingeführt wurden. Über HSMP können zum Beispiel Daten zur Energieverbrauch und Temperatur abgerufen, Frequenzgrenzen festgelegt, verschiedene Leistungssteigerungsmodi aktiviert und Speicherparameter verwaltet werden.
- Im Interface für asynchronen Input/Output wird io_uring mit der Option IORING_SETUP_SUBMIT_ALL zur Registrierung einer Reihe von Dateideskriptoren im Ringpuffer implementiert, sowie die Operation IORING_OP_MSG_RING, die es ermöglicht, ein Signal von einem Ringpuffer zu einem anderen Ringpuffer zu senden.
- Im DAMOS-Mechanismus (Data Access Monitoring-based Operation Schemes), der das Freigeben von Speicher unter Berücksichtigung der Zugriffshäufigkeit ermöglicht, wurden die Kontrollmöglichkeiten für Speicheroperationen aus dem Benutzerspeicher erweitert.
- Die dritte Serie von Patches zur Implementierung des Konzepts der Speicherfolianten (page folios) wurde integriert, die an zusammengesetzte Speicherseiten (compound pages) erinnern, sich jedoch durch eine verbesserte Semantik und eine klarere Organisation der Funktionsweise unterscheiden. Der Einsatz von Folianten ermöglicht eine beschleunigte Speicherverwaltung in bestimmten Teilsystemen des Kernels. In den vorgeschlagenen Patches wurde die interne Funktion zur Speicherverwaltung, einschließlich Varianten der Funktion get_user_pages(), auf Folianten umgestellt. Außerdem wird die Unterstützung für die Erstellung großer Folianten im Code für vorzeitiges Datenlesen bereitgestellt.
- Im System für Assemblierung gibt es jetzt Unterstützung für die Umgebungsvariablen USERCFLAGS und USERLDFLAGS, mit denen zusätzliche Flags an den Compiler und den Linker übergeben werden können.
- Im eBPF-Subsystem wurde im BTF (BPF Type Format), das Informationen zur Überprüfung von Typen im BPF-Pseudocode bereitstellt, die Möglichkeit implementiert, Anmerkungen für Variablen hinzuzufügen, die auf Speicherbereiche im Benutzerspeicher verweisen. Diese Anmerkungen helfen dem BPF-Code-Verifizierungssystem, Speicherzugriffe präziser zu identifizieren und zu überprüfen.
- Eine neue Speicherzuteilungsroutine wurde hinzugefügt, um die geladenen BPF-Programme zu speichern, was eine effizientere Nutzung des Speichers bei der Einbindung großer Mengen BPF-Programme ermöglicht.
- Im Systemaufruf madvise() wurde das Flag MADV_DONTNEED_LOCKED hinzugefügt, das die bereits vorhandene Flagge 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 ist die Verwendung des Flags MADV_DONTNEED_LOCKED für im RAM fixierte Seiten erlaubt, die bei einem Aufruf von madvise ohne Änderung ihres fixierten Status verdrängt werden und im Falle eines späteren Zugriffs auf den Block und der Generierung eines „Page Fault“ mit der Bindung zurückgegeben werden. Darüber hinaus wurde eine Änderung hinzugefügt, die die Verwendung des Flags MADV_DONTNEED mit großen Speicherseiten in HugeTLB ermöglicht.
- Virtualisierung und Sicherheit
- Für die x86-Architektur wurde die Unterstützung für den Intel IBT (Indirect Branch Tracking) Mechanismus hinzugefügt, der Techniken zur Erstellung von Exploits, die Rücksprung-orientierte Programmierung (ROP, Return-Oriented Programming) verwenden, erschwert. Bei dieser Technik wird der Exploit in Form einer Kette von Aufrufen bestehender Stücke von Maschineninstruktionen, die im Speicher vorhanden sind, erstellt, wobei die Kette mit einer Rückgabeinstruktion endet (in der Regel handelt es sich um Funktionsabschlüsse). Das Ziel des implementierten Schutzmechanismus besteht darin, indirekte Übergänge in den Funktionskörper zu blockieren, indem zu Beginn der Funktion eine spezielle ENDBR-Instruktion hinzugefügt wird, und das Ausführen über einen indirekten Übergang nur erlaubt ist, wenn auf diese Instruktion verwiesen wird (ein indirekter Aufruf durch JMP oder CALL muss immer auf die ENDBR-Instruktion zeigen, die am Anfang der Funktion platziert ist).
- Eine strengere Überprüfung der Grenzen von Speichern in den Funktionen memcpy(), memmove() und memset() wurde aktiviert, die während der Kompilierung im CONFIG_FORTIFY_SOURCE-Modus durchgeführt wird. Die hinzugefügte Änderung besteht darin, dass Überprüfungen auf das Überschreiten der Grenzen von Strukturelementen erfolgen, deren Größe bekannt ist. Es wird angemerkt, dass die implementierte Funktionalität alle mit memcpy() verbundenen Pufferüberläufe im Kernel blockieren könnte, die in den letzten drei Jahren festgestellt wurden.
- Der zweite Teil des Codes der aktualisierten Implementierung des Pseudozufallszahlengenerators RDRAND 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 sowie durch den Schutz vor der Entstehung von Duplikaten im Zufallsdatenstrom beim Start aus. virtuellen Maschinen Durch den Wechsel zur Verwendung der BLAKE2s-Hashfunktion anstelle von SHA1 für die Entropiemischoperationen wurde die Sicherheit des Pseudozufallszahlengenerators verbessert. Dadurch werden Probleme mit dem SHA1-Algorithmus beseitigt und das Überschreiben des RNG-Initialisierungsvektors ausgeschlossen. Da BLAKE2s in Bezug auf die Leistung über SHA1 hinausgeht, wirkt sich dessen Anwendung auch positiv auf die Gesamtleistung aus.
- Für die ARM64-Architektur wurde die Unterstützung des neuen Zeiger-Authentifizierungsalgorithmus ‚QARMA3‘ integriert, der schneller ist als der QARMA-Algorithmus und dennoch ein angemessenes Schutzniveau bietet. Diese Technologie nutzt spezialisierte ARM64-Anweisungen zur Überprüfung von Rückgabeadressen mithilfe digitaler Signaturen, die in den nicht verwendeten oberen Bits des Zeigers gespeichert sind.
- Für die ARM64-Architektur wurde die Unterstützung der Kompilierung mit der Einbeziehung des Schutzmodus gegen Rückgabeverzeichnisüberschreibungen in GCC 12 implementiert, falls ein Pufferüberlauf im Stack auftritt. Der Schutz besteht darin, die Rückgabadresse beim Übergang zur Funktion in einem separaten ‚Shadow‘-Stack zu speichern und diese Adresse vor dem Verlassen der Funktion abzurufen.
- Ein neues Schlüsselgeschäft (Keyring) namens „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 verwendet werden, um digitale Signaturen für Kernelkomponenten zu sichern, die nach dem ursprünglichen Startvorgang geladen werden (z. B. Kernelmodule).
- Die Unterstützung für asymmetrische private Schlüssel für TPM, die in der veralteten Version von TPM angeboten wurden, bekannte Sicherheitsprobleme aufweisen und in der Praxis nicht weit verbreitet sind, wurde entfernt.
- Datenschutz mit der Größe size_t wurde vor Überläufen von Ganzzahlen geschützt. Im Code werden die Handler size_mul(), size_add() und size_sub() verwendet, die das sichere Multiplizieren, Addieren und Subtrahieren von Größen des Typs size_t ermöglichen.
- Bei der Kernel-Kompilierung wurden die Flags „-Warray-bounds“ und „-Wzero-length-bounds“ eingeschlossen, die Warnungen ausgeben, wenn der Index über das Array hinausgeht und wenn Arrays mit einer Länge von null verwendet werden.
- Im Virtio-Krypto-Gerät wurde die Unterstützung für die Verschlüsselung unter Verwendung des RSA-Algorithmus hinzugefügt.
- Netzwerksubsystem
- In der Implementierung von Netzbrücken wurde die Unterstützung für den Port-Lock-Modus hinzugefügt, bei dem der Benutzer den Verkehr nur über den erlaubten MAC-Adresse senden kann. Zudem wurde die Möglichkeit geschaffen, mehrere Strukturen zur Beurteilung des Status des Spanning Tree Protocol (STP) zu verwenden. Zuvor konnte für VLAN nur eine direkte Bindung an STP (1:1) erfolgen, bei der jedes VLAN unabhängig verwaltet wurde. In der neuen Version wurde die Option mst_enable hinzugefügt, bei Aktivierung wird der Zustand der VLANs vom MST-Modul (Multiple Spanning Trees) gesteuert, sodass die Bindung der VLANs dem M:N-Modell entsprechen kann.
- Die Integration von Mitteln zur Überwachung der Gründe für das Paket-Discarding (Reason-Codes) wird im Netzwerk-Stack fortgesetzt. Der Grundcode wird beim Freigeben des mit dem Paket verbundenen Speichers übertragen und ermöglicht die Berücksichtigung von Situationen wie Paketdiscarding aufgrund von Header-Feldfüllfehlern, der Erkennung von Spoofing durch den rp_filter, falsche Prüfziffern, Speicherengpässe, Auslösung 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, wobei die BPF-Programme im Kernel laufen, aber das Ergebnis in den Benutzerraum zurückgegeben wird. Die Pakete werden über das XDP (eXpress Data Path)-Subsystem übertragen. Ein Live-Modus zur Verarbeitung von Paketen wird unterstützt, in dem der XDP-Handler Netzwerkpakete in den Netzwerk-Stack oder auf andere Geräte weiterleiten kann. Darüber hinaus ist es möglich, softwarebasierte Traffic-Generatoren zu erstellen oder Netzwerkrahmen in den Netzwerk-Stack einzufügen.
- Für an Netzwerkgroups angehängte BPF-Programme wurden Hilfsfunktionen vorgeschlagen, um den von Systemaufrufen zurückgegebenen Wert explizit festzulegen, was eine umfassendere Information über die Gründe für die Blockierung des Systemaufrufs ermöglicht.
- Das XDP (eXpress Data Path)-Subsystem hat die Unterstützung für fragmentierte Pakete, die in mehreren Puffern abgelegt sind, hinzugefügt, 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 in einigen großen Systemen mit hohem Verkehrsaufkommen gefordert wurde.
- Ausrüstung
- Im amdgpu-Treiber ist standardmäßig die Technologie für adaptive Synchronisation FreeSync aktiviert, die es ermöglicht, die Bildwiederholfrequenz anzupassen und damit ein flüssiges Erlebnis ohne Bildrisse während Spielen und beim Ansehen von Videos zu gewährleisten. Die Unterstützung für die GPU Aldebaran wurde als stabil angekündigt.
- Im i915-Treiber wurde die Unterstützung für Intel Alderlake N Chips und die diskreten Grafikkarten Intel DG2-G12 (Arc Alchemist) hinzugefügt.
- Im nouveau-Treiber wurde die Unterstützung für höhere Bitraten bei den DP/eDP-Schnittstellen sowie die Unterstützung für Kabelverlängerungen lttprs (Link-Training Tunable PHY Repeaters) sichergestellt.
- Im drm (Direct Rendering Manager) System 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 die Option nomodeset hinzugefügt, die es ermöglicht, das Umschalten der Video-Modi auf Kernel-Ebene sowie die Maßnahmen zur Hardware-beschleunigten Darstellung zu deaktivieren und lediglich die Funktionalität des systemeigenen Framebuffers beizubehalten.
- Unterstützung für ARM SoCs Qualcomm Snapdragon 625/632 (verwendet in Smartphones wie dem LG Nexus 5X und dem Fairphone FP3), Samsung Exynos 850, Samsung Exynos 7885 (verwendet im 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 hinzugefügt.
- Unterstützung für ARM-Geräte und -Plattformen 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) hinzugefügt.
- Unterstützung für Audiosysteme und -codecs hinzugefügt: AMD PDM, Atmel PDMC, Awinic AW8738, i.MX TLV320AIC31xx, Intel CS35L41, ESSX8336, Mediatek MT8181, nVidia Tegra234, Qualcomm SC7280, Renesas RZ/V2L, Texas Instruments TAS585M. Eine erste Implementierung des Audiotreibers für den DSP-Chip Intel AVS wurde hinzugefügt. Die Unterstützung der Treiber für Intel ADL und Tegra234 wurde aktualisiert, und es wurden Änderungen zur Verbesserung der Audiounterstützung auf Geräten von Dell, HP, Lenovo, ASUS, Samsung und Clevo vorgenommen.
Gleichzeitig hat die lateinamerikanische Free Software Foundation eine vollständig freie Kernel-Variante 5.18 – Linux-libre 5.18-gnu entwickelt, die von Elementen der Firmware und Treibern befreit wurde, die nicht freie Komponenten oder Codefragmente enthalten, deren Verwendung durch den Hersteller eingeschränkt ist. In der neuen Version wurden die Treiber für MIPI DBI Panels, VPU Amphion, WiFi MediaTek MT7986 WMAC, Mediatek MT7921U (USB) und Realtek 8852a/8852c sowie die Audioprozessoren Intel AVS und Texas Instruments TAS5805M gereinigt. Auch die DTS-Dateien für verschiedene SoCs von Qualcomm mit Prozessoren auf Basis der Architektur AArch64 wurden gereinigt. 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
