Mit der Version 6.4 startet der Linux-Kernel in die nächste Runde. Unter anderem haben die Entwickler den Driver Core auf künftige Rust-Module vorbereitet, Support für RPC-with-TLS für den NFS-Server eingebaut und an der Unterstützung für BIG TCP gefeilt.
Bei den Entwicklern von Dateisystemen drehte sich im Entwicklungszyklus für Linux 6.4 vieles um eine bessere Performance. Mike Snitzer kümmert sich zum Beispiel als Maintainer um den Device Mapper, der logische Strukturen wie etwa Partitionen auf physische Blockgeräte abbildet. Der von Snitzer ergänzte Code verbessert vor allem den Umgang mit konkurrierenden Ein- und Ausgabeoperationen, um diese im Endeffekt zu beschleunigen [1]. Für Ext4 verweist Ted Ts’o vor allem auf Cleanups und hebt Performance-Verbesserungen für Workloads hervor, die viele Schreibvorgänge mit zufälligen Speicherallokationen benötigen. Auch Btrfs arbeitet nun an einigen Stellen wieder schneller: Laut dem Maintainer David Sterba profitiert das Dateisystem von Änderungen beim Verzeichnis-Logging während einer Transaktion. Unter anderem sollen konkurrierende Zugriffe auf Subvolumes dank der Optimierungen schneller ablaufen.
Doch nicht alles dient der Performance-Steigerung. Das Flash-Dateisystem F2F unterstützt inzwischen auch nicht quadratische Zonengrößen. Für XFS haben die Entwickler um Dave Chinner auf einer ausführlichen Dokumentationsseite [2] alles Wichtige für das geplante Online-Repair-Feature dokumentiert. Admins benutzen es mithilfe eines neuen Reparaturwerkzeugs namens »xfs_scrub«, das die bisherigen Helfer »xfs_check« und »xfs_repair« erweitert und ergänzt. Für alle, die XFS intensiv einsetzen, könnte die Doku eine interessante Lektüre sein.
Für das Netzwerk-Dateisystem NFS warten diverse Neuerungen, beim NFS-Server (»nfsd«) beispielsweise Support für RPC-with-TLS. Die in RFC 9289 [3] vorgeschlagene Spezifikation für verschlüsselte Remote Procedure Calls soll sich einfach ausrollen lassen und ermöglicht eine vertrauliche Datenübertragung mit wenig Overhead sowie einen Peer-basierten Authentifizierungsmechanismus. Das Feature soll gegen unsichere Legacy-Authentifizierungsmechanismen schützen und NFS Kerberos ergänzen. Weil sich kTLS, die TLS-Implementierung im Linux-Kernel, komplett um das Verschlüsseln der Daten kümmert, lässt sich der Prozess in Software abbilden oder an smarte Netzwerkkarten delegieren [4], schreibt Maintainer Chuck Lever. Er sollte es wissen: Zusammen mit dem Kernel-Entwickler Trond Myklebust hat er den oben erwähnten Request for Comment verfasst.
Ein interessantes Update gibt es auch für NFS-Clients: Die dürfen neuerdings Folios verwenden. Das ermöglicht es ihnen, mehr Verzeichniseinträge aufzunehmen, und reduziert den Overhead beim Verwalten von Speicherseiten.
Freie Leitung
Eine kleine Flut an Neuerungen gibt es im Netzwerkbereich. Sie stammen vom Entwickler Paolo Abeni und betreffen unter anderem Zugriffe auf den Kopfbereich gruppierter Speicherseiten (Compound Pages). Die Zahl dieser Zugriffe hat Abeni reduziert, um die Zero-Copy-Datenübertragungen effizienter zu gestalten. Die ebenfalls vollzogenen Verbesserungen für RPS (Receive Packet Steering) und RFS (Receive Flow Steering) sollen überflüssige Ausführungen des »NET_RX_SOFTIRQ« verhindern. Beide Mechanismen verteilen empfangene Netzwerkpakete auf CPUs. Der Soft-Interrupt hilft dabei, indem er sich um die eingehenden Netzwerkpakete kümmert: Je weniger Unterbrechungen in diesem Prozess auftreten, desto effizienter fließen die Daten.
BPF ist ein weiteres aktuelles Thema aus dem Netzwerkbereich. Spezielle dynamische Pointer erlauben es BPF-Programmen, ergonomischer über Daten zu iterieren, auch über solche unterschiedlicher Größe. Die BPF-Map-Typen geben präziser über den Speichereinsatz Auskunft. BPF-Programme erkennen nun zudem während des Ladens im Light Skeleton (einem eBPF-basierten Loader), ob bestimmte Kernel-Funktionen existieren. Daneben landet erster Code im Kernel, der es erlaubt, BPF-Programme mit Netfilter-Hooks wie »prerouting« oder »forward« zu verbinden.
Wo wir gerade über Netfilter sprechen: Für »nf_tables« gibt es jetzt »brouting«-Support. Das ermöglicht, ein Paket zwangsweise zu routen, statt es zu bridgen. Weiterhin kommt der Bridge-Netfilter besser mit IPv6-Jumbo-Paketen klar, was wichtig für den BIG-TCP-Support ist.
Laut Protokoll
Auf Protokollebene gibt es viele Neuerungen. Im Subsystem für das Netzwerkprotokoll SCTP (Stream Control Transmission Protocol) findet sich neuerdings Unterstützung für die Fair-Capacity- und Weighted-Fair-Queueing-Scheduler. Außerdem wurde für IPv6 das Routing im Lookup-Bereich optimiert, IPv4 darf seit Kernel 6.4 ein »protocol«-Tag verwenden. Bridges können dank einer Protokollanpassung neuerdings auf Port- und VLAN-Ebene bestimmte Neighbor-Anfragen zu unterdrücken. Solche Requests dienen gewöhnlich dazu, Informationen über andere Netzwerkteilnehmer zu erhalten. Das vergrößere die Widerstandsfähigkeit gegenüber ausfallenden Knoten, heißt es in der Commit-Meldung [5].
Auch das WLAN-Protokoll erhielt Updates. Wie Bridges wollen auch WLAN-Access-Points nicht immer jedes Detail über ihre Nachbarn wissen, insbesondere in sehr verstopften WLAN-Netzwerken. Ein reduzierter Neighbor-Report sorgt dafür, dass weniger Informationen über die WLAN-Netze wandern, und steigert so die Performance. Daneben erhalten »mac80211«-Treiber über ihr Protokoll Support für Transmission Control Offloading (TCO) und beschleunigen die Datenübertragung in Mesh-Netzwerken über »fast-xmit« und »fast-rx«. Nicht zuletzt haben die Entwickler im WLAN-Protokoll den Mesh-Support für WLAN 7 aktiviert.
Mehr und bessere Treiber
Apple-Nutzer profitieren diesmal von neuen Treibern: Linux 6.4 unterstützt die WLAN-Karten in den Apple M1 Pro und Max. Außerdem landeten auch Treiber für eine ganze Reihe weiterer Realtek-Chipsätze im Kernel. Nicht zuletzt steuerten Entwickler neue Treiber im Ethernet-Bereich bei, zum Beispiel für AMD/Pensando und das JH7110-SoC von StarFive.
Optimierungen gibt es für Intels »iwlwifi«-Treiber. Der erhält Unterstützung für WLAN 7 (EHT) sowie einen Multi-Link- und einen Sniffer-Modus. Ersterer erlaubt es, WLAN parallel über mehrere Verbindungen zu verwenden, Letzterer ermöglicht das Mitlesen von Netzwerkpaketen etwa zur Netzwerküberwachung. Einige der »iwlwifi«-Geräte erhalten zudem Hardware-Timestamping-Support. Auf Drahtlosgeräte von Mediatek, die den Treiber »mt76« nutzen, wartet im neuen Kernel WLAN-7- und P2P-Support.
Bei den Treibern für Eingabegeräte spendiert Daniel J. Ogorchock den Nintendo-Controllern einen besseren Bluetooth-Support, was Verbindungsabbrüche drastisch reduzieren soll [6]. Zudem bringt Linux 6.4 generischen Support für alle Kye-Tablets mit, was insbesondere künstlerisch begabte Linux-Anwender erfreuen dürfte.
Plattform und Interna
Die Updates für die x86-Plattform umfassen Neuerungen für den »apple-gmux«-Treiber, der nun auch das schon etwas betagte Apple-T2-SoC (Abbildung 1) unterstützt. Über das neu implementierte TPMI (Topology Aware Register and PM Capsule Interface) greifen Betriebssysteme und Firmware künftig auf Intel Speed Select Technology (ISST) zu. Das dazugehörige Tool erlaubt es, die Leistung bestimmter Xeon-Prozessoren zu profilieren und zu steuern [7].

Abbildung 1: Plattform-Support gibt es jetzt auch für das schon etwas angestaubte T2-SoC von Apple. Quelle: Henriok, CC0
Im ARM-SoC-Bereich sieht Arnd Bergmann die größten Neuerungen für Qualcomms Snapdragon-Plattform. Die integrierte Kryptografie-Engine bringt ein neues Device-Tree-Binding sowie einen entsprechenden Treiber mit. Zudem unterstützt eine Reihe von Treibern zusätzliche Snapdragon-Varianten. Die Oxford-Semiconductor-OX810/OX820-Plattform (Oxnas) verliert hingegen den Linux-Support, weil der verbaute ARM11-MPcore in bestimmten Anwendungsszenarien immer wieder Probleme bereitete.
Die OpenRISC-Plattform erlaubt es jetzt, auf die im Userspace angesiedelten FPU-Zustände zuzugreifen, sie zu speichern und wiederherzustellen. Damit kann auch die Libc die FPU auf OpenRISC verwenden. Auch über die RISC-V-Plattform gibt es Neues zu berichten: Der lineare Speicherbereich lässt sich neuerdings auf Huge Pages mappen. Es gibt zudem die Option, “verschiebbare” Kernel zu bauen: Die dürfen Anwender von anderen physikalischen Adressen aus laden und ausführen, als beim Kompilieren festgelegt wurde.
Updates erhielt auch den Driver-Core-Bereich. Er kümmert sich nicht nur darum, die Gerätetreiber in die Kernel-Infrastruktur zu laden, sondern bietet auch standardisierte Schnittstellen für die Kommunikation mit den Treibern an. Aktuell gibt es hier größere Umbauarbeiten, weil die Entwickler um Greg Kroah-Hartman »struct bus« und »struct class« in den Read-only-Speicher verfrachten möchten. Der Schritt soll künftige Rust-Interaktionen mit dem Driver Core beweisbar korrekt machen und den Bussen und Klassen im Kernel bessere Lifetime-Regeln anbieten [8].
Im Async-Bereich findet die »io_wq«-Zuordnung (das Kürzel steht für I/O Workqueue) nicht mehr per Node statt, sondern nur noch pro Ring. Aufgaben, die sich asynchron erledigen lassen, übergibt der Kernel an die Warteschlange. Der Umbau vereinfacht nicht nur die Code-Struktur, sondern auch das Verwalten der I/O Workqueue. In dem Zug haben die Entwickler das Accounting auch gleich in den »io_wq«-Bereich verlagert und die Struct »io_wqe« entfernt. Damit kümmert sich die I/O-Warteschlange nun auch um das Tracking und das Aufzeichnen von statistischen Informationen und Metriken zu den I/O-Operationen. Außerdem ist KASAN, der Kernel Address Sanitizer, nun für die internen »io_uring«-Caches aktiviert. Das waren noch längst nicht alle Neuerungen dieses Bereichs, weitere finden sich im Kernel-Git [9].
Zur Sicherheit
Eric Biggers kündigt für das Crypto-Subsystem einige Cleanups an sowie Vorbereitungen auf einen künftigen Verschlüsselungs-Support für CephFS. Herbert Xu hingegen hat Neuigkeiten zur Crypto-API [10]: Die Usage-Statistiken geben nun Fehlermeldungen zu sämtlichen Events zurück statt nur zu einer unvollständigen Auswahl. Daneben weist Xu auf vorbereitende Änderungen für einen Einsatz der x86-Architektur für Position Independent Executables (PIE) hin. Es gibt Support für den True Random Number Generator (TRNG) von HiSilicon-Set-Top-Boxen. Das CAAM (Cryptographic Acceleration and Assurance Module) unterstützt neuerdings die OP-TEE-Firmware. So kann sie auf CAAM zurückgreifen, um bestimmte kryptografische Operationen in dieses Modul auszulagern.
SE-Linux gibt die »selinux_state«-Zeiger nicht mehr als Funktionsargumente weiter, weil das die Performance signifikant beeinträchtigte und beim aktuellen Stand des Codes nicht unbedingt nötig ist. Außerdem hat man nach Jahren der Zusammenarbeit mit Userspace- und Distributionsentwicklern die 2020 als veraltet gekennzeichnete Laufzeitdeaktivierungsfunktionalität entfernt.
Die Ankündigung des neuen Kernels finden Sie in der Linux Kernel Mailing List [11], das gute Stück selbst liegt wie gewohnt auf Kernel.org [12].
Infos
- Device-Mapper-Aktualisierung: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=48dc810012a6b4f4ba94073d6b7edb4f76edeb72
- XFS Online-Repair: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/diff/Documentation/filesystems/xfs-online-fsck-design.rst?id=56c455b38dba47ae9cb48d71b2a106d769d1a694
- RFC 9289: https://datatracker.ietf.org/doc/rfc9289/
- NFS-Server: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4e1c80ae5cf458792bec9815ee77bc3851046fb8
- Neuerungen im Netzwerkbereich: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6e98b09da931a00bf4e0477d0fa52748bf28fcce
- HID-Verbesserungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=34da76dca4673ab1819830b4924bb5b436325b26
- Neues für die x86-Plattform: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=088e0c188513b58a0056a488cf5b7df094a8a48a
- Core-Treiber mit Rust-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=556eb8b79190151506187bf0b16dda423c34d9a8
- Workqueue-Arbeiten für den Async-Bereich: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5b9a7bb72fddbc5247f56ede55d485fab7abdf92
- Herbert Xu zu den Crypto-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=733f7e9c18c5e377025c1bfdce6bc9a7d55649be
- Linus kündigt Kernel 6.4 an: https://lkml.org/lkml/2023/6/25/453
- Kernel.org: https://www.kernel.org






