Nach dem bislang wohl umfangreichsten Kernel 5.8 scheint sich die Lage wieder etwas zu entspannen: Linux 5.9-rc1 sei „normaler“ als die Vorgängerversion, schrieb Linus Torvalds am Sonntag beim Release.
Die Hälfte der Änderungen gehe laut Torvalds Ankündigung dabei auf den Wegfall von AMD-GPU-Header-Dateien zurück, insgesamt ergebe sich aber ein eher normales Bild. Klingt erstmal langweilig, Neuigkeiten gibt es dennoch zur Genüge.
Dazu zählen unter anderem kleinere Neuerungen von Christoph Hellwig, die aber eine große Wirkung erzielen — zumindest lizenzrechtlich. Wie Hellwig schrieb, gab es seit Tag 1 einen Bug beim Auflösen der GPL-Module. Das hat es für Module möglich gemacht, zu behaupten, sie seien GPL-lizenziert und GPL Exports zu verwenden, selbst wenn es von Symbolen in Nicht-GPL-Modulen abhängt. Auf diese Weise ließen sich GPL Exports über ein so genanntes Shim-Modul umgehen, diese Lücke ist nun geschlossen. Auslöser dafür war offenbar der Versuch eines Facebook-Entwicklers, Patches für ein Interface unterzubringen, über das das NetGPU-Core-Modul und Nvidias Kerneltreiber kommunizieren.
Inline-Verschlüsselung
Im Crypto-Bereich kennt der Kernel einen neuen Crypto-Treiber („sa2ul“) und drei neue Hardware-RNG-Treiber („BA431“, „JZ4780“ und „X1000“). Hinzu kommen Device-Mapper-Updates von Mike Snitzer. Die Device-Mapper-Verschlüsselung unterstützt nun auch Zoned Block Devices. Dank „DM_CRYPT_NO_WRITE_WORKQUEUE“ und dem neuen optionalen Feature „DM_CRYPT_WRITE_INLINE“ wartet der Schreibprozess, bis das Verschlüsseln komplett ist. Das erlaubt es, eine Schreibordung zu etablieren, die Zoned Block Devices benötigen.
Von Eric Biggers kommen derweilen Aktualisierungen für FScrypt, allen voran der Support für Inline-Verschlüsselung über das „blk-crypto“-Framework. Gibt der Admin den Dateisystemen Ext4 und F2FS die Mount-Option „-o inlinecrypt“ mit auf den Weg, ver- und entschlüsselt „blk-crypto“ die Dateien und verwendet dafür nicht direkt das Crypto-API. Das Modell macht dabei Gebrauch von der Inline-Encryption-Hardware, die in Universal Flash Storage (USF) oder eMMC-Host-Controllern der meisten mobilen SoCs steckt. Direkter Lesen und Schreiben in verschlüsselte Dateien ist zwar mit „blk-crypto“ ebenfalls möglich, wird aber noch diskutiert und ist daher nicht Teil der Patches. Getestet wurde die Inline-Verschlüsselung auf entsprechender Hardware von Qualcomm und Mediatek auch schon.
Besser prozessieren
Änderungen gibt es daneben auch bei den Prozessoren. Kernel 5.9 unterstützt unter anderem Intels AI-Prozessor Gaudi besser. Dessen Konfiguration braucht laut Greg Kroah-Hartman keinen Rate Limiter mehr, auch den partiellen SoC-Reset haben die Entwickler entfernt. Die Controller-Konfiguration für PCI-Express wurde refaktoriert, damit der Code zugleich für aktuelle und künftige ASICs nutzbar ist.
Um das Steuern separat arbeitender Prozessoren kümmert sich im Kernel das Remote Processor Framework. Das führt in Kernel 5.9 einen „Entkoppelt“-Zustand für entfernte Prozessoren ein, die beim Booten von Linux auf einem der Prozessoren ebenfalls einbezogen werden sollen. Konkret klappe das nun dank Entwickler Bjorn Andersson für die STM32-Plattform. Daneben gibt es eine neue Benutzerschnittstelle, über die sich der Stopp-Prozess für einen Remote Processor an das Beenden eines Userspace-Prozesses knüpfen lässt. Das kann nötig sein, wenn die Firmware des entfernten Prozessors auf Ressourcen und Operationen dieses Prozesses angewiesen ist.
Läuft bei ihnen
Linux läuft auf zahlreichen Plattformen, daher ist auch in diesem Bereich immer Neues angesagt. So kündigt Palmer Dabbelt „viele neue Kernel-Features“ für die noch recht junge freie Architektur an. Unter anderem lässt sich nun über “NO_HZ_FULL” im Echtzeitbetrieb ein Tickless-System aktivieren, bei dem der lokale Timer die CPU nicht unterbrechen darf. Und es gibt “JUMP_LABEL”-Support, der sinnvoll im Zusammenhang mit Tests ist.
Andere Architekturen hingegen verlassen den Kernel bereits wieder, weil sie nicht mehr zum Einsatz kommen. So erging es diesmal Unicore32, einer chinesischen 32-Bit-RISC-Architektur. Die wird bereits länger nicht mehr betreut, auch die dazugehörige Toolchain ist offenbar verschwunden. Die vom Ex-Maintainer vor zwei Jahren versprochenen Compiler-Quellen tauchten ebenfalls nie auf, insofern fliegt der Code nun aus dem Kernel.
ARM, aber sexy
Support für drei neue ARM-SoCs (32 und 64 Bit) zählt der Pull Request von Arnd Bergmann auf. Daniel Palmer liefert ersten Support für zwei 32-Bit-Kamera-Chips (Cortex-A7) von MStar, einem taiwanesischen SoC-Hersteller, den Mediatek 2012 aufgekauft hat. Weiterhin unterstützt der Kernel dank Lars Povlsen die Sparx5-Familie von Ethernet-Switch-Chips, in denen 64 bittige Cortex-A-53-Kerne werkeln. Intels neuen Keem-Bay-SoC für maschinelles Sehen unterstützt Linux 5.9 ebenfalls.
Weiterhin kommen von den Entwicklern um Bergmann Device Trees für drei neue SoCs in existierenden Produktfamilien. Aus Amazons Annapurna Labs kommt das Alpine v3, das auf einem 16-kernigen Cortex-A72 basiert. Qualcomm schickt die Snapdragon-SDM630-Plattform ins Rennen, die sich für Mobiltelefone eignet (Xperia 10, 10 Plus, XA2 und weitere ) und mit einem Cortex-A53- oder einem Kryo-260-Chip läuft. Der RZ/G2H sei schließlich das Topmodell aus Renesas RZ/G-Familie.
Nicht zu vergessen ist der Allwinner Sunxi, der ein neues Board für einen existierenden SoC anbietet. Dabei handelt es sich um die Revision 1.2 des auch in Deutschland häufiger erwähnten Pine64 Pine-Phones, ein günstiges Smartphone, das eben kein Android mitbringt. Weiterhin gibt es wieder neue Device Trees für Settop-Boxen, Chromebooks, SBCs und Android Tablets. Bei letzteren ist interessant, dass das Google Nexus 7 von Asus und Acers Iconia Tab A500, die von 2012 stammen und den Tegra 3 und 2 einsetzen, sich nun wieder mit einem Mainline-Kernel verwenden lassen. Möglich mache dies das Linux-basierte Mobilephone-OS PostmarketOS. Auch bei den ARM-SoC-Treibern gibt es Neues: So unterstützt der „Turris Mox“-Firmware-Treiber nun signierte Blobs.
Nicht so sichere Enklave
Dank Boot-Updates von Ingo Molnar kommt die x86-Architektur nun auch mit Kernel- und Initrd-Images zurecht, die Zstd zum Komprimieren verwenden. Der Grund: Zstd habe einen sehr schnellen Dekompressor, packe die Daten dennoch zugleich optimaler als Gzip. Bei den x86-CPUs gibt es Support für weitere Intel-Modelle, Split-Lock-Debugging ist auf mehr CPUs möglich. Zudem haben die Entwickler die Logik im Code zum Schutz gegen die Spectre-v2-Lücke etwas vereinfacht.
Weiterhin dürfen sich die Nutzer von x86-Intel-Prozessoren über Support für FSGSBASE freuen. Der komme laut Thomas Gleixner fünf Jahre nach dem ersten RFC zum Thema, sei nun überhaupt pflegbar und funktioniere. Gleixner erwähnte in diesem Zusammenhang Sasha Levin.
Dieser hatte entdeckt, dass ausgerechnet Intels Sicherheitsenklaven (SGX, Software Guard Extensions) „hinter dem Rücken des Kernels“ Kernel-Module laden, die FSGSBASE aktivieren und damit einen nicht-privilegierten Root-Zugriff erlauben. Andererseits bringen die FSGSBASE-Instruktionen signifikante Beschleunigungen von Kontext-Switches und erlauben es dem Userspace, ohne Kernel-Interaktion GSBASE zu schreiben.
Fanotify schneller
Updates erhielten auch Fanotify und FSnotify. Einerseits läuft FSnotify nun mit weniger Overhead, wenn es nicht im Gebrauch ist. Andererseits habe ein Entwickler Fanotify-Ereignisse mit Namen implementiert. Dies erlaube nun ein effektives Monitoring von ganzen Dateisystemen, das etwa auch Änderungen auf einem Mirror bemerke.
Auch bei den Perf-Tools kündigen sich neue Features an. Laut Arnaldo Carvalho de Melo überwachen nun Control File Descriptor die Arbeit von „perf stat“ und „perf record“. Das erlaubt es, auf Kommando vom erwähnten Control File Descriptor hin mit Events zu starten, die zwar eingerichtet aber deaktiviert sind. Nützlich könne dies laut Carvalho de Melo für Intels Vtune sein. Zudem erhält „perf bench“ rudimentäre Benchmarks für Syscalls und Find-next-Bit-Aktionen.
Um echt asynchrone Puffer-Lesevorgänge zu erreichen, brachte Jens Axboe Änderungen am „io_uring“-Code ein. Eric Biederman hingegen widmete sich „exec“ und möglichen Verbesserungen daran. Im Entwicklungszyklus für Kernel 5.7 sei er auf Probleme mit „exec“ gestoßen, die sich nicht ohne Weiteres beheben lassen. Er habe nun unter anderem „kernel_execve“ implementiert, was den Umgang mit Kernel Threads erleichtere.
BPF und Syscalls
Auch für BPF gibt es weitere Neuerungen. So etwa einen BPF Iterator für Map-Elemente. Programme in derselben Cgroup dürfen nun ihre lokale „CPU_STORAGE“-Map teilen. Um letzteres umzusetzen, änderten die Entwickler kurzerhand die Semantik des „CGOUP_STORAGE“-Map-Typen. Anstatt jeden Storage mit einer einzigen Verknüpfung zu verbinden, teilt der Code den Storage nun über verschiedene Verknüpfungen mit derselben Cgroup. Diese Verknüpfung hält bis zur Auflösung von Map oder Cgroup.
Daneben hält Linux 5.9 einige neue Syscalls bereit, die unter anderem im Containerbereich helfen sollen. So liefert Christian Brauner die fehlenden Teile nach, um Time Namespaces mit „pidfds“ zu verknüpfen. Der Entwickler hat auch Code eingereicht, der unprivilegierte Checkpoint- und Restore-Aktionen für Prozesse erlaubt. Die Arbeit daran laufe aber seit einiger Zeit, der neue Code bringe diese Arbeit lediglich durchs Ziel.
Use Cases für das Feature gibt es auch schon: Die JVM-Entwickler hätten Checkpoint/Restore in die Java VM integriert, um die Startzeit zu verringern. Auch im High-Performance-Computing (nicht-privilegierte Prozesse) und beim Migrieren von Containern als normaler Nutzer erweise sich der Mechanismus ebenfalls als nützlich. Zugleich erfordere Checkpoint/Restore die Einführung einer neuen Capability: „CAP_CHECKPOINT_RESTORE“ sowie einige Änderungen an den Zugriffsrechten.
Weiterhin stellte Brauner den „close_range()“-Systemaufruf vor, der effizient eine Reihe oder alle Dateideskriptoren im Angesicht einer Task schließt. Dazu kommt eine von Linus Torvalds vorgeschlagene „CLOSE_RANGE_UNSHARE“-Flag.
Dateisysteme
Wie immer gibt es auch Bewegung bei den Dateisystemen. NFS erhält über das NFSv4.2-Protokoll Unterstützung für Extended Attributes für Benutzer („user xattrs“). Der NFS-Server („nfsd“) unterstützt die Extended Attributes für User ebenfalls. Anwendungen können die Kombination aus „readdir()“ und „statx()“ nun beschleunigen, indem sie den Sync für Statx ausschalten. Auf Serverseite haben die NFSd-Entwickler zudem weitere unnütze Delegation Recalls entfernt.
In XFS funktioniert Inode-Flushing nun vollständig asynchron. Die Entwickler haben einen alten Bug im Quota-Code behoben, der dafür sorgte, dass XFS Soft-Limit-Warnungen und Inode-Limits nicht sauber verfolgt hat. Außerdem wurden die Reflink-Kontrollschleifen auf Effizient getrimmt und das Verhalten von DAX unter Ext4 und XFS weiter stabilisiert. Maintainer Darrick Wong begrüßte zudem einige neue Mitarbeiter.
Laut Ilja Drjomow ist in Sachen Ceph die Arbeit an den Client-Dateisystem-Metriken von Xiubo Li beendet. Ceph sendet die Metriken nun sekündlich an alle verfügbaren Metadata Server (MDS).
David Sterba fielen für Btrfs diesmal keine großen neuen Features ein, es gebe eher kleine Verbesserungen und Reparaturen. Ein Highlight sei aber womöglich die parallele Fsync-Performance, zu denen Sterba in seinem Pull Request auch einige Zahlen lieferte. Dazu lieferte auch der Suse-Mitarbeiter Filipe Manana ein Patch, das Btrfs veranlassen soll, bei Page Releases nicht das volle Sync-Flag zu setzen. Das sei nicht nötig und der Wegfall bringe Performance-Gewinne. Zum Beweis lieferte Manana Zahlen sowie ein kleines Testskript mit.
Besseres Netz
Im Netzwerk-Bereich erhalten die Atlantic NICs neue Features, darunter 64-Bit-Operationen und IPv6-Support für TCP LSO und UDP GSO. Der „mac80211“-Treiber behandelt nun die SAE-Status-Codes für die WPA-3-Authentifizierung korrekt und Beacon-Filter besser als zuvor. Bei den Drahtlos-Patches von Kalle Valo gelten die Microchip „wilc1000“-Treiber als größte Neuerung, die den Staging-Bereich verlassen. Daneben erhält „ath11k“ Support für 6 GHz und Spectral Scans, während der „rtw88“-Treiber neuerdings RTL8821CE-WLAN-Chips von Realtek unterstützt.
Auch Besitzer ganz gewöhnlicher Consumer-Hardware dürfen sich an einigen Stellen über Updates freuen. So kommen von Jiri Kosina Updates für die Benutzerschnittstellen. Das testen von Eingabegeräten klappt nun schneller, außerdem gibt es Support für das Thinkpad 10 Ultrabook Keyboard. Neue Treiber für das Hardware-Monitoring sind ebenfalls mit von der Partie. Dazu zählt einer für die Temperatur Sensoren des Sparx5-SoC, einer für den Corsair Commandor Pro, einem Gerät, um bestimmte Hardware in Gamer-PCs zu steuern, etwa die LEDs. Apropos LEDs: Pavel Machek hat sich Gedanken über RGB-LEDs gemacht, die im Gegensatz zu Multicolor-LEDs das volle Spektrum an Farben abdecken. Geht es nach ihm, sollte der Kernel beide LED-Varianten unterstützen, erster Code dafür ist im Kernel 5.9 gelandet.
Die Libnvdimm kümmert sich um nicht-flüchtigen Speicher und bringt mit Runtime Firmware Activation ein neues Feature mit. Der Treiber für das Elan Touchpad wurde aktualisiert, um neuere Touchpads mit höherer Auflösung zu unterstützen. Auch am Thunderbolt-Support gibt es wieder Optimierungen. Die betreffen unter anderem das Native Host Interface, das Tunneling und das Bandbreiten-Management. Ein neuer Upgrade-Mechanismus für Geräte-Firmware authentifiziert NVM-Images auch dann, wenn das Gerät nicht verbunden ist.
Malkasten
Bleiben noch die Grafikupdates. Von Dave Airlie floss ein Pull Request ein, der einen neuen Displayport-Treiber für Xilinx ZynqMP anbietet, zwei neue AMD-GPUs (Sienna Cichlid und Navy Flounder) und ersten Support für RocketLake im „i915“-Treiber für Intel-Grafik. Auch die Arbeit am DG1-Chip, der Intels neue XE-Grafikarchitektur unterstützen soll, hat im Kernel bereits begonnen. Nouveau erhält CRC-Support über neue eingeführte Vblank Worker. Zudem unterstützt Nouveau nun 2 MiB große Systemspeicher-Pages ab der Pascal-Serie von Nvidia-Karten. Last but not least gibt es vorbereitende Patches für Tegra, um Video-Capture-Support für externe Kameramodule zu ermöglichen.
Wer den Vorab-Kernel testen möchte, wird auf Github fündig oder, noch traditioneller, auf Kernel.org.
[Update, 12.10.20]: Tippfehler korrigiert.



