Nach zwei Monaten der Entwicklung hat Linus Torvalds die Version 6.18 des Linux-Kernels vorgestellt. Zu den bemerkenswertesten Änderungen gehören: dm-pcache für die Festplattencaching in nichtflüchtigem Speicher (PMEM), die Entfernung von Bcachefs, der Online-Modus zur Überprüfung von XFS, die Binder-Treiber (Android IPC) und Tyr (GPU Mali) in Rust, die Möglichkeit zur Erstellung von USB-Treibern in Rust, Optimierungen beim Caching im SLUB-Speicher-Allocator, Adressierung von Namensräumen durch Dateideskriptoren, beschleunigte Swap-Nutzung, Verifizierung von BPF-Programmen durch digitale Signaturen, Intel CET-Virtualisierung in KVM, das PSP-Netzwerkprotokoll (eine Hybridlösung aus TLS und IPsec), Unterstützung für die IP-Erweiterung AccECN und Optimierungen im UDP-Stack.
Die neue Version beinhaltet 15.035 Korrekturen von 2.217 Entwicklern, die Patchgröße beträgt 45 MB (die Änderungen betreffen 13.142 Dateien, hinzugefügt wurden 601.897 Codezeilen, 355.006 Zeilen wurden gelöscht). In der vorherigen Version wurden 14.334 Korrekturen von 2.118 Entwicklern durchgeführt, die Patchgröße betrug 46 MB. Etwa 40 % aller Änderungen in 6.18 beziehen sich auf Gerätetreiber, etwa 16 % der Änderungen betreffen code-spezifische Aktualisierungen für Hardwarearchitekturen, 12 % sind mit dem Netzwerk-Stack verbunden, 5 % mit Dateisystemen und 3 % mit internen Kernsubsystemen.
Die wichtigsten Neuerungen im Kernel 6.18 (1, 2, 3):
- Festplattensubsystem, Ein-/Ausgabe und Dateisysteme
- Im Device Mapper wurde ein dm-pcache-Handler hinzugefügt, um persistenten Speicher (CXL-Speicher, der über ein DAX-Gerät adressiert wird) als zusätzlichen Hochgeschwindigkeitscache vor langsameren traditionellen Festplatten oder Flash-Speichern zu nutzen. Dm-pcache gewährleistet die Sicherung des Cache-Inhalts im Falle von Abstürzen (crash-safe) durch die Verwendung von nichtflüchtigem Speicher, Duplizieren von Metadaten sowie Überprüfung der Integrität von Daten und Metadaten durch CRC32-Prüfziffern. Derzeit wird nur das Caching im Schreibcache-Modus (write-back) unterstützt.
- Der Code des Bcachefs-Dateisystems wurde aus dem Kernel entfernt und wird nun als externes Modul verbreitet, das mit dem DKMS (Dynamic Kernel Module Support) Toolset erstellt wird. Der Bcachefs-Code kann wieder in den Kernel integriert werden, nachdem Kent Overstreet tatsächlich die Möglichkeit nachgewiesen hat, korrekt mit anderen Kernelentwicklern zu interagieren und den etablierten Entwicklungsrichtlinien zu folgen.
- Dem Systemaufruf pwritev2() wurde das Flag RWF_NOSIGNAL hinzugefügt, das das Senden des SIGPIPE-Signals beim Schreiben in unterbrochene, unbenannte Pipes oder Sockets deaktiviert.
- In Procfs wurde die Option «pidns» zum Mounten hinzugefügt, um die Prozess-ID-Namensräume (PID-Namespace) anzugeben. Zum Beispiel: «mount -t proc -o pidns=/proc/self/ns/pid proc /tmp/proc».
- In XFS wurde die Stabilität angekündigt und die Möglichkeit zur Verwendung des Tools fsck zur Überprüfung und Behebung von Problemen im Online-Modus ohne das Aushängen des Dateisystems standardmäßig aktiviert. Es wurden Systemaufrufe file_getattr und file_setattr hinzugefügt, um die Attribute spezieller Dateien (beliebige Inodes) zu ändern. In KConfig sind standardmäßig die Optionen XFS_SUPPORT_V4 (Version 4 von XFS) und XFS_SUPPORT_ASCII_CI (Modus ohne Berücksichtigung der ASCII-Zeichen Groß- oder Kleinschreibung), die als veraltet gelten, deaktiviert. Veraltete Montageoptionen wie attr2, noattr2, ikeep und noikeep wurden entfernt.
- In MD RAID wurde ein neuer Typ von Bitmap implementiert – llbitmap (lockless bitmap), der ohne Sperren arbeitet und dadurch eine höhere Leistung bietet.
- Aus der allgemeinen Struktur des „inode“ wurde die mit Verschlüsselung und Verifizierung verbundene Information (Zeiger i_crypt_info und i_verity_info) ausgegliedert. Diese Änderung reduziert den Speicherverbrauch in Dateisystemen, die keine Verschlüsselung und Verifizierung unterstützen.
- Im FUSE-Subsystem wurde die Unterstützung für den Systemaufruf copy_file_range() und das direkte Kopieren von Bereichen mit 64-Bit-Größe hinzugefügt (zuvor war nur eine 32-Bit-Größe unterstützt). Zudem wurde die Synchronisationsinitialisierung während des Mountvorgangs (FUSE_DEV_IOC_SYNC_INIT) integriert.
- In ext4 wurde die Möglichkeit eingeführt, 32-Bit-Benutzeridentifikatoren (uid) und Gruppenidentifikatoren (gid) für den Zugriff auf reservierte Blöcke zu verwenden. Es wurden ioctl-Operationen hinzugefügt, um die Parameter des Superblocks der gemounteten Dateisysteme zu setzen und zu lesen (tune2fs kann die Parameter im Superblock ändern, ohne Schreibrechte auf das Blockgerät zu benötigen). Veraltete, spezifische Einstellungen für ext3 wurden vollständig entfernt.
- In f2fs wurde die Mount-Option „lookup_mode“ hinzugefügt, um den Suchmodus auszuwählen: perf — Hash-Suche, compat — lineare Suche, auto — automatische Auswahl. Eine Änderung des Modus ist sinnvoll für Konfigurationen mit Verzeichnissen, die keine Groß- und Kleinschreibung berücksichtigen. Der aktuelle Suchmodus kann über die Datei "/sys/fs/f2fs//effective_lookup_mode" abgerufen werden. Zudem wurde die Möglichkeit zum Reservieren von Inodes eingeführt, die nur privilegierten Benutzern zugänglich sind.
- Overlayfs unterstützt jetzt einen Modus, der die Berücksichtigung der Groß- und Kleinschreibung ignoriert, aktivierbar auf der Ebene der Dateisystemschichten (die Festlegung für einzelne Verzeichnisse wird derzeit nicht unterstützt).
- BTRFS hat die Parallelisierung von Vorgängen bei hoher Lese- und niedriger Schreiblast verbessert, die Transaktionsfestschreibung wurde verkürzt, und die Synchronisierungszeiten konnten signifikant reduziert werden (von Minuten auf einige Sekunden). Zudem kann nun die Blockgröße (bs) größer als die Seitengröße (ps) verwendet werden.
- In ksmbd (dem auf Kernel-Ebene operierenden SMB-Server) wurde ein Parameter hinzugefügt, um die maximale Anzahl von Verbindungen von einem einzigen Client zu begrenzen. IP-Adressen. smbdirect, smbclient und smbserver wurden auf die Verwendung typischer Kernstrukturen umgestellt.
- In SQUASHFS wurde die Möglichkeit zur Nutzung der Optionen SEEK_DATA und SEEK_HOLE im Systemaufruf lseek() zur Suche nach Daten und Lücken in spärlichen Dateien hinzugefügt. In einigen Tests wurde eine Leistungssteigerung beim Kopieren spärlicher Dateien von bis zu 150-fach festgestellt.
- In EXFAT wurde die Unterstützung für ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL zum Lesen und Schreiben von Partitionsetiketten hinzugefügt. Es wurde die Möglichkeit geschaffen, die Mount-Optionen während einer Wieder-Mount-Operation zu ändern. Außerdem wurde das Laden von Bitmap-Dateien beschleunigt.
- In NTFS3 wurde die Unterstützung für ioctl FS_IOC_GETFSLABEL und FS_IOC_SETFSLABEL zur Abfrage und Festlegung von Partition Labels hinzugefügt.
- Speicher und Systemdienste
- Es wurde die Implementierung des Interprozesskommunikationsmechanismus Binder, der in Rust geschrieben ist, angenommen. Binder wird in Android verwendet, um die Interaktion zwischen Prozessen und den Fernaufruf von Methoden zu ermöglichen (ein Android-Prozess kann eine Methode oder Funktion in einem anderen Android-Prozess aufrufen, wobei Binder zur Identifizierung, zum Aufruf und zur Übertragung von Argumenten zwischen Prozessen verwendet wird). Der Binder-Code wurde im Rahmen der Initiative von Google zur Verbesserung der Sicherheit von Android in Rust neu geschrieben.
- In SLUB, dem Speicherallokator des Kernels, wurde eine optionale Cacheschicht 'sheaves' implementiert, die mehrere Caches verwendet, wobei jeder an einen einzelnen CPU-Kern gebunden ist. Dies ermöglicht es einem Kern, Speicheroperationen zu lokalisieren, wenn Speicher zugewiesen oder freigegeben wird. Ein solcher Cache hat die Leistung bei der Speicherzuweisung und -freigabe im Kernel verbessert, da überflüssige Synchronisierungsprimitive, die bei der Einbeziehung unterschiedlicher CPU-Kerne erforderlich sind, entfallen. In durchgeführten Tests betrug der Leistungszuwachs zwischen 6,3 % und 31 %, abhängig von der Art der Last.
- Die Möglichkeit zur Erstellung von Dateideskriptoren, die mit einem bestimmten Namensraum (Namespace) verknüpft sind, wurde hinzugefügt. Im Gegensatz zur Ansprache von Namensräumen über IDs (/proc//ns/) wird der Dateideskriptor an eine spezifische Instanz des Namensraums gebunden, was die Situation ausschließt, in der die ID neu zugewiesen und auf ein anderes Objekt zeigt. Analog zur Verwendung von pidfds erfolgt das Öffnen von Dateideskriptoren, die auf Namensräume verweisen, über die Funktionen open_by_handle_at() und name_to_handle_at().
- Ein Mechanismus namens "Swap Table" wurde implementiert, um die Leistung der Auslagerung zu verbessern. Die Beschleunigung wird durch die Verringerung des Wettbewerbs um den Zugriff auf den Auslagerungscache, eine effektivere Suche im Cache und die Verringerung der Fragmentierung erreicht. Die Backend-Architektur auf Basis der Swap Table wird zur Auslagerungscache-Kategorisierung verwendet, anstelle des XArray-Backends, und hat im Durchschnitt die Leistung um 5-20 % gesteigert. Im Test mit usemem stieg die Durchsatzrate um 17-28 %, während die Zeit für den mehrschichtigen Neuaufbau des Kernels um 1,12-3,19 % reduziert wurde. Der redis-benchmark-Test mit BGSAVE zeigte eine Erhöhung der verarbeiteten Anfragen um 6-7 %.
- Das Zswap-System wurde auf die direkte Verwendung des Speichermanagementsystems zsmalloc umgestellt, anstelle von zpool, das nicht mehr genutzt wird und jetzt aus dem Kernel entfernt wurde.
- Für die Steuerung des Verhaltens des Mikrokode-Ladeprogramms auf x86-Systemen wurde die Boot-Option "microcode=Flag-Liste" implementiert. In ihrer aktuellen Form ersetzt die neue Option "microcode.force_minrev" und ermöglicht es auch, die minimal zulässige Mikrokode-Version für den Bootvorgang festzulegen.
- Die Arbeiten zur Umstrukturierung der übermäßig aufgeblähten Struktur „page“, die zur Verwaltung von RAM-Seiten verwendet wird, haben begonnen. Der Typ 'memdesc_flags_t' wurde für Felder mit universellen Flags hinzugefügt, die nach der geplanten zukünftigen Auslagerung separater Strukturen für slab und folios aus der „page“-Struktur verwendet werden können.
- Für die Architektur nios2, die in Altera Nios II-Prozessoren (Soft-Prozessor auf FPGA-Basis) verwendet wird, wurde die Unterstützung des Systemaufrufs clone3() implementiert.
- In die Kernel-Konfiguration (KConfig) wurde das Attribut „transitional“ eingefügt, das verwendet werden kann, um Einstellungen zu kennzeichnen, die nicht in Benutzeroberflächen wie „make menuconfig“ angezeigt werden und nicht in die generierten Konfigurationsdateien aufgenommen werden. Der Hauptzweck des Attributs besteht darin, die Umbenennung von Optionen zu erleichtern und gleichzeitig die Abwärtskompatibilität zu gewährleisten.
- Die minimale Version des Compilers Clang, mit dem der Kernel erstellt werden kann, wurde auf die LLVM-Toolchain 15 angehoben. In Debian 12 und Ubuntu 22.04 ist LLVM 14 enthalten.
- Der Umbau der Änderungen aus dem Rust-for-Linux-Branch, der die Verwendung von Rust als zweite Sprache für die Entwicklung von Treibern und Kernelmodulen betrifft, wird fortgesetzt (die Unterstützung von Rust ist standardmäßig nicht aktiviert und führt nicht dazu, dass Rust zu den obligatorischen Build-Abhängigkeiten des Kernels gehört). In der neuen Version wurden atomare Speicheroperationen in Rust-Code implementiert, die Maple-Tree-Datenstruktur hinzugefügt, die Möglichkeit zur Erstellung von DebugFS-Dateien sowie Funktionen zur Manipulation von Bitmaps realisiert. Der Zugang zur API für die Treiberentwicklung wurde erweitert. Ein vollständiges Set an Abstraktionen für die Entwicklung von USB-Gerätetreibern (beispielsweise ein USB-Treiber) wurde hinzugefügt. Die Perf-Tool-Anwendung hat nun Unterstützung für Debug-Symbole, die vom rustc-Compiler generiert werden.
- Virtualisierung und Sicherheit
- Unterstützung für die kryptografische Verifizierung von geladenen BPF-Programmen durch digitale Signaturen wurde hinzugefügt. In Zukunft wird diese Funktionalität um Mechanismen zur Festlegung von Regeln für das Laden signierter BPF-Programme sowie zur Bereitstellung von verifiziertem BPF-Programmen für unprivilegierte Benutzer erweitert.
- Im KVM-Hypervisor wurde die Unterstützung für die Virtualisierung der Intel CET (Control-flow Enforcement Technology) implementiert, die zum Schutz vor Exploits eingesetzt wird, die Return-Oriented Programming (ROP) Methoden nutzen. Der Schutzmechanismus besteht darin, dass nach der Übergabe der Kontrolle an eine Funktion die Rücksprungadresse nicht nur im normalen Stack, sondern auch in einem separaten Schattenstack gespeichert wird, der nicht direkt verändert werden kann.
- Die Möglichkeit, mehr als 255 CPU in Gastsystemen zu verwenden, die unter dem Bhyve-Hypervisor auf Hosts mit FreeBSD 15 laufen, wurde hinzugefügt.
- Eine Schicht namens dibs (Direct Internal Buffer Sharing) wurde für das kontrollierte gemeinsame Nutzen von Puffern innerhalb einer isolierten Umgebung, wie z. B. einem Hypervisor oder einer Linux-Kernel-Instanz, hinzugefügt.
- Die Audit-Subsystem hat Unterstützung für den Betrieb mit mehreren gleichzeitig aktivierten LSM (Linux Security Module)-Modulen erhalten.
- Ein virtio-Treiber spi-virtio wurde hinzugefügt, um auf SPI-Geräte (Serial Peripheral Interface) zuzugreifen. virtuellen Maschinen.
- Im KVM-Hypervisor wurde die Unterstützung für den SEV-SNP CipherText Hiding-Modus hinzugefügt, der das Lesen des verschlüsselten Speichers von geschützten Gastsystemen durch nicht autorisierte CPUs blockiert.
- Der qtee-Treiber für TEE-Umgebungen (Trusted Execution Environment) von Qualcomm wurde hinzugefügt.
- Netzwerksubsystem
- Die Unterstützung für die Verschlüsselung von TCP-Verbindungen wurde eingeführt, unter Verwendung des von Google entwickelten PSP (PSP Security Protocol) zur Verschlüsselung des Datenverkehrs zwischen Rechenzentren. PSP bietet Verschlüsselung, kryptografische Integritätskontrolle und Authentifizierung der Quelle und kombiniert die Eigenschaften der Protokolle TLS und IPsec. PSP wendet Verschlüsselung auf der Ebene einzelner Netzwerkverbindungen an, nicht auf dem gesamten Kommunikationskanal. Es verwendet separate Verschlüsselungsschlüssel für verschiedene tunnellierte TCP-Verbindungen, um den Datenverkehr verschiedener Anwendungen und Handler strikt zu isolieren. Um die CPU-Belastung zu verringern, wird die Durchführung von Verschlüsselungs- und Entschlüsselungsoperationen auf die Netzwerkarten ausgelagert (Offload). Für die Datenübertragung wird das UDP-Protokoll verwendet, auf dem der Inhalt des ursprünglichen TCP-Pakets weitergeleitet wird.

- Die anfängliche Unterstützung der AccECN-Erweiterung (Accurate Explicit Congestion Notification) wurde hinzugefügt. Diese stellt eine verbesserte Version der ECN-Erweiterung dar, die es Hosts ermöglicht, im Falle von Überlastungen IP-Pakete zu kennzeichnen, anstatt sie abzulehnen. Dadurch können die Anzeichen eines frühen Staus in Kommunikationskanälen erkannt werden, ohne dass es zu Paketverlusten kommt. Das ursprüngliche ECN-Erweiterungssystem hat eine Einschränkung, die lediglich ein Signal für Überlastung in einem einzigen TCP-Übertragungszyklus (RTT - Round-Trip Time, d.h. das Senden einer Anfrage und das Empfangen einer Antwort) zulässt. AccECN beseitigt diese Einschränkung und ermöglicht es dem Empfänger, dem Sender mehrere Überlastungssignale im TCP-Paket-Header zu übermitteln. Die Algorithmen zur Überlastungssteuerung können diese Informationen verwenden, um genauer auf Überlastungen zu reagieren, ohne sofort die Paketübertragungsrate bei kleineren Überlastungen drastisch zu reduzieren.
- Im UDP-Stack wurde die Verarbeitung eingehender Pakete unter DDoS-Angriffen optimiert, die eine große Anzahl von Paketen in einem oder mehreren UDP-Sockets erzeugen. Durch die vorgenommenen Optimierungen, wie die Verringerung konkurrierender Sperren, die Optimierung der Platzierung von Datenstrukturen im Speicher und die Nutzung von Sperren unter Berücksichtigung der NUMA-Architektur (Non-Uniform Memory Access), konnte die Leistung beim Empfang von UDP-Paketen in extremen Bedingungen um 47 % und mehr gesteigert werden.
- Es wurde die Möglichkeit implementiert, die Eingabe-/Ausgabe-Caching im NFS-Server zu deaktivieren, was die Nutzung des NFS-Servers in Systemen mit geringem Speicherbedarf (z.B. in abgespeckten Cloud-Umgebungen) ermöglicht. Das Deaktivieren des Caches kann auch auf stark belasteten NFS-Servern nützlich sein, um zu vermeiden, dass durch das Freigeben von Speicher für den NFS-Cache Daten, die mit lokalen Speichern verbunden sind, aus dem Cache verdrängt werden.
- Die maximale Größe der Puffer für eingehende und ausgehende Pakete für Netzwerksockets (net.core.rmem_max und net.core.wmem_max) wurde von 2 MB auf 4 MB erhöht. Die Standardgröße (net.core.rmem_default und net.core.wmem_default = 2 MB) wurde nicht verändert.
- Ein Treiber für den Qualcomm PPE (Packet Processing Engine), der in SoC Qualcomm IPQ9574 verwendet wird, wurde hinzugefügt.
- Die Unterstützung für die Verschlüsselung von TCP-Verbindungen wurde eingeführt, unter Verwendung des von Google entwickelten PSP (PSP Security Protocol) zur Verschlüsselung des Datenverkehrs zwischen Rechenzentren. PSP bietet Verschlüsselung, kryptografische Integritätskontrolle und Authentifizierung der Quelle und kombiniert die Eigenschaften der Protokolle TLS und IPsec. PSP wendet Verschlüsselung auf der Ebene einzelner Netzwerkverbindungen an, nicht auf dem gesamten Kommunikationskanal. Es verwendet separate Verschlüsselungsschlüssel für verschiedene tunnellierte TCP-Verbindungen, um den Datenverkehr verschiedener Anwendungen und Handler strikt zu isolieren. Um die CPU-Belastung zu verringern, wird die Durchführung von Verschlüsselungs- und Entschlüsselungsoperationen auf die Netzwerkarten ausgelagert (Offload). Für die Datenübertragung wird das UDP-Protokoll verwendet, auf dem der Inhalt des ursprünglichen TCP-Pakets weitergeleitet wird.
- Ausrüstung
- In den Kernel wurde der Tyr-Treiber integriert, der in Rust geschrieben ist und die Arbeit mit ARM Mali GPUs unterstützt, die die CSF-Technologie (Command Stream Frontend) nutzen, wie z. B. Mali G310, G510 und G710. Der Treiber ist derzeit noch nicht für den regulären Gebrauch durch Endbenutzer bereit und wird als experimenteller Prototyp zur Testung von Abstraktionen für die Treiberentwicklung in Rust betrachtet.
- Die Treiber für Eingabegeräte mit HID (Human Interface Device) unterstützen jetzt Touchpads mit haptischem Feedback und Drucksensoren.
- Die Arbeiten am drm-Treiber (Direct Rendering Manager) Xe für GPUs auf Basis der Intel Xe Architektur, die in den Intel Arc Grafikkarten und der integrierten Grafik ab den Tiger Lake Prozessoren verwendet wird, wurden fortgesetzt. In der neuen Version wurde die madvise-Schnittstelle hinzugefügt, die Unterstützung für SR-IOV PF (Single Root I/O Virtualization Physical Function) aktiviert, die Unterstützung des Intel PSMI-Modus für die Hardwarevalidierung integriert, die Verarbeitung von firmwaretechnischer Fehlermeldungsinformation sichergestellt, ein SLPC Stromverbrauchsprofil implementiert sowie die Unterstützung für das Laden zusätzlicher Firmwares (z.B. für den Kühlcontroller und den Spannungsregler) während der Treibertests hinzugefügt.
- Im AMDGPU-Treiber wurde die Unterstützung für Geräte mit APU Cyan Skillfish hinzugefügt, die Unterstützung für AMD GCN 1.0 verbessert und die Kompatibilität mit dem criu-Toolkit hergestellt. Außerdem wurden im sysfs Temperaturmetriken hinzugefügt und MMIO-Remapping-Anfragen aus dem Benutzerspeicher zugelassen.
- Im i915-Treiber wurde die Unterstützung für Chips der Wildcat Lake Familie aktiviert und die Leistung mit den GPUs Jasper Lake, Elkhart Lake, Gen7 und Gen6 verbessert.
- Im Nouveau-Treiber werden standardmäßig die GSP-Firmwares von NVIDIA verwendet und die Fehlerbehandlung wurde verbessert.
- Die Integration der Nova-Treiberelemente für NVIDIA-GPUs mit GSP-Firmware wurde fortgesetzt, beginnend mit der NVIDIA GeForce RTX 2000-Serie auf Basis der Turing-Mikroarchitektur. Der Treiber ist in Rust geschrieben. In der neuen Version wurde die Unterstützung für GSP-Firmwares erweitert, die Implementierung des Makros „register!“ verbessert und Unterstützung für PCI-Geräteklassen und Hersteller-IDs hinzugefügt.
- Ein Rocket-Treiber für NPU-Beschleuniger wurde hinzugefügt, die in SoCs der Rockchip RK3588 verwendet werden.
- Ein Kernel-Parameter „boot_display“ wurde hinzugefügt, um das Ausgabegerät für die Anzeige des Bootvorgangs auf Systemen mit mehreren GPUs auszuwählen.
- Im vesadrm-Treiber wurde Unterstützung für 8-Bit-Paletten implementiert.
- Im msm-Treiber wurde Unterstützung für die Adreno 663 GPU hinzugefügt, und die Technologie zur Reduzierung des Energieverbrauchs IFPC (Inter Frame Power Collapse) wurde implementiert.
- Im panthor-Treiber wurde Unterstützung für die GPUs Mali-G710, Mali-G510, Mali-G310, Mali-Gx15, Mali-Gx20 und Mali-Gx25 hinzugefügt.
- Unterstützung für Audiosysteme wie ASoC Qualcomm Glymur und PM4125, Realtek RT1321, Shanghai FourSemi FS2104/5S, Texas Instruments PCM1754 und TAS2783A, qcs615, CS35L56 B2, tas2118, tas2x20 sowie tas5825 wurde hinzugefügt. Unterstützung für die USB-Audioschnittstellen Tascam US-144mkII und Presonus S1824c wurde ebenfalls integriert.
- Unterstützung für ARM CPU Cortex-A320/A520AE/A720AE und C1-Nano/Pro/Premium/Ultra wurde hinzugefügt.
- Unterstützung für ARM-Plattformen, SoCs und Geräte hinzugefügt: Apple M2 Pro, M2 Max und M2 Ultra, Sony Xperia SP, Samsung Galaxy S22, Samsung Galaxy S20 FE, ASUS Eee Pad Slider SL101, Lenovo ThinkBook 16, HP Omnibook X14 X1P42100, Dell Inspiron 7441 / Latitude 7455, Sige1, NanoPi Zero2, Axis Artpec8, NXP i.MX91, ROCK 2A/2F, Qualcomm Lemans Auto, Renesas RZ/T2H, RZ/N2H, RZ/T2H und RZ/N2H, Aspeed AST27xx, Meta Clemente BMC, Netcube Nagami som, Tqma91xx, Ultratronik i.MX8MP Ultra-MACH, i.MX8ULP EVK9, Buffalo WXR-1750DHP.
Gleichzeitig hat die lateinamerikanische Stiftung für freie Software eine vollständig freie Version des Kernels 6.18 - Linux-libre 6.18-gnu - erstellt, die von Elementen von Firmware und Treibern bereinigt wurde, die nicht freie Komponenten oder Codeabschnitte enthalten, deren Nutzung vom Hersteller eingeschränkt ist. Im Release 6.18 wurde der Reinigungs-Code für Blobs in den Treibern Nova-Core, Intel XE, TI PRUeth, Lantiq GSWIP, Marvell WiFi-Ex aktualisiert. Die Blob-Namen wurden in dts-Dateien (Device Tree) für ARM-Chips von Qualcomm, Mediatek und TI ARM64 bereinigt. Die Blobs in den neuen Treibern FourSemi fs2104/5s, TI TAS2783 und Qualcomm GENI wurden neutralisiert.
Quelle: opennet.ru

