Das Herbst-Update für den Linux-Kernel schließt eine rechtliche Lücke für Modul-Trickser, erlaubt den Einsatz von RISC-V im Tickless-Modus und unterstützt nach fünf Jahren Intels zweischneidiges FSGSBASE, weil es der Performance hilft.
Linux 5.9-rc1 sei “normaler” als die Vorgängerversion, schrieb Linus Torvalds Mitte August bei der Veröffentlichung des ersten Release Candidate für den neuen Kernel 5.9 [1]. Dennoch gab es am Ende wegen einiger Network-Fixes mehr zu tun, als Torvalds lieb war [2]. Seit dem 11. Oktober 2020 steht der Kernel 5.9 aber zum Download bereit, wahlweise auf Github [3] oder auf Kernel.org [4].
Modulmisere
Die Neuerungen beschränken sich dabei nicht allein auf die Technik, sondern wirken sich auch lizenzrechtlich aus. Das gilt etwa für die Patches von Christoph Hellwig [5], die eine rechtliche Lücke im Umgang mit Kernel-Modulen stopften. Wie Hellwig schrieb [6], gab es seit dem ersten Tag einen Bug beim Auflösen der GPL-Module. Das ermöglichte es für Module vorzugeben, sie seien GPL-lizenziert, und GPL-Exports zu verwenden, selbst wenn sie eigentlich von Symbolen in Nicht-GPL-Modulen abhingen. Über ein sogenanntes Shim-Modul ließen sich die GPL-Exports umgehen – diese Lücke ist nun geschlossen.
Anlass zur Nachbesserung lieferte offenbar der Versuch eines Facebook-Entwicklers. Er wollte Patches für ein Interface unterbringen, über das das NetGPU-Core-Modul und Nvidias proprietärer Kernel-Treiber miteinander kommunizieren. Das kam nicht gut an [7], auch wenn der Entwickler betonte, er wolle nicht trollen.
Im Kryptobereich kennt der Kernel einen neuen Krypto-Treiber (»sa2ul«) und drei neue Hardware-RNG-Treiber (»BA431«, »JZ4780«, »X1000«). Hinzu kommen Device-Mapper-Updates von Mike Snitzer [8]. 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 Schreibordnung zu etablieren, die Zoned Block Devices benötigen.
Zonenrandgebiet
Apropos Zoned Block Devices: Im Zoned-Storage-Modell für NVMe-Datenträger lassen sich üblicherweise alle Sektoren in einer Zone beschreiben. Bei SSDs, die den Zoned-Namespaces-Standard (ZNS) unterstützen, besteht hingegen die Möglichkeit, ausgewählte Zonen beschreibbar zu machen. Das steigert in bestimmten Anwendungsfällen die Performance und erlaubt es Apps, ihre Daten gezielt in Zonen zu platzieren.
Linux bringt für Zoned Block Devices ein eigenes Dateisystem namens ZoneFS [9] mit. Mit Kernel 5.9 erhält ZoneFS Support für Zone Capacity [10] und verwendet dabei das »zone capacity field« anstelle von »blk_zone«, um die maximalen Inode-Größen und -Blöcke in ZoneFS zu ermitteln.
Von Eric Biggers [11] kommen Aktualisierungen für FSCrypt, allen voran 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 (UFS) oder eMMC-Host-Controllern der meisten mobilen SoCs steckt.
Direktes Lesen und Schreiben in verschlüsselten Dateien wäre mit »blk-crypto« ebenfalls möglich, wird aber noch diskutiert und ist daher nicht Teil der Patches. Getestet haben die Entwickler die Inline-Verschlüsselung auf passender Hardware von Qualcomm und Mediatek.
Ä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 [12] keinen Rate Limiter mehr, den partiellen SoC-Reset haben die Entwickler ebenfalls entfernt. Die Controller-Konfiguration für PCI-Express wurde refaktoriert, damit sich der Code zugleich für aktuelle und künftige ASICs nutzen lässt.
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 der Boot-Prozess von Linux überdies auf einem der Prozessoren einbeziehen soll. Konkret klappt das nun laut Björn Andersson [13] für die Mikrocontroller-Plattform STM32.
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 von Ressourcen und Operationen dieses Prozesses abhängt.
Architektonisches
Neues gibt es auch bei den vom Kernel unterstützten Plattformen. Laut Palmer Dabbelt [14] lässt sich nun für RISC-V über »NO_HZ_FULL« im Echtzeitbetrieb ein Tickless-System aktivieren, bei dem der lokale Timer die CPU nicht unterbrechen darf. Daneben gibt es einen »JUMP_LABEL«-Support für Test-Szenarien.
Andere Architekturen verlassen den Kernel wieder, weil sie nicht mehr zum Einsatz kommen. So erging es diesmal der chinesischen 32-Bit-RISC-Architektur Unicore32 [15], die bereits länger nicht mehr betreut wird. Die dazugehörige Toolchain ist offenbar verschwunden, obendrein tauchten die vom Ex-Maintainer vor zwei Jahren versprochenen Compiler-Quellen nie auf. Daher fliegt der Code nun aus dem Kernel.
Unterstützung für drei neue ARM-SoCs (32 und 64 Bit) zählt der Pull Request von Arnd Bergmann [16] auf. Daniel Palmer liefert ersten Support für zwei 32-Bit-Kamera-Chips (Cortex-A7) von MStar, einem taiwanischen SoC-Hersteller, den Mediatek 2012 aufgekauft hat. Weiterhin unterstützt der Kernel dank Lars Povlsen die Sparx5-Familie von Ethernet-Switch-Chips, in denen Cortex-A53-Kerne mit 64 Bit werkeln. Intels neuen “Keem-Bay”-SoC für maschinelles Sehen unterstützt Linux 5.9 ebenfalls.
Von den Entwicklern um Bergmann stammen zudem Device Trees [17] 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 schließlich ist das Topmodell aus Renesas RZ/G-Familie.
Nicht zu vergessen ist Allwinners Sunxi-Familie, bei der es ein neues Board für einen existierenden SoC gibt. Dabei handelt es sich um Revision 1.2 des auch in Deutschland häufiger erwähnten PinePhone von Pine64 (Abbildung 1), eines günstigen Smartphones, das ohne Android auskommt.

Abbildung 1: Das PinePhone (auf dem hier Ubuntu Touch läuft) gehört zu den Geräten, die vom neuen Kernel 5.9 profitieren. Quelle: Avisando, Wikimedia.org, CC-BY-SA 4.0
Außerdem 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 das Iconia Tab A500 von Acer, die beide von 2012 stammen, nun wieder mit einem Mainline-Kernel laufen. Möglich macht das PostmarketOS [18]. Auch bei den ARM-SoC-Treibern gibt es Neues [19]: So unterstützt der Turris-Mox-Firmware-Treiber nun signierte Blobs.
FSGSBASE
Boot-Updates von Ingo Molnár sorgen dafür, dass die x86-Architektur nun auch mit Kernel- und Initrd-Images zurechtkommt, die Zstd zum Komprimieren verwenden. Zstd hat einen sehr schnellen Dekompressor, packt die Daten dennoch zugleich noch besser als Gzip.
Bei den x86-CPUs [20] gibt es Support für weitere Intel-Modelle, Split-Lock-Debugging ist auf weiteren CPUs möglich. Zudem haben die Entwickler die Logik im Code zum Schutz gegen die Spectre-v2-Lücke etwas vereinfacht.
Darüber hinaus dürfen sich die Nutzer von x86-Intel-Prozessoren über Support für FSGSBASE freuen. Der Code kommt fünf Jahre nach dem ersten RFC zum Thema und ist nun laut Thomas Gleixner [21] überhaupt erst in einem pfleglichen Zustand und einsatzfähig.
Gleixner erwähnt in diesem Zusammenhang Sasha Levin: Der hatte entdeckt, dass ausgerechnet Intels Sicherheitsenklaven (SGX, Software Guard Extensions) quasi hinter dem Rücken des Kernels Module laden, die FSGSBASE aktivieren und damit einen nicht privilegierten Root-Zugriff erlauben. Andererseits beschleunigen die FSGSBASE-Instruktionen Kontext-Switches signifikant und erlauben es dem Userspace, ohne Kernel-Interaktion GSBASE zu schreiben, was wohl das Festhalten an ihnen erklärt.
Updates gibt es auch für Fanotify [22]. Einerseits erzeugt Fsnotify nun weniger Overhead, wenn es nicht in Gebrauch ist; andererseits hat ein Entwickler den Fanotify-Events Namen spendiert. Das erlaubt nun ein effektives Monitoring des kompletten Dateisystems, das etwa auch Änderungen auf einem Mirror im Auge behält.
Bei den Perf-Tools kündigen sich ebenfalls neue Features an [23]. Laut Arnaldo Carvalho de Melo überwachen jetzt Control File Descriptors die Arbeit von »perf stat« und »perf record«. Auf ein Kommando der erwähnten Control File Descriptors hin lassen sich Events starten, die zwar eingerichtet, aber sonst inaktiv sind. Nützlich kann das laut de Melo für Intels Vtune-Profiler sein. Zudem erhält »perf bench« rudimentäre Benchmarks für Syscalls und Find-next-Bit-Aktionen.
Um echte asynchrone Pufferlesevorgänge zu erreichen, bringt Jens Axboe [24] Änderungen am »io_uring«-Code ein. Eric Biederman [25] 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 ließen. Er habe nun unter anderem »kernel_execve« implementiert, lässt er wissen, was den Umgang mit Kernel-Threads erleichtere.
BPF und Syscalls
Neu in BPF ist ein BPF-Iterator für Map-Elemente [26]. Programme in derselben Cgroup dürfen nun ihre lokale »CPU_STORAGE«-Map teilen. Um Letzteres umzusetzen [27], änderten die Entwickler kurzerhand die Semantik der »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 zarten Bande halten bis zur Auflösung von Map oder Cgroup.
Daneben bietet Linux 5.9 unter anderem neue Syscalls und Mechanismen, die im Container-Bereich helfen. So liefert Christian Brauner die fehlenden Teile nach [28], um Time Namespaces mit »pidfds« zu verkuppeln. Er reichte zudem Code ein [29] der unprivilegierte Checkpoint- und Restore-Aktionen für Prozesse erlaubt. Die Arbeit daran laufe bereits seit einiger Zeit, kommentiert er, der neue Code bringe sie lediglich durchs Ziel.
Use Cases für das Feature nennt Brauner auch: Die JVM-Entwickler hätten Checkpoint und Restore in die Java-VM integriert, um die Startzeit zu verkürzen. Auch im High-Performance-Computing (nicht privilegierte Prozesse) und beim Migrieren von Containern als normaler Nutzer erweise sich der Mechanismus als nützlich. Zugleich erfordern Checkpoint und Restore eine neue Capability namens »CAP_CHECKPOINT_RESTORE« sowie einige Änderungen an den Zugriffsrechten.
Zu guter Letzt stellt Brauner den Systemaufruf »close_range()« [30] vor, der effizient eine Reihe von oder alle Dateideskriptoren im Angesicht eines Tasks schließt. Dazu kommt ein von Linus Torvalds vorgeschlagenes »CLOSE_RANGE_UNSHARE«-Flag zum Einsatz.
Dateisysteme
Wie immer gingen die Kernel-Neuerungen auch an den Dateisystemen nicht ganz vorbei. NFS erhält über das NFSv4.2-Protokoll Unterstützung für Extended Attributes für User (»user xattrs« [31]). 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 Server-Seite [32] haben die Nfsd-Entwickler zudem weitere unnütze Delegation Recalls entfernt.
In XFS [33] funktioniert Inode-Flushing nun vollständig asynchron. Die Entwickler haben einen alten Bug im Quota-Code behoben, der zur Folge hatte, dass XFS Soft-Limit-Warnungen und Inode-Limits nicht sauber verfolgte. Außerdem wurden die Reflink-Kontrollschleifen auf Effizienz getrimmt und das Verhalten von DAX unter Ext4 und XFS weiter stabilisiert.
Laut Ilja Drjomow [34] hat Xiubo Li in Sachen Ceph die Arbeit an den Client-Dateisystemmetriken beendet. Ceph sendet die Metriken nun sekündlich an alle verfügbaren Metadata Server (MDS).
David Sterba [35] fielen für Btrfs diesmal keine großen neuen Features ein, es gab eher kleine Verbesserungen und Reparaturen. Ein Highlight ist aber womöglich die parallele Fsync-Performance, zu der Sterba in seinem Pull-Request auch einige Zahlen lieferte. Suse-Mitarbeiter Filipe Manana reichte dazu einen Patch ein, der Btrfs veranlassen soll, bei Page Releases nicht das volle Sync-Flag zu setzen. Das sei nicht nötig, meint Manana, und der Wegfall bringe Performance-Gewinne. Zum Beweis liefert er ein kleines Testskript mit [36].
Am Draht und drahtlos
Im Netzwerkbereich [37] erhalten die NICs von Atlantic neue Features, darunter 64-Bit-Operationen und IPv6-Support für TCP LSO sowie 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.
Sonstiges
Auch Besitzer ganz gewöhnlicher Consumer-Hardware dürfen sich an einigen Stellen über Updates freuen. So aktualisierte Jiri Kosina die Benutzerschnittstellen. Das Testen von Eingabegeräten klappt nun schneller, außerdem gibt es Support für das Thinkpad-10-Ultrabook-Keyboard.
Im Virtualisierungsbereich profitiert Xen [38] von Kernel 5.9. Der Hypervisor läuft nun auch auf dem Raspberry Pi 4, weil der anders als die Vorgänger einen standardisierten GIC-400-Interrupt-Controller verwendet, der Virtualisierung unterstützt.
Neue Treiber für das Hardware-Monitoring sind ebenfalls mit von der Partie. Dazu zählen einer für die Temperatursensoren des Sparx5-SoC sowie einer für den Corsair Commandor Pro. Dieses Gerät steuert bestimmte Hardware in Gamer-PCs, etwa die LEDs.
Apropos LEDs: Pavel Machek hat sich Gedanken über RGB-LEDs gemacht [39], 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.
Der Treiber für das Elan-Touchpad unterstützt neuere Touchpads mit höherer Auflösung. Auch am Thunderbolt-Support gibt es wieder Optimierungen. Die betreffen unter anderem das Native Host Interface, das Tunneling und das Bandbreitenmanagement. Ein neuer Upgrade-Mechanismus für Geräte-Firmware authentifiziert NVM-Images selbst dann, wenn das Gerät nicht verbunden ist.
Malen nach Zahlen
Bleiben noch die Grafikkarten-Updates. Von Dave Airlie [40] floss ein Pull-Request ein, der einen neuen DisplayPort-Treiber für Xilinx ZynqMP anbietet, zwei neue AMD-GPUs (“Sienna Cichlid” und “Navy Flounder”) unterstützt und ersten Support für “Rocket Lake” im i915-Treiber für Intel-Grafik liefert. 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 es nun ab der “Pascal”-Serie der Nvidia-Karten 2 MiB große Systemspeicher-Pages. Zu guter Letzt gibt es vorbereitende Patches für Tegra, um Video-Capture-Support für externe Kameramodule zu ermöglichen.
Infos
-
Torvalds’ Ankündigung von Linux 5.9-rc1: https://lkml.org/lkml/2020/8/16/221
-
Linux-5.9-Ankündigung: https://lkml.org/lkml/2020/10/11/275
-
Linux auf Github: https://github.com/torvalds/linux/releases
-
Linux auf Kernel.org: https://www.kernel.org
-
Patches von Christoph Hellwig: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0fd9cc6b0c72245375520ffc8d97ce5857b63b94
-
Bug in der GPL-Auflösung: https://lkml.org/lkml/2020/7/30/58
-
Streit um GPL-Module: https://lore.kernel.org/netdev/6376CA34-BC6F-45DE-9FFD-7E32664C7569@fb.com/T/#md514322fdfa212afe9f1d3eb4e5f7eaefece36eb
-
Device-Mapper-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f12d44085dabf5fa5779ff0bb0aaa1b2cc768cb
-
ZoneFS: https://www.kernel.org/doc/html/latest/filesystems/zonefs.html
-
Zone-Capacity-Commit: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=e3c3155bc95ab6a7b21ac40418bf80bedb204949
-
FSCrypt-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=690b25675f5c9c082cb1b902e6d21dd956754e7e
-
Support für “Gaudi”: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=860e73b49cd933c708e3e1e1e07cdea81b6acd1c
-
Entkoppelte Remote-Prozessoren auf STM32: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=617e7481d7bfb807273d0f1b1983de032a725220
-
RISC-V-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dbf83817315d9ce93b3e5b1c83a167f537245bd8
-
Ausrangiertes Unicore32: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05119217a9bd199c4b8b12c01f86df09108b109b
-
Drei neue ARM-SoCs: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d4db4e553249eda9016fab2e363c26e52c47926f
-
Neue SoC-Device-Trees: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2f3fbfdaf77f3ac417d0511fac221f76af79f6fc
-
PostmarketOS: https://postmarketos.org
-
ARM-SoC-Treiber: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=822ef14e9dc73079c646d33aa77e2ac42361b39e
-
Fanotify-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=eb65405eb6860935d54b8ba90a5e231e07378be1
-
Perf-Neuerungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=00e4db51259a5f936fec1424b884f029479d3981
-
Async-I/O für Puffer: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=cdc8fcb49905c0b67e355e027cb462ee168ffaa3
-
»kernel_execve«: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=3950e975431bc914f7e81b8f2a2dbdf2064acb0f
-
BPF-Iterator: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2e7199bd773bff3220184d071ed9c9cd34950e51
-
CPU-Storage-Map teilen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=36f72484820abcaede242a53fde965217e718b2e
-
Time Namespace plus Pidfds: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0a72761b27fe3b10e3f336bf2f2aa22635504cdd
-
Unprivilegiertes Checkpoint & Restore: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=74858abbb1032222f922487fd1a24513bbed80f9
-
Systemaufruf »close_range()«: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f30a60aa78410496e5ffe632a371c00f0d83a8d
-
Extended Attributes für User: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=37711e5e2325535bf094bdc0a66790d659b52d5b
-
Nfsd-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7a6b60441f02f6e22e7c0936ef16fa3f51832a48
-
XFS-Aktualisierungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5631c5e0eb9035d92ceb20fcd9cdb7779a3f5cc7
-
Ceph-Pull-Request: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c2a69f610e64c8dec6a06a66e721f4ce1dd783a
-
Btrfs-Kernel-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6dec9f406c1f2de6d750de0fc9d19872d9c4bf0d
-
Btrfs-Performance-Messung: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5e548b32018d96c377fda4bdac2bf511a448ca67
-
WLAN- und Netzwerk-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=4f1b4da541db2bc99d5783ebf2b60c1563eb9077
-
Xen auf dem RasPi 4: https://www.linux.com/featured/xen-on-raspberry-pi-4-adventures/
-
Grafik-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8186749621ed6b8fc42644c399e8c755a2b6f630






