Kernel: Die Neuerungen im kommenden Linux 5.9

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(öffnet im neuen Fenster) bei der Veröffentlichung des ersten Release Candidates. Die Hälfte der Änderungen geht laut Torvalds Ankündigung auf den Wegfall von AMD-GPU-Header-Dateien zurück, doch neben diesen gibt es etliche weitere Neuerungen.
Dazu zählen unter anderem kleinere Neuerungen von Christoph Hellwig(öffnet im neuen Fenster) , die aber eine große Wirkung erzielen - zumindest lizenzrechtlich. Wie Hellwig schrieb(öffnet im neuen Fenster) , gab es seit Tag 1 einen Bug beim Auflösen der GPL-Module. Das hat es Modulen ermöglicht, zu behaupten, sie seien GPL-lizenziert. Damit konnten sie GPL-Exports verwenden, selbst wenn sie von Symbolen in Nicht-GPL-Modulen abhängen. Auf diese Weise ließen sich GPL-Exports über ein sogenanntes Shim-Modul umgehen, diese Lücke wurde geschlossen. Auslöser dafür war offenbar der Versuch eines Facebook-Entwicklers(öffnet im neuen Fenster) , 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(öffnet im neuen Fenster) . Die Device-Mapper-Verschlüsselung unterstützt 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(öffnet im neuen Fenster) kommen derweil 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 die 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. Direktes 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 bereits auf entsprechender Hardware von Qualcomm und Mediatek.
Besser prozessieren
Änderungen gibt es auch bei den Prozessoren. Kernel 5.9 unterstützt unter anderem Intels AI-Prozessor Gaudi besser. Dessen Konfiguration braucht laut Greg Kroah-Hartman(öffnet im neuen Fenster) keinen Rate Limiter mehr, auch der partielle SoC-Reset wurde 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(öffnet im neuen Fenster) 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.
Neue Plattformen kommen, alte gehen
Linux läuft auf zahlreichen Plattformen, daher ist auch in diesem Bereich immer Neues angesagt. So kündigt Palmer Dabbelt(öffnet im neuen Fenster) "viele neue Kernel-Features" für die noch recht junge freie Architektur an. Unter anderem lässt sich ü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(öffnet im neuen Fenster) , 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.
Doch neben den eher exotischen Plattformen bringt Linux 5.9 Unterstützung für mehrere neue ARM SoCs mit.
Support für neue ARM SoCs, nicht so sichere Enklaven
Support für drei neue ARM-SoCs (32 und 64 Bit) zählt der Pull Request von Arnd Bergmann(öffnet im neuen Fenster) 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 arbeiten. 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, heißt es dazu.
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 Pinephones, ein günstiges Smartphone, auf dem Linux-Distributionen statt Android gestartet werden können. 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 aus dem Jahr 2012 stammen und den Tegra 3 und 2 einsetzen, sich wieder mit einem Mainline-Kernel verwenden lassen. Möglich macht 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 auch mit Kernel- und Initrd-Images zurecht, die Zstd zum Komprimieren verwenden. Als Grund wird angegeben, dass Zstd einen sehr schnellen Dekompressor habe, die Daten dennoch zugleich optimaler packe als Gzip. Bei den x86-CPUs(öffnet im neuen Fenster) 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 kommt laut Thomas Gleixner fünf Jahre nach dem ersten RFC zum Thema, ist demzufolge nun überhaupt pflegbar und funktioniert. Gleixner erwähnte in diesem Zusammenhang Sasha Levin, der entdeckt hatte, dass Intels Sicherheitsenklave SGX (Software Guard Extensions) hinter dem Rücken des Kernels Kernel-Module laden, die FSGSBASE aktivieren. Damit erlauben sie einen nicht-privilegierten Root-Zugriff. Andererseits bringen die FSGSBASE-Instruktionen signifikante Beschleunigungen von Kontext-Switches und erlauben es dem Userspace, ohne Kernel-Interaktion GSBASE zu schreiben.
Fanotify schneller
Updates(öffnet im neuen Fenster) erhielten auch Fanotify und FSnotify. Einerseits läuft FSnotifiy den Angaben zufolge performanter, wenn es nicht im Einsatz ist. Andererseits hat ein Entwickler Fanotify-Ereignisse mit Namen implementiert. Dies erlaubt ein effektives Monitoring von ganzen Dateisystemen, das etwa auch Änderungen auf einem Mirror bemerkt.
Auch bei den Perf-Tools(öffnet im neuen Fenster) 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 kann 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(öffnet im neuen Fenster) am io_uring-Code ein. Eric Biederman hingegen widmete sich Exec(öffnet im neuen Fenster) 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, erklärte Biederman. Er habe unter anderem kernel_execve implementiert, was den Umgang mit Kernel Threads erleichtere.
BPF und Syscalls
Auch für BPF gibt es weitere Neuerungen(öffnet im neuen Fenster) , 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(öffnet im neuen Fenster) 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(öffnet im neuen Fenster) die fehlenden Teile nach, um Time Namespaces mit pidfds zu verknüpfen. Der Entwickler hat auch Code eingereicht(öffnet im neuen Fenster) , 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, heißt es dazu.
Use Cases für das Feature gebe 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 der neuen Capability CAP_CHECKPOINT_RESTORE sowie einige Änderungen an den Zugriffsrechten.
Weiterhin stellte Brauner(öffnet im neuen Fenster) 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.
Verbesserte Dateisysteme und neue Hardware
Wie immer gibt es auch Bewegung bei den Dateisystemen. NFS erhält(öffnet im neuen Fenster) ü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() 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(öffnet im neuen Fenster) 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(öffnet im neuen Fenster) 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(öffnet im neuen Fenster) diesmal keine großen neuen Features ein, es gebe eher kleine Verbesserungen und Reparaturen, heißt es. Ein Highlight sei aber womöglich die parallele Fsync-Performance, zu denen Sterba in seinem Pull Request auch einige Zahlen lieferte. Dazu trug auch der Suse-Mitarbeiter Filipe Manana ein Patch bei, der 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(öffnet im neuen Fenster) mit.
Besseres Netz und mehr unterstütze Hardware
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. Bei den Drahtlos-Patches von Kalle Valo(öffnet im neuen Fenster) 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(öffnet im neuen Fenster) Updates für die Benutzerschnittstellen. Das Testen von Eingabegeräten klappt 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 Temperatursensoren des Sparx5-SoC, mit dem der Corsair Commandor Pro Hardware in Gamer-PCs steuert, beispielsweise LEDs.
Apropos LEDs: Pavel Machek hat sich Gedanken über RGB-LEDs(öffnet im neuen Fenster) 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. Diese betreffen(öffnet im neuen Fenster) 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.
Bleiben noch die Grafikupdates. Von Dave Airlie(öffnet im neuen Fenster) 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 erster 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 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(öffnet im neuen Fenster) fündig oder tradionell auf Kernel.org(öffnet im neuen Fenster) .



