zurück zum Artikel

Linux 5.2 freigegeben: Änderungsrekord und Geschwindigkeitsverbesserungen

Trends & News | Kernel-Log

Das Ext4-Dateisystem kann jetzt Groß- und Kleinschreibung ignorieren. Die Storage-Performance legt in gewissen Konstellationen deutlich zu. ISDN4Linux fliegt bald raus. Außerdem ist es jetzt ganz leicht, Schutztechniken auszuschalten, die viel Leistung kosten.

Linus Torvalds hat Sonntagnacht die Linux-Version 5.2 freigegeben. Wie jede neue Version der Hauptentwicklungslinie bringt auch der neueste Kernel weit über zehntausend Änderungen. Einige rüsten neue Features nach, andere verbessern existierende. Die wichtigsten Verbesserungen im Kurzüberblick:

Dank eines I2C-Treiber laufen zahlreiche Ryzen-Notebooks mit Linux 5.2 deutlich besser.
Dank eines I2C-Treibers laufen zahlreiche Ryzen-Notebooks mit Linux 5.2 deutlich besser.

Dies war ein schrittweise aktualisierter Artikel

Dieser Text wurde mehrfach erweitert, um nach und nach alle wesentlichen Änderungen in Linux 5.2 zu beschreiben. Zur jüngst erfolgten Freigabe dieser Kernel-Version haben wir die Abschnitte umsortiert und Abschnitte zu wichtigeren Neuerungen an den Anfang gestellt. Von nun an behält der Text seine jetzige Form. Details zur Versionshistorie des Artikels finden Sie am Artikelende [1].

Die folgenden Seiten liefern zahlreiche wichtige Details zu diesen Neuerungen von Linux 5.2 und erläutern darüber hinaus zahlreiche weitere Änderungen.

Ein ganzer Schwung von Änderung verspricht die Performance von Budget Fair Queueing (BFQ) zu verbessern – dem von manchen Distributionen standardmäßig eingesetzten Storage-I/O Scheduler, der bei Datenträgerzugriffen die gerade anstehenden Lese- und Schreiboperationen umsortieren kann, um die Performance zu verbessern.

Eine der Anpassungen an BFQ [3] hat bei einem Test der Entwickler größere Auswirkungen gezeigt: Der Test Dbench legte bei sechs Clients bei einem System mit Plextor-SSD von 80 MByte/s auf 100 zu. Bei einer weiteren Änderung [4] am Nachfolger des früher verbreiteten I/O-Scheduler CFQ (Completely Fair Queuing) ist von einem Zugewinn von 100 auf 150 MByte/s die Rede – anscheinend geht es hier um dasselbe Testsystem. Damit nicht genug: Durch einen dritten Patch [5] stieg das Testergebnis von 150 auf 200 MByte/s. Wie bei solchen Messungen üblich, hängt stark von Umgebungsbedingungen, Benchmark und Testparametern ab, ob es in anderen Situationen überhaupt einen Performance-Gewinn gibt und wie groß dieser ausfällt.

Der BFQ-Entwickler hat viele Messwerte mit der modernen BFQ-Ausführung veröffentlicht.
Der BFQ-Entwickler hat viele Messwerte mit der modernen BFQ-Ausführung veröffentlicht. (Bild: algo.ing.unimo.it/people/paolo/ [6] )

Durch andere Änderungen an BFQ sollen Programme um einiges schneller starten [7], wenn parallel viele Schreiboperationen anliegen. Einige weitere Verbesserungen versprechen die CPU-Belastung zu reduzieren [8]. Details zum Ganzen liefert der LWN.net-Artikel "Improving the performance of the BFQ I/O scheduler" [9], der noch andere Testergebnisse enthält; weitere hat der Hauptentwickler von BFQ auf seiner Homepage veröffentlicht [10].

Was in der Windows-Welt ganz normal ist, kann Ext4 jetzt auch: Die Groß- und Kleinschreibung von Datei- und Verzeichnisnamen ignorieren. Durch diese "Case Insensitivity" wechselt etwa das Bash-Kommando cd Test in ein Verzeichnis, egal, ob es jetzt TEST, test oder tatsächlich Test heißt.

Dieses Verhalten ist standardmäßig inaktiv. Wer es nutzen will, muss es zuerst beim jeweiligen Dateisystem im Superblock freischalten, indem man das Feature-Flag casefold gleich beim Formatieren oder nachträglich mit tune2fs setzt; dazu braucht man aktuelle Fassungen der Ext-Dateisystemwerkzeuge e2fsprogs [14]. Ältere Kernel oder Image-Werkzeuge, die mit dem Flag nichts anzufangen wissen, sollten so ein Dateisystem dann nicht mehr anfassen und somit auch nicht mounten. Ungewiss ist, ob Debian, Fedora, Ubuntu & Co. die Kennzeichnung in Zukunft automatisch setzen.

Das Verhalten muss man ferner beim Hauptverzeichnis oder einem Unterverzeichnis aktivieren, indem man dort mit aktuellen Versionen von chattr das Flag F setzt. Das Verzeichnis muss dazu noch leer sein, damit das Dateisystem dort fortan das Anlegen mehrdeutiger Dateisystemeinträge wie TEST und test unterbinden kann. Die Einstellung vererbt sich, sodass Unterverzeichnisse das Verhalten übernehmen.

Entwickler haben dieses "Casefold Feature"-Feature entwickelt, um es bei Android einzusetzen – bislang nutzt das Mobilbetriebssystem einen eher uneleganten Hack in Form einer "Wrapfs" genannten Zwischenschicht [15], um Case Insensitivity mit Ext4 zu erzielen. Das neue Ext4-Feature ist aber auch bei den Entwicklern von Wine auf Anklang gestoßen – kein Wunder, schließlich kann das eine Reihe von Windows-Programmen unter Linux ausführen, die eben Case Insensitivity erwarten. Die Wine-Macher haben daher in den Test-Entwicklungszweig Wine Staging [16] bei Version 4.10 [17] eine neue Funktion eingebaut [18], um mit dem Casefold Feature einige Tücken rund um die Groß- und Kleinschreibung von Verzeichnis- und Dateinamen zu vermeiden.

Case Insensitivity ist in der Linux-Welt übrigens nichts Neues: Auch beim angesehenen und unter anderem von Red Hat (Root- und Datenpartitionen) und Suse (bei Datenpartitionen) verwendete Dateisystem XFS lässt sich Case Insensitivity seit vielen Jahren beim Formatieren mit dem Parameter -l version=ci [19] aktivieren. XFS ignoriert Groß- und Kleinschreibung aber nur im Bereich der ASCII-Zeichenkodierung – letztlich also nur von A bis Z, was recht simpel und nebenwirkungsfrei zu implementieren ist.

Das Casefold Feature von Ext4 greift hingegen [21] für Normalisierung und Casefolding [22] auf eine UTF-8-Zeichentabelle der Unicode Version 12.1.0 zurück. Sie wurde eigens für die neue Dateisystemfunktion in Linux integriert und ist über 1 MByte schwer (u. a. 1 [23], 2 [24], 3 [25]).

lore.kernel.org
Linus Torvalds hatte sich anfangs deutlich gegen Case-Insensitivity bei Ext4 ausgesprochen. (Bild: lore.kernel.org [26] )

Weitere Details zum neuen Feature und der Verwendung von Unicode-Tabellen im Kernel liefert ein Commit-Kommentar [27], die Dokumentation [28] sowie die LWN.net-Artikel "Filesystems and case-insensitivity [29]" und "Case-insensitive ext4 [30]". Letzterer zeigt auch, dass die Entwickler über die Funktion anfangs gezankt haben. Selbst Linus Torvalds hatte sich zuerst dagegen ausgesprochen und den ganzen Ansatz zuerst mit deutlichen Worten in Frage gestellt [31]: "Himmel! Warum wollen Leute das machen? Wir wissen doch, dass es eine verrückte und beknackte Sache ist. […] Sowas löst echte und subtile Sicherheitslücken aus". Letztlich hat er die Änderung aber ohne Widerworte für 5.2 integriert (1 [32], 2 [33]).

Die Linux-Entwickler haben für Linux 5.2 nicht wie sonst elf- bis dreizehntausend Dateien verändert, sondern über dreißigtausend. Für diesen Rekord sind Thomas Gleixner und einige Mitstreiter verantwortlich, die tausende Lizenzhinweise in Quelltextdateien durch einzeilige Lizenzauszeichner ersetzt haben, die der Spezifikation des SPDX (Software Package Data Exchange) [35] entsprechen. Diese am Dateianfang stehenden "SPDX License Identifier" lauten etwa "GPL-2.0-or-later" oder "GPL-2.0-only" [36]. Compliance-Werkzeuge können diese leicht und unmissverständlich abfragen. Vor allem Unternehmen setzen solche Werkzeuge ein, um sich einen Überblick über die in Produkten verwendeten Software-Lizenzen zu verschaffen, damit sie besser sicherstellen können, die Lizenzen auch einzuhalten.

Die Bestrebungen zur SPDX-Auszeichnung der Quelldateien von Linux begannen bei Linux 4.14 [37] und bekamen bei Linux 4.16 [38] einen ersten Schub. Die jetzt vorgenommenen Änderungen (u. a. 1 [39], 2 [40], 3 [41], 4 [42], 5 [43], 6 [44]) sind ein enormer Schritt vorwärts, durch den jetzt statt zirka 25 rund 70 Prozent der Dateien einen SPDX License Identifier tragen.Die Änderungen nahmen die Entwickler im Wesentlichen mit Skripten vor. Bei den verbliebenen Dateien ist mehr Handarbeit nötig, weil die Skripte die Lizenzen dort nicht zweifelsfrei erkennen können.

Mehr als die Hälfte der Quellcodedateien trägt jetzt eine unmissverständliche Lizenz-Kennzeichnung.
Mehr als siebzig Prozent der Quellcode-Dateien tragen jetzt eine unmissverständliche Lizenz-Kennzeichnung.

Linux kann über die Datei /proc/kheaders.tar.xz jetzt eine Reihe von Entwicklerdateien bereitstellen [46], die man für Kernel-nahe Tätigkeiten gelegentlich braucht – etwa zur Ablaufverfolgung (Tracing) oder zum nachträglichen Kompilieren von Kernel-Modulen. Die Datei mit Header- und Devel-Dateien wird dabei von einem vergleichsweise großen Modul bereitgestellt, das sich bei Bedarf aber laden und später wieder entladen lässt.

Laut dem zuständigen Entwickler ist dieser Ansatz für Android und andere Embedded Systems gedacht: Dort ist es unüblich, diese Entwicklerdateien mit dem Root-Dateisystem auszuliefern, wie es Linux-Distributionen für PCs typischerweise machen. Abzuwarten bleibt, ob Distributoren das neue Feature in ihren Kernel-Images aktivieren werden.

Mithilfe des von Google-Mitarbeitern eingebrachten PSI Monitors (u. a. 1 [48], 2 [49]) können Überwachungsprogramme jetzt innerhalb von Millisekunden und ohne viel Overhead von drohender oder akuter Überlastung erfahren. Solche Tools können früher Maßnahmen ergreifen und notfalls Programme beenden – etwa wenn ein Hintergrundprozess den Arbeitsspeicher übermäßig belastet und so die Desktop-Oberfläche oder ein Vordergrundprogramm spürbar verlangsamt.

Google will das Feature bei Android nutzen. Einige Hintergründe zum Ansatz erläutert der LWN.net-Artikel "Pressure stall monitors" [50]. Die neue Technik erweitert das bei Linux 4.20 [51] integrierten PSI (Pressure-Stall Information), mit dem Administratoren deutlich leichter als bei /proc/loadavgerkennen können, wie stark und wodurch ein System ausgelastet is.

Der Kernel-Grafiktreiber i915 unterstützt jetzt die GPU von Intel-Prozessoren mit dem Codenamen "Ice Lake" [54]. Zu ihr gehören etwa die ersten Core-i-CPUs der zehnten Generation [55], die Intel kürzlich vorgestellt hat und die für flache Notebooks ausgelegt sind. Diese 10-nm-Prozessoren sind die ersten, in denen Intels Grafikprozessor der elften Generation sitzt. Support für solche Gen11-GPUs steckt auch schon in den Vorgängern von Linux 5.2 – er gilt dort aber als unvollständig, daher muss man ihn über den Kernel-Startparameter i915.alpha_support=1 explizit aktivieren. OpenGL- und Vulkan-Treiber für diese Chips bringt das im Juni erwartete Mesa 19.1.

Linux 5.2 unterstützt eine ganze Latte neuer Grafikchips
Linux 5.2 unterstützt die GPUs einiger kürzlich eingeführter oder bald erwarteter Intel-Prozessoren. (Bild: c't-Online-Artikel "Prozessorfahrpläne von AMD und Intel" [56] )

Der neue Kernel unterstützt auch schon die GPUs der noch nicht erhältlichen Intel-Platform "Elkhart Lake (EHL)" [57], die wie Ice Lake eine Gen11-GPU enthält, aber auf Embedded-Prozessoren (Atom) und Billig-CPUs (Atom-Celerons) zielt. Ferner weiß der Kernel jetzt auch den Grafikprozessor von CPUs der "Comet Lake"-Generation [58] inklusive ihres Platform Controller Hubs (PCH) [59] anzusprechen. Auch sie sind noch nicht erhältlich und für Desktop-PCs und leistungsstärkste Notebooks gedacht. Weitere Details zu den Einsatzgebieten von diesen und weiteren jüngst eingeführten oder bald erwarteten Prozessoren liefert der kürzlich auf c't online veröffentlichte Text "Prozessorfahrpläne von AMD und Intel [60]".

Für die verbreiteten ARM-GPUs der Mali-Reihe bringt der Direct Rendering Manager (DRM) des Kernels jetzt die Grafiktreiber Lima [63] und Panfrost [64] mit. Auf ihnen bauen gleichnamige OpenGL-Treiber zur 3D-Beschleunigung auf, die zu den wichtigsten Neuerungen des kürzlich veröffentlichten Mesa 19.1 [65] gehören. Über diese Treiber lässt sich die 3D-Beschleunigung der meisten von ARM entwickelten Mali-GPUs nutzen, die diverse Hersteller in System-on-a-Chip-Bausteinen (SOCs) in Android-Geräten, Chromebooks, Embedded Systems oder Einplatinensystemen (Single Board Computer/SBCs) einsetzen.

Das Duo aus Lima-DRM-Treiber und Lima-OpenGL-Treiber unterstützt dabei "Utgard"-GPUs der Mali-400er-Serie. Das Panfrost-Duo hingegen spricht die neueren Mali-Generationen "Midgard" und "Bifrost" an, die unter den Mali-Modellbezeichnungen T6xx, T7xx, T8xx respektive G3x, G5x, G7x segeln.

Viele Treiber für einen Chip

Die in Linux 5.2 enthaltenen Kernel-Treiber Lima und Panfrost stellen DRM Render Nodes bereit, mit denen die gleichnamigen OpenGL-Treiber von Mesa 19.1 die 3D-Beschleunigung vieler Mali-Kerne nutzen können. Mit der Monitoransteuerung haben Lima und Panfrost allerdings nichts zu tun: Anders als bei x86-PCs sind Display Engine, 3D-Einheiten und Video-Beschleuniger bei SoCs nicht Teil eines mächtigen Grafikchipdesigns; vielmehr kümmern sich separate Komponenten um diese drei Funktionen, die SoC-Hersteller als IP-Cores von einem oder unterschiedlichen Unternehmen zukaufen und kombinieren.

Neben Lima oder Panfrost ist daher ein weiterer Kernel-Treiber für die Display Engine nötig, die den Bildschirm ansteuert (und sich oft abermals aus verschiedenen IP-Cores zusammensetzt). Solche zumeist Kernel-based Mode-setting (KMS) bietenden Treiber gibt es aber für die meisten SoCs mit Mali-GPUs; typischerweise sind sie auch Open-Source-Software und bereits in Linux enthalten. Für Video-Beschleuniger bedarf es ähnlich wie bei 3D eigener Treiber sowohl im Kernel als auch im Userspace.

An der Entwicklung von Lima und Panfrost hat sich ARM nicht beteiligt, obwohl die Firma in nahezu allen anderen Bereichen eigenhändig für ordentliche Linux-Unterstützung ihrer Hardware-Designs sorgt. Die zwei neuen Treiber-Duos entstanden daher weitgehend mithilfe von Reverse Engineering, indem unabhängige Entwickler das Verhalten von Hardware mit anderen, teilweise proprietären Treibern analysiert haben. So konnten sie alle zur Treiberprogrammierung benötigten Informationen zusammenkratzen, denn ARM stellt diese nicht bereit. Durch diesen Entwicklungsansatz beherrschen die beiden Treiber-Duos allerdings nur einen Teil der Funktionen, die die Hardware bietet. Außerdem unterstützen die Treiber längst nicht alle Grafikkerne der erwähnten Serien; Panfrost wurde beispielsweise nur auf den Midgard-GPUs T760 und T860 getestet.

Vermutlich stehen deshalb noch etliche Probleme und Stolpersteine mit den DRM- und OpenGL-Treibern an. Die Aufnahme der Treiber in Linux und Mesa hat erfahrungsgemäß aber starke Signalwirkungen, durch die sich mehr Tester und Entwickler auf die Treiber stürzen – das dürfte der Treiberqualität und dem Umfang der Hardware-Unterstützung einen ordentlichen Schub gehen.

ARM beobachtet die Entwicklung genau und erwägt offenbar, sich zumindest bei den Kernel-Treibern einzubringen. Offenbar gibt es zudem ARM-Entwickler, die das Unternehmen intern drängen, sich stärker zu engagieren. Das zeigt sich etwa im Zeitabschnitt 23:23 bis 28:44 eines Videos [66] einer jüngst abgehaltenen Linaro-Konferenz, wo der angesehene und neuerdings bei ARM arbeitenden Linux-Entwickler Grant Likely einige diesbezügliche Andeutungen macht.

Sie wollen auf ihrem PC das Maximum an Geschwindigkeit herauskitzeln und fürchten sich nicht vor den ganzen Sicherheitslücken moderner Hauptprozessoren, die seit Anfang 2018 publik wurden? Dann starten Sie den Kernel fortan mit dem neuen Parameter mitigations=off, denn der deaktiviert die vielen Schutztechniken, die der Kernel für diese Lücken erhalten hat und standardmäßig nutzt. Wie stark das die Performance steigert, hängt von Prozessor und der eingesetzten Software ab: Die Gegenmaßnahmen machen manche Workloads deutlich langsamer, andere nur minimal.

Linux 5.2 festgeklopft: Neue ARM-Treiber und Case Insensitivity für Ext4-Dateisystem
Über den neuen Kernel-Parameter "mitigations=" kann man Maßnahmen für Prozessorlücken lahmlegen und so die Performance steigern. (Bild: Screenshot der Kernel-Dokumentation [68])

Unterstützung für diesen Parameter wurde in den Hauptentwicklerzweig integriert, als dort im "Merge Window" gerade das Gros der Änderungen für Linux 5.2 zusammengetragen wurde (u. a. 1 [69], 2 [70], 3 [71]). Ein paar Tage später flossen dort auch die Gegenmaßnahmen ein [72], die vor "ZombieLoad" und anderen als MDS [73] (Microarchitectural Data Sampling) klassifizierten Lücken schützen, die im Mai publik wurden.

Diese Schutztechniken und Support für den Mitigations-Parameter wurden aber am selben Abend in die Linux-Versionen 5.1.2, 5.0.16, 4.19.43, 4.9.176 und 4.14.119 zurückportiert. Auch mit vielen Kerneln von Linux-Distributionen funktioniert der Parameter mittlerweile. Er legt neben dem MDS-Schutz unter anderem auch PTI oder Retpoline lahm, die vor Meltdown und Spectre v2 schützen. Bislang musste man jede dieser Gegenmaßnahmen mit einem eigenen Parameter individuell ausschalten. Man sollte diese Möglichkeit aber nur in Umgebungen nutzen, wo keine Gefahr droht oder diese vernachlässigbar klein ist – beispielsweise in einem Hochgeschwindigkeits-Rechenverbund (HPC-Cluster), in dem man nur hausintern erzeugte und vertrauenswürdige Programme ausführt.

Mit dem neuen Parameter kann man die Sicherheit indes auch verbessern: Durch ein mitigations=auto,nosmt deaktiviert Linux falls nötig auch Hyper-Threading, denn das birgt bei einigen Prozessoren und Lücken zuständliches Gefahrenpotenzial. Ein solcher Schritt drückt die Performance aber noch stärker, als es die Gegenmaßnahmen ohnehin schon tun. Nach derzeit gängiger Auffassung ist das für Desktop-Systeme zu viel des Guten. Für Cloud-Provider und einige andere Einsatzgebiete kann das Deaktivieren von Hyper-Threading aber angebracht sein.

Beim XFS-Dateisystem gab es einen größeren Batzen von Neuerungen, die ein Commit-Kommentar nennt [77]. Darunter etwa eine Schnittstelle, über die das Dateisystem jetzt Informationen zum Gesundheitszustand des Dateisystems [78] abliefern kann. Der Code zum Prüfen der Metadaten im Betrieb bleibt experimentell, bietet nach einer Erweiterung [79] aber jetzt alle wesentlichen Funktionen, auf die Oracle-Entwickler Darrick Wong seit einiger Zeit im Rahmen eines größeren Umbaus hinarbeitet.

Auch beim Device Mapper (DM), auf den unter anderem der Logical Volume Manager oder die Datenträgerverschlüsselung mit Cryptsetup/LUKS zurückgreifen, gab es allerlei Änderungen [80]. Eine davon ist ein Bitmap-Mode für Dm-Integrity (1 [81], Dokumentation [82]); diese Device-Mapper-Funktion zur Sicherstellung von Datei-Integrität soll damit eine bessere Performance erzielen als mit dem älteren Ansatz, der ein Journal verwendet. Neu ist das DM-Dust-Target [83], mit dem man zu Testzwecken das Verhalten eines gealterten Datenträgers simulieren kann, der defekte Sektoren aufweist.

Das beim Zugriff auf SMB-Freigaben von Samba- oder Windows-Servern verwendete CIFS beherrscht jetzt [84] die lseek()-Flags SEEK_DATA und SEEK_HOLE. Auch das Overlay-Dateisystem (OVL) unterstützt sie jetzt [85]. Diese Funktionen sind unter anderem zur effizienteren Handhabung von Images virtueller Maschinen interessant, denn Anwendungen können darüber Speicherbereiche in Dateien effizienter handhaben, die lediglich Nullen enthalten.

Unter den Änderungen an CEPH [86] ist Unterstützung [87] für den bei Linux 4.11 [88] eingeführten Systemfunktionsaufruf statx(), der eine umfassendere und effizientere Abfrage von Datei- oder Verzeichniseigenschaften ermöglicht. Außerdem kann es jetzt NFS-Snapshots re-exportieren [89].

Beim ursprünglich für simple Flash-Datenträger gedachten F2FS-Dateisystem haben die Entwickler unter anderem den Support für Festplatten verbessert [90], die mit Shingled Magnetic Recording (SMR) arbeiten; bei solchen gibt es größere, Zonen genannte Bereiche, die immer sequenziell gefüllt werden müssen.

Das bei Linux 5.1 [91] eingeführte, dort aber allenfalls intern verwendete Programmier-Interface zum Einhängen von Dateisystemen lässt sich bei 5.2 jetzt auch von Userspace-Programmen verwenden (u. a. 1 [92], 2 [93], 3 [94], 4 [95], 5 [96]). Der zuständige Entwickler will mit diesen neuen Mount-APIs eine Reihe von Problemen der bisherigen Schnittstelle aus der Welt schaffen [97].

Weitere Neuerungen nennen die wichtigsten Git-Commits der Bereiche AFS [98], Btrfs [99], Block-Layer (1 [100], 2 [101]), CIFS (1 [102], 2 [103]), Fuse [104], GFS [105], IO-Uring [106], MTD [107], NFS [108], NFSd [109], Orangefs [110], SCSI [111] und Ubifs [112].

Eigentlich nur für Nostalgiker interessant ist eine Detailänderung, die im Internet aber viel Aufsehen erregte: Zwei Linux-Entwickler haben angekündigt, 2021 die Infrastruktur und die Treiber entfernen zu wollen [114], die via Parallel-ATA (auch PATA beziehungsweise IDE/Integrated Drive Electronics genannt) angesprochene Datenträger über Gerätenamen wie /dev/hda oder /dev/hdc bereitstellen.

PATA-Datenträger über diesen Code und solche Gerätenamen anzusprechen war in der Anfangszeit von Linux Usus. Mit dem Aufkommen von Serial ATA erhielt der Kernel aber eine modernere Infrastruktur samt neuer Treiber zum Austausch mit ATA-Datenträgern, die Linux dann unter Block-Devices wie /dev/sda, /dev/sdb, usw. bereitstellt. Dieses Libata genannte Subsystem erhielt wenig später auch alles Nötige, um gängige PATA-Chips anzusprechen. Damit hat Libata die ältere, oft schlicht "IDE-Treiber" genannte Infrastruktur schnell zurückgedrängt, sodass moderne Systeme auch PATA-Datenträger über /dev/sd? ansprechen.

Die Entwickler vermuten daher, dass kaum noch jemand die ältere Infrastruktur bei aktuellen Kernel-Versionen nutzt. Sofern niemand Einspruch erhebt, wollen sie den zuständigen Code entfernen, um die Wartung zu vereinfachen. Da die Parallel-ATA-Treiber auf Libata-Basis im Kernel bleiben, hat dieser Schritt für die meisten Anwender keinerlei Bedeutung.

Bei Linux kann man jetzt IPv6-Gateways in IPv4-Routen [117] definieren; damit kann man jetzt einen Weg zu einem IPv4-Netz festlegen [118], das über ein IPv6-System erreichbar ist.

Einen Performance-Zuwachs auf Systemen mit vielen CPU-Kernen versprechen einige Locking-Optimierungen am Cache für empfangene und versendete Pakete [119]; ein Benchmark mit Remote Procedure Calls (RPCs) legte dadurch laut Entwickler um zehn Prozent zu.

Der neue Kernel verspricht kleinere Performance-Verbesserungen bei der Steuerung des Netzwerkverkehrs via tc (Traffic Control), denn die Entwickler haben auch die Locking-Mechanismen beim Flow Classifier optimiert, der Datenströme klassifiziert [120].

Einige weitere Neuerungen am Netzwerkcode nennt der Kommentar des Git-Merge [121], der das Gros der Änderungen enthält, die für 5.2 in diesem Bereich vorgenommen wurden.

ISDN4Linux (I4L) soll bei 5.3 rausfliegen; auch der Capi-Stack steht auf der Abschnussliste.
ISDN4Linux (I4L) soll bei 5.3 rausfliegen; auch der Capi-Stack steht auf der Abschussliste.

Bei Linux 5.3 soll es viel Code für ISDN-Hardware an den Kragen gehen [123], nachdem die meisten öffentlichen ISDN-Netzwerke laut den Linux-Entwicklern mittlerweile abgeschaltet wurden. Der alte ISDN4Linux-Stack [124] samt seinem früher recht bekannten Hisax-Treiber [125] soll komplett rausfliegen. Der jüngere CAPI-Stack wandert in den Staging-Zweig [126] – der ist als Bereich für Code mit bekannten Qualitätsmängeln gestartet, dient dieser Tage aber gelegentlich auch als Vorstufe für Code, den die Entwickler entfernen wollen. Bisher wollten sie den Capi-Stack nicht absägen, da unklar ist, ob noch jemand diesen Code und seine Treiber mit aktuellen Kerneln nutzt; wer das tut, sollte sich daher baldmöglichst bei den Entwicklern melden, um den Rauswurf vielleicht abzuwenden.

Im Kernel verbleiben soll hingegen der mISDN-Stack, der die meiste Hardware unterstützt, die auch Hisax anspricht; das ist auch der Stack, auf dem die Telefonanlagen- und VoIP-Software Asterisk aufbaut.

Einige weitere Neuerungen rund um Sicherheit nennen die Git-Commit-Kommentare der Subsysteme Audit [127], Crypto [128], Random [129], SELinux [130], Tomoyo [131]. Vermutlich kurz nach Erscheinen von Linux 5.2 dürfte Linux-Entwickler Kees Cook auch wieder einen Beitrag in seinem Blog veröffentlichen [132], in dem er regelmäßig einen Überblick zu Sicherheitsverbesserungen neuer Kernel-Versionen liefert. Zuletzt etwa für Linux 5.1 [133]. Dort hat er beispielsweise Arbeiten erwähnt [134], um switch nutzenden Programmcode aufzuräumen, damit der nach einem case-Abschnitt nicht versehentlich auch den folgenden ausführt, weil der Entwickler das Case-Ende-Zeichen vergessen hat. Bei den Aufräumarbeiten zur Vermeidung solcher "implicit fall-through"-Fälle haben die Entwickler schon eine Reihe von Bugs gefunden. Bei 5.2 gab es nochmal deutliche Fortschritte [135], wodurch die Entwickler jetzt fast alle derartigen Stellen im Kernel-Code tilgen konnten.

Mit Intels Scalable I/O Virtualization soll sich Hardware kleinteiliger an VMs oder Container überstellen lassen.
Mit Intels Scalable I/O Virtualization soll sich Hardware kleinteiliger an VMs oder Container überstellen lassen. (Bild: Vortragsfolien [137] )

Die IOMMU-Infrastruktur des Linux-Kernels bietet jetzt "AUX domain support" und unterstützt damit Intels Scalable I/O Virtualization – eine Technik, mit der sich Funktionen von Hardwarekomponenten unter die Kontrolle von virtuellen Maschinen (VMs), Containern oder Prozessen stellen lassen, ohne die Sicherheit des Systems zu gefährden (u. a. 1 [138], 2 [139], 3 [140], 4 [141], 5 [142], 6 [143]). Auf diese Weise kann der Kernel etwa virtuelle, vom Netzwerkchip bereitgestellte virtuelle Netzwerkschnittstellen zur freien Verfügung an VMs oder Container überstellen. Für derlei wird bislang meist Single Root I/O Virtualization (SR-IOV) genutzt, das allerdings mehr Overhead hat und unter anderem dadurch nicht hunderte oder gar tausende Sub-Funktionen exportieren kann, wie es heutige hoch-skalierbare Systeme manchmal erfordern. Details zur mit VT-d 3.0 spezifizierten Scalable I/O Virtualization liefern ein Blog-Beitrag [144] und einige Vortragsfolien [145] von Intel-Mitarbeitern. Wie bei SR-IOV muss die Hardware aber auch für Scalable I/O Virtualization ausgelegt sein.

Beim Erzeugen eines neuen Prozesses über den Systemaufruf clone() können Programme mit dem neuen Syscall-Flag CLONE_PIDFD [146] jetzt gleich den seit Linux 5.1 [147] unterstützten PID File Descriptor (PIDFD) erhalten, der auf den neu erstellten Prozess verweist. Die neue Funktion ist unter anderem für System-Management-Werkzeuge gedacht, die mit diesem File Descriptor [148] hundertprozentig sicher gehen können, dass sie später an diesen Prozess gesendete Signale nicht versehentlich an einen anderen, vollkommen unbeteiligten Prozess schicken. Details zu dem Feature, das die Android- und Systemd-Entwickler nutzen wollen, erläutert der LWN.net-Artikel "Rethinking race-free process signaling" [149].

Die zweite Generation der Control Groups (Cgroups v2) bringt nun auch einen Controller mit, um Prozesse vorübergehend einzufrieren – etwa um derweil in Ruhe einige Ressourcen für den Weiterbetrieb frei schaufeln zu können, falls Überlastung droht. Dieser Freezer ist einer der letzten Controller, die zum kompletten Umstieg auf Cgroup v2 noch fehlten. Im Commit-Kommentar [150] und der Dokumentation [151] weist der zuständige Entwickler indes darauf hin, dass der neue Freezer Controller etwas anders vorgeht als der ältere.

Wie bei jeder neuen Kernel-Version haben die Kernel-Entwickler zahlreiche Optimierungen vorgenommen – die sorgen bei bestimmten Umgebungsbedingungen manchmal für einen größeren Geschwindigkeitsgewinn, können bei anderen Systemen aber nur geringen oder gar keinen Einfluss auf die Performance haben. Unter diesen Optimierungen sind etwa Umbauten am Code zur Speicherplatz-Anforderung via Vmalloc, die Latenzen reduziert und dadurch die Performance deutlich verbessern kann. Durch diese "Improve Vmap Allocation" genannten Änderungen [153] konnte der zuständige Entwickler ein Testprogramm in viereinhalb Minuten ausführen, das auf seinem Einplatinencomputer mit ARM64-Prozessor zuvor nach 24 Stunden noch nicht fertig war.

Eine effizientere Nutzung der Prozessor-Caches verspricht die Patch-Serie "Randomize free memory" [154]. Laut dem Entwickler wirkt sich das in vielen Tests nicht sonderlich aus, führt in bestimmte Szenarien aber zu enormen Performance-Gewinnen.

Der Kernel kann jetzt die mit GCC 9 eingeführte Option -flive-patching nutzen, um Optimierungen zu umgehen, die Kernel Live Patching (KLP) verkomplizieren. Laut den Entwicklern schnitten einige Scheduler-Benchmarks durch die neue Option allerdings ein bis drei Prozent schlechter ab [155].

Unter den wie üblich zahlreichen Änderungen an Infrastruktur und Werkzeugen zum Performance Monitoring mit perf [156] war Support für Adaptive PEBSv4 (Precise Event-Based Sampling) [157], das Intel in neue CPUs verbaut und den Overhead bei Geschwindigkeitsanalysen erheblich reduzieren kann. Ebenfalls neu: Die Perf-Record-Option --mmap-flush=<number> [158], Unterstützung zur Kompression mit Zstandard (Zstd) [159] sowie Support für Intels-CPUs der Generationen Tremont [160] und Ice Lake [161].

Für Entwickler wichtig: Die Kernel-Macher haben das mmiowb() genannte Macro für Memory-Mapped I/O (MMIO) entfernt [162], das allerlei Tücken hatte, die LWN.net im Artikel "Memory-mapped I/O without mysterious macros" [163] erläutert.

Neu dabei ist auch ein Dokument, das einige Performance-Aspekte bei Arbeitsspeicherzugriffen in NUMA-Systemen näher erläutert [164]. Ferner gab es einen ganzen Schwung Änderungen (u. a. 1 [165], 2 [166], 3 [167]), um den Support für Heterogenous Memory Management (HMM) zu verbessern – die in Linux 4.14 [168] integrierte Infrastruktur, die die effiziente Nutzung von Zusatzprozessoren wie Crypto-Beschleunigern oder GPUs erleichtert, denen eigener Arbeitsspeicher zur Seite steht.

Die Kommentare der Git-Merges zahlreicher Subsysteme nennen einige weitere wichtige Änderungen – etwa in dem Bereichen ACPI [169], Dokumentation (1 [170], 2 [171]), Cgroup [172], EFI [173], Ftrace [174], Iommu [175], Kbuild (1 [176], 2 [177]), Kgdb [178], Ktest [179], Kselftest (1 [180], 2 [181]), Locking Core [182], Livepatching [183], Objtool [184], PCI [185], Percpu [186], Pidfd [187], Power Management [188], Printk [189], RCU Core [190], Scheduler [191], SMP Hotplung [192], Thermal [193] und VFIO [194].

Dank eines I2C-Treiber laufen zahlreiche Ryzen-Notebooks mit Linux 5.2 deutlich besser.
Dank eines I2C-Treibers laufen zahlreiche Ryzen-Notebooks mit Linux 5.2 deutlich besser.

Linux 5.2 unterstützt viele Notebooks mit AMD-Ryzen-Prozessoren jetzt besser, etwa das Dell Latitude 5495 oder die Lenovo-Modelle Yoga 530 und Ideapad 530s. Das ist der Aufnahme eines Treibers für AMDs MP2 I2C Controller [195] zu verdanken, denn nur mit einem solchen kann Linux die per I2C angebundenen Touchpads und Touchscreens dieser Notebooks ansprechen.

Apropos AMD: Mit Linux 5.2 können Geräte, die am wichtigsten Kommunikationsbus moderner AMD Prozessoren hängen, direkt Daten austauschen, ohne der CPU sonderlich Arbeit zu machen. Das kann die Performance steigern, denn dieser Peer-to-Peer Direct Memory Access (PCI/P2PDMA) zwischen PCIe-Geräten am Zen Root Complex [196] vermeidet Overhead. Ebenfalls neu: Unterstützung für die zweite Generation der ZEN-Prozessorarchitektur im Treiber für EDAC (Error Detection And Correction) [197].

Unter den Änderungen am Audio-Support [198] waren Infrastruktur und Treiber zur Unterstützung von Sound Open Firmware [199] (SOF) (u. a. 1 [200], 2 [201], 3 [202], 4 [203], 5 [204], 6 [205]). Dabei handelt es sich um eine Firmware, die den für die Audio-Ausgabe zuständigen Digital Signal Processor (DSP) antreibt. Solche ist bislang meist proprietär; um das zu ändern, haben Intel und Google das SOF-Projekt [206] im Frühjahr 2018 unter dem Dach der Linux Foundation initiiert [207]. Als Startkapital steuerte Intel eine zuvor proprietäre Firmware für die DSP seiner modernen Prozessor-Plattformen bei und die beiden riefen andere Hersteller auf, bei dem Projekt mitzumachen. Die jetzt beigesteuerten Treiber steuern SOF-taugliche Chips von Intel und Xtensa an.

Eine kleine Änderung an der Stromspartechnik-Konfiguration des Treibers für Realtek-HD-Audio-Codecs [208] verspricht zudem Hintergrundrauschen und Knackgeräusche zu beseitigen [209], die auf einer Reihe von Geräten auftreten.

Über den neuen Treiber Mt76 [210] unterstützt Linux jetzt auch die 4×4-802.11ac-WLAN-Chips der Mediatek-Reihe MT7615.

Neu dabei ist auch der Treiber Rtw88, der die von Realtek gefertigten 802.11ac-WLAN-Chips RTL8822BE und RTL8822CE anspricht. Beides sind PCIe-Chips; Unterstützung für damit verwandte, aber per USB und SDIO angebundene Chips mit den gleichen Nummern in der Modellbezeichnung fehlt, soll aber bald folgen. Das gilt auch für Patches, die viele andere im Commit-Kommentar erwähnte Funktionslücken und Schwächen [211] beseitigen sollen, die der von Realtek-Entwicklern beigesteuerte Treiber noch aufweist.

Dass der neue Treiber in einem noch unfertigen Zustand aufgenommen wurde, ist bei Linux nicht ungewöhnlich: Auch ein Basistreiber mit vielen fehlenden Features ist für manche Nutzer schon eine große Hilfe. Außerdem ist der Codeumfang dadurch kleiner, was den Kernel-Entwicklern die initiale Begutachtung erleichtert. Das ist gerade bei Treibern von unerfahrenen Linux-Entwicklern wichtig, denn dadurch sind Umbauten leichter, wenn bei so einem "Review" größere Probleme auftauchen. Zudem sind dann auch später folgende Änderungen leichter zu begutachten, die nach und nach Funktionslücken beseitigen.

Ein wenig ungewöhnlich ist indes, das ein Staging-Treiber für eben diese Realtek-Chips bereits rausgeworfen wurde [212]: Der hat zwar viele bekannte Mängel, wäre für den ein oder anderen Nutzer aber womöglich vorerst die bessere Wahl gewesen.

Der neue Kernel unterstützt einige drahtlose Logitech-Mäuse und -Tastaturen (etwa die Modelle MX3000 und MX5000) von jetzt besser; das ist einigen Änderungen (u. a. 1 [213], 2 [214], 3 [215], 4 [216]) von Hans de Goede zu verdanken, der in seinem Blog weitere Hintergründe zum Umbau liefert [217].

Neu dabei sind ein Treiber für das Macally Ikey Keyboard [218], eine Firmware-Update-Interface für den Intel Integrated Sensor Hub (ISH) [219] und eine Erweiterung, um die Funktionstasten-Sperr-Taste (FN-Lock) neuerer Asus-Notebooks zu unterstützen [220]. Der in Linux vorhandene Code für ChromeOS-Geräte enthält jetzt auch einen Logging-Treiber fürs Laden via USB Power Delivery (PD) [221].

Linux bringt jetzt auch einen Treiber [222] für den U2F Zero – ein USB-Token für die Zweifaktor-Authentifizierung [223]. Laut Beschreibung kann der Treiber aber anscheinend bislang nur die LED blinken lassen und den Zufallsdatengenerator als weitere Entropiequelle einbinden.

Das USB-Type-C-Subsystem unterstützt dank eines neuen Treibers jetzt den VirtualLink bei GeForce-Karten [224], die eine solche USB-C-Buchse zur Anbindung von VR-Brillen bieten.

Ferner kann das Typ-C-Subsystem nun auch USB Alternate Modes konfigurieren [225] und damit etwa Display-Port-Tunnel einrichten [226]; darüber lässt sich ein Bildschirm mit einem Kabel anbinden, über das USB- und DisplayPort-Daten laufen. Dieser Code ist vornehmlich für Embedded-Systeme gedacht, denn bei PCs kümmert sich meist die Firmware um die grundlegende Einrichtung von Alternate Modes.

Die Thunderbolt-Treiber unterstützen jetzt ältere Apple-Systeme besser [227], die Thunderbolt-Controller der ersten und zweiten Generation nutzen; dadurch funktionieren dort jetzt Funktionen wie Display-Port-Tunneling, PCIe Daisy Chains und Peer-to-Peer-Netzwerke, denn Linux beherrscht alles Nötige, um derlei bei solchen Systemen selbst zu konfigurieren. Bei den meisten PCs und neueren Macs ging all das schon länger, denn dort kümmert sich meist die Firmware um die grundlegende Einrichtung dieser Dinge.

Die Kernel-Entwickler haben ferner den Cirrus-Treiber generalüberholt [228], der vergleichsweise simple Grafikchips anspricht, die das oft mit KVM und Xen kombinierte Qemu emulieren kann. Der Treiber konnte dadurch um 70 Prozent schrumpfen, da er jetzt auf viel Basisinfrastruktur des Kernels aufbaut, die in den letzten Jahren für Grafiktreiber geschaffen wurde. Dadurch lernt er zugleich einige für moderne Systeme wichtige Funktionen wie Wayland-Support.

Der Grafiktreiber für den normalerweise von VirtualBox emulierten Grafikchip hat den Staging-Bereich verlassen [229] und ist somit fortan ein regulär gepflegter Treiber. Das ist etwa für Distributionen wichtig, die Code des Staging-Bereichs meiden, weil für ihn Sonderregeln gelten. Dort liegende Treiber erfüllen etwa die normalen Qualitätsansprüche der Linux-Entwickler nicht und können ohne Vorwarnung verschwinden, weil die sonst von Torvalds hochgehaltene Prämisse "keine Regressionen" dort allenfalls eingeschränkt gilt. Während der Zeit im Staging-Bereich wurde der früher extern gewartete Vboxvideo-Treiber enorm verbessert und schrumpfte dabei zugleich erheblich, denn wie der Cirrus-Treiber setzt auch der VirtualBox-Treiber jetzt auf Basisinfrastruktur für Grafiktreiber auf. Durch sie hat er auch an Funktionsumfang zugelegt und beherrscht moderne Features wie das seit Linux 4.12 [230] verstärkt genutzte Atomic Modesetting.

Neu dabei ist der Grafiktreiber Aspeed [231], der für Linux-Distributionen gedacht ist, die auf dem Aspeed AST2500 laufen. Dabei handelt es sich um einen als Fernwartungs/Sytemmanagement-Controller (Baseboard Management Controller/BMC) arbeitenden SoC (System on Chip), der häufiger auf modernen Serverboards steckt. Der Treiber ist nicht zu verwechseln mit dem schon länger in Linux enthaltenen Grafiktreiber Ast, mit dem der Host ein PCI-Device ansprechen kann, was dieser SoC bereitstellt.

Auch dabei: Änderungen an der Basisinfrastruktur [232] und dem Intel-i915-Treiber [233], durch die sich der Farbraum jetzt bei jedem Monitoranschluss separat festlegen lässt. Bei Mehrschirmsystemen können Userspace-Anwendungen [234] bei den Monitoren individuell auf Colorspaces wie 601, 709 oder BT2020 umschalten, um so die Darstellungsqualität mit dem erweiterten Farbraum zu verbessern – beispielsweise, wenn ein Video in einem solchen Format encodiert wurde und auf einem Monitor im Vollbild wiedergegeben wird.

Das ist auch für die Linux-Unterstützung zur Ausgabe mit High Dynamic Range (HDR) relevant, an der Intel-Entwickler seit einer Weile arbeiten; einige Grundlagen hierzu sollen in Linux 5.3 einfließen [235]. Bei dieser Version wollen die Entwickler auch Patches nachrüsten, um das eLLC genannte Embedded DRAM (eDRAM) der stärkeren Intel-GPUs seit der Skylake-Generation als Cache nutzen zu können, was die Performance verbessert.

Die im Text erwähnten Neuerungen sind nur die sprichwörtliche Spitze des Eisbergs, denn allein bei den AMD- und Intel-Treiber gab es noch zahlreiche weitere Änderungen.
Die im Text erwähnten Neuerungen sind nur die sprichwörtliche Spitze des Eisbergs, denn allein bei den AMD- und Intel-Treibern gab es zahlreiche weitere Änderungen. (Bild: git.kernel.org – a2d635decbfa [239] )

Der Kommentar des Git-Commit mit dem Gros an Grafiktreiberänderungen [240] nennt noch eine ganze Reihe weiterer Neuerungen rund um den Direct Rendering Manager (DRM) des Kernels und den darauf aufbauenden Grafiktreiber. Durch eine der Änderungen kann man jetzt etwa alte, vermutlich von aktuellen Userspace-Grafiktreiber kaum noch genutzte, Programmierschnittstellen lahmlegen, wodurch das Modul mit den DRM-Kernfunktionen um zehn Prozent kleiner ausfällt [241].

Der Nouveau-Treiber, der moderne Nvidia-Chips unterstützt, weiß jetzt auch die TU117-GPUs anzusprechen [242], die etwa bei der GeForce GTX 1650 im Einsatz sind.

Beim für moderne Radeon-GPUs zuständigen Treiber Amdgpu gab es allerlei Feintuning am Freesync-Support, der bei Linux 5.0 [243] zum Kernel stieß und durch dynamische Anpassung der Bildwiederholrate (Variable Refresh Rate/VRR) für flüssige 3D-Darstellung sorgt. Vega-12 und Vega-20-Chips dürften dank besserem Support für BACO (Bus Active, Chip Off) [244] sparsamer laufen. Neu dabei ist experimenteller und standardmäßig inaktiver Treibercode für die elfte Generation von AMDs System Management Unit (SMU), die Taktfrequenzen, Spannungen, Power Management, Lüfterregelung und einiges andere steuert. Dieser noch junge Treibercode, der nur die SMU von Vega20-GPUs unterstützt, soll den PowerPlay-Code ersetzen, der bislang solche Aufgaben regelt. Das sind Vorarbeiten zur Unterstützung der neuen Grafikprozessor-Generation "Navi", die AMD am 7. Juli mit der Radeon RX 5700 und 5700 XT [245] vorgetellt hat. Derzeit deutet einiges darauf hin, dass die Unterstützung für diese Grafikprozessoren in das Mitte September erwartete Linux 5.3 einziehen wird (u. a. 1 [246], 2 [247]). Bis dahin dürfte dann auch Mesa 19.2 mitsamt einem deutlich erweiterten OpenGL-Treiber [248] und einem verbesserten Vulkan-Treiber Radv erhätlich sein, die auf den DRM-Treiber von Linux 5.3 aufbauen und eine Nutzung der 3D-Beschleunigung von Navi-GPUs ermöglichen werden.

Erstmals im Lieferumfang ist auch das Generic Counter Interface, mit dem sich einige im Industrieumfeld gelegentlich eingesetzte Zähler-Hardware ansprechen lässt (u. a. 1 [249], 2 [250]).

Ebenfalls für den Industrieeinsatz von Interesse: Unterstützung für die Fieldbus genannte Familie von Kommunikationsprotokollen [251] sowie die darauf aufbauenden Treiber für HMS Anybus-S Bus [252] und HMS Profinet IRT [253]. Der Fieldbus-Support hat aber Mängel und ist im Staging-Bereich gelandet. Dort gelten die Garantien nicht, die es sonst für Kernel-Code gibt, daher sind Regressionen dort nicht tabu – im dümmsten Fall kann es daher sogar passieren, dass der Code in ein paar Monaten oder Jahren wieder rausfliegt, obowhl er Nutzer hat.

Durch die erwähnten und zahlreiche weitere Änderungen unterstützt Linux 5.2 über 450 Geräte oder Geräteklassen mehr als sein Vorgänger; bei knapp hundert davon handelt es sich um PCI/PCIe-Geräte, wie die Datenbanken der Linux Kernel Driver DataBase (LKDDb) [255] zeigen. Details zu diesen und zahlreichen weiteren Neuerungen rund um Treiber finden sich in den Kommentaren der wichtigsten Git-Merges in den Subsystemen Char [256], Driver-Core [257], Fbdev [258], HID [259], Hwmon [260], Input [261], LEDs [262], Media [263], Platform Chrome [264], Platform x86 [265], RDMA [266], Staging [267], USB [268] und Watchdog [269].

Über Dateien unter Pfaden wie /sys/devices/system/cpu/cpu0/power/energy_perf_bias kann man jetzt den Intel Energy and Performance Bias Hint (EPB) abfragen und setzen [272]. Dieser Wert beeinflusst bei EBP-tauglichen Prozessoren [273], ob der Prozessor im Zweifel zu bestmöglicher Performance oder möglichst geringem Stromverbrauch tendiert, wenn er die Betriebsgeschwindigkeit wählt. Diese Entscheidung der CPU zu überlassen ist für PC-Prozessoren die typischerweise beste Herangehensweise, denn die früher übliche Steuerung über Userspace-Programme ist zu träge und hat nicht so viel EInblick in CPU-Interna.

Linux 5.2 bringt Unterstützung für weitere SOC-Prozessoren und zahlreiche Einplatinencomputer.
Linux 5.2 bringt Unterstützung für weitere SoC-Prozessoren und zahlreiche Einplatinencomputer. (Bild: git.kernel.org – e8a1d7011711 [276] )

Auch beim Support für CPU-Architekturen und SOCs (System-on-a-Chip) gab es allerlei Neuerungen, durch die der Kernel nun etwa den i.MX8M Mini [277] oder Intel's Agilex SoCFPGA Platform [278] anzusprechen weiß. Eine Optimierung am Code zum Restaurieren des Status von Gleitkommaeinheiten (Floating-Point Units/FPUs) von x86-Prozessoren [279] verspricht zudem die Performance zu verbessern, denn das passiert nach Möglichkeit jetzt nicht mehr bei jedem Context Switch, sondern nur beim Wechsel zurück zu Userspace. Eine Detailoptimierung am Support für Microsofts Hyper-V kann in manchen Situationen nun zu einem kleinen Performance-Gewinn führen.

Unter den jetzt unterstützten Single-Board-Computern sind unter anderem der FriendlyElec NanoPi NEO4 [280], das Nvidia Jetson Nano Developer Kit [281], Orange Pi RK3399 Board [282], Zii Ultra akka RDU3 [283]. Weitere Änderungen aus den Bereichen Architektur, SOCs und Virtualisierung nennen die Git-Merges zu Bereichen wie ARM-SOC [284], ARM-SOC-Drivers [285], ARM-SOC-DT [286], ARM64 [287], Csky [288], ARM [289], KVM [290], M68K [291], MIPS [292], Parisc [293], Powerpc [294], RISC-V [295], S390 (1 [296], 2 [297]), Sparc [298], x86 (IRQ [299], Kdump [300], Microcode [301], MM [302], Platform [303], Topology [304]) und Xtensa [305]

Wie jüngst üblich bringt auch Linux 5.2 wieder einen ganzen Schwung an Verbesserungen rund um die BPF Virtual Machine, auf die mittlerweile zahlreiche Subsysteme des Kernels für verschiedenste Aufgaben zurückgreifen – allen voran für Performance-Analysen, die Ablaufverfolgung (Tracing), das Seccomp-Sandboxing und den Netzwerk-Schnellverarbeitungspfad eXpress Data Patch (XDP).

Für Performance-Analysen, Ablaufverfolgung oder Debugging wichtige Daten wie Header lassen sich jetzt nicht mehr nur im etablierten DWARF-Format hinterlegen, sondern auch mit [307] dem bei Linux 4.18 eingeführten BPF Type Format (BTF) [308]. Hauptvorteil des neuen Ansatzes ist geringerer Speicherbedarf: Zum Hinterlegen der C-Typen eines Kernel-Images (vmlinux) soll BTF zehnmal weniger Speicherkapazität benötigen. Das gelingt unter anderem durch Deduplizierung, mit dem der Platzbedarf bei anderen Einsatzzwecken sogar um hundertmal kleiner ausfällt als beim verbreiteten DWARF.

Das soll weitere Einsatzgebiete ermöglichen, denn durch den geringeren Overhead wird es für Distributoren attraktiver, diese Daten in Kernel und Modulen zu belassen, statt sie auszulagern oder komplett zu ignorieren. Ein Linux-Image wird dann selbstbeschreibend ("self-descriptive"). Das ist etwa interessant, damit Tracing-Programme wie perf, bpftrace oder bc alle für ihre Tätigkeiten nötigen Informationen auf jedem System vorfinden und leicht zur Hand haben. Bislang muss man dazu meist Debuginfo-Pakete nachinstallieren, falls der Distributor denn an dieses Nutzungsszenario gedacht hat und solche denn auch bereitstellt.

Durch den neuen Support für "Global Data" in BPF [310] beherrschen BPF-Programme jetzt globale Variablen, wie sie C bietet. Hauptziel der Erweiterung: Ein Programm-Binary nachträglich anpassen zu können, damit man BPF-Programme nicht immer wieder neu kompilieren muss, wenn sich ein Konfigurationsdetail ändert.

Bislang muss man BPF-Programme nämlich oft genau für den jeweiligen Einsatzzweck übersetzen, denn bei BPF-Programmen zur Handhabung von Netzwerkpaketen werden beispielsweise Daten wie IP- oder MAC-Adressen im Code definiert. Durch Global-Data-Support lassen sich solche Variablen jetzt nachträglich in der Binärdatei ändern [311]. Ein einmal kompiliertes Programm kann so als "Template Binary" fungieren, das Entwickler oder Werkzeuge wie die Container-Netzwerksoftware Cilium [312] nachträglich verändern, wenn das Programm später andere IP- oder MAC-Adressen nutzen soll.

Das Ganze gelingt mithilfe des bereits erwähnten BTF, mit dem die globalen Daten im Kompilat hinterlegt werden. Solche "compile-once"-Programmvorlagen ermöglichen schneller einsatzbereite BPF-Programme, da man diese nicht mehr ad-hoc individuell kompilieren muss; neben Zeit spart das Ganze somit auch CPU-Ressourcen und funktioniert auch auf Systemen ohne Compiler.

Der BPF Verifier, der von der BPF Virtual Machine ausgeführten Code vor der Ausführung überprüft, akzeptiert jetzt komplexeren Code: Bislang durfte ein Programm 4096 Instruktionen aufweisen und bei der Ablaufsimulation maximal 130.000 Instruktionen ausführen (etwa durch If-Verzweigungen). Jetzt ist in beiden Fällen bei 1.000.000 Instruktionen Schluss. Das alte Limit konnte angehoben werden, weil die Entwickler einige "BPF Verifier Scalability" genannte Optimierungen [313] vorgenommen haben, die die Prüfung um ungefähr das Zwanzigfache beschleunigen.

Darüber hinaus gab es noch allerlei andere Umbauten an oder rund um die BPF Virtual Machine (u. a. 1 [314], 2 [315], 3 [316], 4 [317], 5 [318]). Unter denen ist beispielsweise auch noch das BPF SK Local Storage [319], das die Netzwerkprogrammierung mit BPF erleichtern soll, oder der TCP-Syncookie-Check [320], der die Programmierung von Loadbalancern in der Art von Glb-Director [321] oder Beamer [322] mittels BPF ermöglichen soll.

Support für die viel Aufsehen erregende VPN-Technik WireGuard fehlt Linux 5.2 – kein Wunder, denn bei den Integrationsbemühungen gab es jüngst so gut wie keine Fortschritte. Berichten zufolge sollen diese jetzt aber wieder verstärkt werden, nachdem die Entwickler der VPN-Technik im Mai eine Pre-Alpha-Version von WireGuard für Windows [323] veröffentlicht haben. Dass der Wireguard-Support in Linux 5.3 einzieht, scheint allerdings äußerst unwahrscheinlich: Zur Freigabe von Linux 5.2 sollten alle größeren Änderungen für 5.3 bereits begutachtet sein, was nicht der Fall ist.

Mit der Freigabe von Linux 5.2 [325] beginnt zugleich die "Merge Window" genannte Phase, in der Linus Torvalds das Gros der Änderungen für den Nachfolger integriert. In den nächsten Tagen fließen daher viele tausend Änderungen in den Hauptentwicklungszweig von Linux ein, die Entwickler in den letzten Wochen zur Aufnahme in 5.3 vorbereitet und gesammelt haben.

Linus Torvalds beendet das Merge Window typischerweise nach zwei Wochen, indem er die erste Vorabversion einer neuen Kernel-Version veröffentlicht. Das läutet zugleich die Stabilisierungsphase ein, die derzeit fast immer sieben oder acht Wochen dauert. Linux 5.3 erscheint daher wahrscheinlich am 9. oder 16. September.

Kernel-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(Ohne
Doku)²
Entwick-
lungs-
zeitraum
Commits
(Ohne
Merges)³
Diffstat⁴
Linux 4.14 [327] 61.290 25.041.284
(23.050.486)
70 Tage 14.659
(13.452)
23.388 files changed,
719.862 insertions(+),
445.585 deletions(-)
Linux 4.15 [328] 62.303 25.364.802
(23.329.451)
77 Tage 16.223
(14.866)
13.265 files changed,
643.912 insertions(+),
320.289 deletions(-)
Linux 4.16 [329] 62.915 25.558.805
(23.495.643)
63 Tage 14.896
(13.630)
12.239 files changed,
1.133.069 insertions(+),
939.066 deletions(-)
Linux 4.17 [330] 61.362 25.379.564
(23.314.368)
63 Tage 14.745
(13.541)
14.504 files changed,
777.301 insertions(+),
956.941 deletions(-)
Linux 4.18 [331] 61.003 25.280.872
(23.183.236)
70 Tage 14.432
(13.283)
13.141 files changed,
583.336 insertions(+),
682.028 deletions(-)
Linux 4.19 [332] 61.734 25.588.455
(23.449.221)
70 Tage 15.204
(14.043)
11,693 files changed,
552.223 insertions(+),
244.235 deletions(-)
Linux 4.20 [333] 62.481 25.955.520
(23.776.585)
63 Tage 14.995
(13.844)
11402 files changed,
685.027 insertions(+),
317.959 deletions(-)
Linux 5.0 [334] 63.135 26.203.035
(23.933.016)
70 Tage 13.921
(12.808)
12.100 files changed,
579.084 insertions(+),
331.570 deletions(-)
Linux 5.1 [335] 63.873 26.459.776
(24.141.004)
63 Tage 14.160
(13.034)
11.977 files changed,
545.423 insertions(+),
288.683 deletions(-)
Linux 5.2 64.587 26.552.127
(24.175.296)
63 Tage 15.089
(14.024)
30.888 files changed,
624.857 insertions(+),
532.510 deletions(-)
¹ git ls-tree -r --name-only HEAD | wc -l
² find . -type f -not -regex '\./\.git/.*' | xargs cat | wc -l; echo "($(find . -name *.[hcS] -not -regex '\./\.git/.*' | xargs cat | wc -l))"
³ git-log --pretty=oneline vx.(y-1)..vx.(y) | wc -l; echo "($(git-log --pretty=oneline --no-merges vx.(y-1)..vx.(y) | wc -l))"
⁴ git diff --shortstat vx.(y-1)..vx.(y)

(thl [336])

[337]

Den neuen Linux-Kernel herunterladen und einrichten

Direkt nach der Freigabe steht die neue Linux-Version nur über einen Git-Checkout des "Mainline" genannten Hauptenwicklerzweigs [338] bereit; die Download-Möglichkeit über die Frontseite von Kernel.org [339] folgt meist erst einige Stunden später, wenn sich die Büros in Europa richtig füllen. [340]

Auf dem Server der Linux-Entwickler finden Sie eine Anleitung, [341] wie Sie die Authentizität und die Unversehrtheit des Quelltextes prüfen; dort gibt es auch ein Skript, das eine Version herunterlädt und diese Aufgaben durchführt.

Fedora und Rolling-Release-Distributionen wie Arch Linux, Gentoo und OpenSuse Tumbleweed erhalten die neue Linux-Version in den nächsten Tagen und Wochen im Rahmen der regulären Systemaktualisierung. Bei bereits erhältlichen oder kurz vor der Veröffentlichung stehende Releases von Debian, OpenSuse Leap, Ubuntu und den meisten anderen klassisch gewarteten Distributionen macht der Kernel normalerweise keine größeren Versionssprünge; deutlich neuere Linux-Versionen erhält man dort meist nur beim Wechsel auf eine neuere Version der Distribution.

Einzelne Distributionen werden den neuen Kernel über Backports-Repositories zur einfachen Installation anbieten. In der Regel sind solche aber standardmäßig inaktiv, weil dort andere Pflegerichtlinien gelten; Sicherheitskorrekturen beispielsweise werden dort vielfach nicht garantiert, auch wenn es sie meist zeitnah gibt.

Bei vielen populären Distributionen wird kann man neue Linux-Versionen auch Kernel-Pakete in Repositories nachrüsten können, die Fans oder Entwickler pflegen. Anwender sollten sich bewusst sein, dass sie über solche Angebote zentrale Bausteine ihrer Distribution austauschen. Wer solche Repositories verwendet, sollte deren Anbietern ähnlich trauen wie seinem Distributor, denn über darin liegende Pakete lassen sich kinderleicht Hintertüren einschleusen. Nach dem Einbinden solcher Repositories obliegt es zudem den Machern dieser Depots, die ausgetauschten Pakete fortan mit Sicherheitskorrekturen zu versorgen. Das vorübergehende oder dauerhafte Aktivieren solcher Repositories kann zudem zu Abhängigkeitsproblemen bei späteren Updates der Distribution führen. Da zentrale Software ausgetauscht wird, kann es zudem leicht zu Instabilitäten kommen; im dümmsten Fall starte das ganze System nicht mehr.

Wer die neue Linux-Version eigenhändig kompilieren und einrichten will, finden Hinweise dazu im c't-Artikel "Linux-Kernel maßgeschneidert [342]". Das darin beschriebene Make-Target make localmodconfig erzeugt weitgehend automatisch eine recht gut auf das jeweilige System zugeschnittene Kernel-Konfiguration, mit der Sie in wenigen Minuten eine neue Linux-Version einrichten können.

Allerlei weitere Informationen zu Linux liefern der erste [343], zweite [344] und dritte [345] Teil einer c't-FAQ-Reihe mit "Basiswissen zum Linux-Kernel".

Versionshistorie dieses Artikels

Der Newsticker von heise online [346] erwähnt alle größeren Texterweiterungen, auf die auch der Twitter-Account @kernellog hinweist [347].


URL dieses Artikels:
http://www.heise.de/-4424484

Links in diesem Artikel:
[1] #changelog
[2] 
[3] https://git.kernel.org/torvalds/c/fb53ac6cd0269987b1b77f957db453b3ec7bf7e4
[4] https://git.kernel.org/torvalds/c/2341d662e9a2a5751ff8ac4ffa640fb493b0ee84
[5] https://git.kernel.org/torvalds/c/8cacc5ab3eacf5284bc9b0d7d5b85b748a338104
[6] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php
[7] https://git.kernel.org/torvalds/c/778c02a236a8728bb992de10ed1f12c0be5b7b0e
[8] https://git.kernel.org/torvalds/c/4438cf50e7b315ff4bc4cfff8520b906428c3024
[9] https://lwn.net/Articles/784267/
[10] http://algo.ing.unimo.it/people/paolo/disk_sched/results.php
[11] 
[12] 
[13] 
[14] http://e2fsprogs.sourceforge.net/
[15] https://lwn.net/Articles/718640/
[16] https://wiki.winehq.org/Wine-Staging
[17] https://www.winehq.org/pipermail/wine-devel/2019-June/147366.html
[18] https://bugs.winehq.org/show_bug.cgi?id=47099
[19] http://man7.org/linux/man-pages/man8/mkfs.xfs.8.html
[20] 
[21] https://git.kernel.org/torvalds/c/44594c2fbf42528001dfb1597d26adb40ba6d178
[22] https://www.w3.org/International/wiki/Case_folding
[23] https://git.kernel.org/torvalds/c/955405d1174eebcd1b89ab335f720adc27d52b67
[24] https://git.kernel.org/torvalds/c/a8384c68797ee022f5fd7bcef5f4cc57863d4042
[25] https://git.kernel.org/torvalds/c/1215d239e791c54a3abb135553d32c9b91ae96ef
[26] https://lore.kernel.org/linux-ext4/CAHk-=wg2JvjXfdZ8K5Tv3vm6+bKRedotF5cr5AwVZVBypVfdAQ@mail.gmail.com/T/#u
[27] https://git.kernel.org/torvalds/c/b886ee3e778ec2ad43e276fd378ab492cf6819b7
[28] https://git.kernel.org/torvalds/c/0a790fe4389d88253563c5e22bea47e6d357b525
[29] https://lwn.net/Articles/772960/
[30] https://lwn.net/Articles/784041/
[31] https://lore.kernel.org/linux-ext4/CAHk-=wg2JvjXfdZ8K5Tv3vm6+bKRedotF5cr5AwVZVBypVfdAQ@mail.gmail.com/
[32] https://lore.kernel.org/lkml/20190507232823.GA28416@mit.edu/
[33] https://git.kernel.org/torvalds/c/5abe37954e9a315c35c9490f78d55f307c3c636b
[34] 
[35] https://spdx.org/
[36] https://www.kernel.org/doc/html/latest/process/license-rules.html
[37] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-14-3831941.html
[38] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-16-3964466.html
[39] https://git.kernel.org/torvalds/c/2c1212de6f9794a7becba5f219fa6ce8a8222c90
[40] https://git.kernel.org/torvalds/c/86c2f5d653058798703549e1be39a819fcac0d5d
[41] https://git.kernel.org/torvalds/c/2f4c53349961c8ca480193e47da4d44fdb8335a8
[42] https://git.kernel.org/torvalds/c/a68dc6188242e1cc6f72eb3361e71633b4bc02a7
[43] https://git.kernel.org/torvalds/c/9331b6740f86163908de69f4008e434fe0c27691
[44] https://git.kernel.org/torvalds/c/c884d8ac7ffccc094e9674a3eb3be90d3b296c0a
[45] 
[46] https://git.kernel.org/torvalds/c/43d8ce9d65a54846d378545770991e65838981e0
[47] 
[48] https://git.kernel.org/torvalds/c/0e94682b73bfa6c44c98af7a26771c9c08c055d5
[49] https://git.kernel.org/torvalds/c/33b2d6302abc4ccea1d9b3f095e2e27b02ca264e
[50] https://lwn.net/Articles/775971/
[51] https://www.heise.de/ct/artikel/Linux-4-20-freigegeben-Performance-Optimierungen-und-neue-Treiber-4223066.html
[52] 
[53] 
[54] https://git.kernel.org/torvalds/c/2909bf0562693b39edda06359ea265fac877f937
[55] https://www.heise.de/meldung/Intels-10-nm-Prozessor-Ice-Lake-U-startet-auf-der-Computex-4429290.html
[56] https://www.heise.de/ct/artikel/Prozessorfahrplaene-von-AMD-und-Intel-4427754.html
[57] https://git.kernel.org/torvalds/c/897f296152c704ef64163c49d94a6e086de1c31a
[58] https://git.kernel.org/torvalds/c/a7b4deeb02b978bc59808cb13c93ba84f01023a4
[59] https://git.kernel.org/torvalds/c/729ae330a0f2e270db2ca70c06a83d0aa2776288
[60] https://www.heise.de/ct/artikel/Prozessorfahrplaene-von-AMD-und-Intel-4427754.html
[61] 
[62] 
[63] https://git.kernel.org/torvalds/c/a1d2a6339961efc078208dc3b2f006e9e9a8e119
[64] https://git.kernel.org/torvalds/c/f3ba91228e8e917e5bd6c4b72bfe846933d17370
[65] https://www.heise.de/ct/artikel/Mesa-19-1-freigegeben-Neue-3D-Linux-Grafiktreiber-fuer-ARM-und-Intel-4433356.html
[66] https://www.youtube.com/watch?v=VTgDP3yNXI0&t=1403
[67] 
[68] https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
[69] https://git.kernel.org/torvalds/c/98af8452945c55652de68536afdde3b520fec429
[70] https://git.kernel.org/torvalds/c/d68be4c4d31295ff6ae34a8ddfaa4c1a8ff42812
[71] https://git.kernel.org/torvalds/c/a111b7c0f20e13b54df2fa959b3dc0bdf1925ae6
[72] https://git.kernel.org/torvalds/c/fa4bff165070dc40a3de35b78e4f8da8e8d85ec5
[73] https://www.heise.de/meldung/Neue-Linux-Kernel-schuetzen-vor-ZombieLoad-aka-MDS-4422245.html
[74] 
[75] 
[76] 
[77] https://git.kernel.org/torvalds/c/aa26690fab1380735442e027ce4b17849a24493f
[78] https://git.kernel.org/torvalds/c/c23232d409355091502a362e99ed06f800765961
[79] https://git.kernel.org/torvalds/c/75efa57d0bf5fcf650a183f0ce0dc011ba8c4bc8
[80] https://git.kernel.org/torvalds/c/311f71281ff4b24f86a39c60c959f485c68a6d36
[81] https://git.kernel.org/torvalds/c/468dfca38b1a6fbdccd195d875599cb7c8875cd9
[82] https://git.kernel.org/torvalds/c/88ad5d1eb147a73ad000c658dff0e5166819e6f2
[83] https://git.kernel.org/torvalds/c/e4f3fabd67480bf2ad3f71aa6126ffb8bb7dc712
[84] https://git.kernel.org/torvalds/c/dece44e381ab4a9fd1021db45ba4472e8c85becb
[85] https://git.kernel.org/torvalds/c/9e46b840c7053b5f7a245e98cd239b60d189a96c
[86] https://git.kernel.org/torvalds/c/1d9d7cbf28a1c2f84f2a0224466f8eb5f0a62ace
[87] https://git.kernel.org/torvalds/c/428bb68ad99b9f03c35d7b34d60be54faf954181
[88] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-11-3641334.html
[89] https://git.kernel.org/torvalds/c/570df4e9c23f861aa3f8f2954468c534a033bf1a
[90] https://git.kernel.org/torvalds/c/0d28544117fa9dcd0d202aeb4459bb15f42bb7de
[91] https://www.heise.de/ct/artikel/Linux-5-1-Performance-Verbesserungen-und-neue-Speichertechnik-4411986.html
[92] https://git.kernel.org/torvalds/c/400913252d09f9cfb8cce33daee43167921fc343
[93] https://git.kernel.org/torvalds/c/93766fbd2696c2c4453dd8e1070977e9cd4e6b6d
[94] https://git.kernel.org/torvalds/c/f1b5618e013af28b3c78daf424436a79674423c0
[95] https://git.kernel.org/torvalds/c/d8076bdb56af5e5918376cd1573a6b0007fc1a89
[96] https://git.kernel.org/torvalds/c/29cc02d949b19fdeba9de9f54b2641005f5865c6
[97] https://lwn.net/Articles/759499/
[98] https://git.kernel.org/torvalds/c/e5fef2a9732580c5bd30c0097f5e9091a3d58ce5
[99] https://git.kernel.org/torvalds/c/9f2e3a53f7ec9ef55e9d01bc29a6285d291c151e
[100] https://git.kernel.org/torvalds/c/67a242223958d628f0ba33283668e3ddd192d057
[101] https://git.kernel.org/torvalds/c/1718de78e6235c04ecb7f87a6875fdf90aafe382
[102] https://git.kernel.org/torvalds/c/78d9affbb0e79d48fd82b34ef9cd673a7c86d6f2
[103] https://git.kernel.org/torvalds/c/d8848eefc1d541dd0e3ae175e09fb5c66f1d4de6
[104] https://git.kernel.org/torvalds/c/4856118f4953627e9a087253766b9e7361f5f4a0
[105] https://git.kernel.org/torvalds/c/ef75bd71c5d31dc17ae41ff8bec92630a3037d69
[106] https://git.kernel.org/torvalds/c/52ae2456d6a455ef958bcf1c2d1965674076887e
[107] https://git.kernel.org/torvalds/c/4dbf09fea60d158e60a30c419e0cfa1ea138dd57
[108] https://git.kernel.org/torvalds/c/06cbd26d312edfe4a83ff541c23f8f866265eb24
[109] https://git.kernel.org/torvalds/c/700a800a949467cb86491763b983e1edcdee8642
[110] https://git.kernel.org/torvalds/c/882388056194d2d4c3f589b194b6bdcc47e677e8
[111] https://git.kernel.org/torvalds/c/d1cd7c85f9e29740fddec6f25d8bf061937bf58d
[112] https://git.kernel.org/torvalds/c/d7a02fa0a8f9ec1b81d57628ca9834563208ef33
[113] 
[114] https://git.kernel.org/torvalds/c/7ad19a99ad431b5cae005c30b09096517058e84e
[115] 
[116] 
[117] https://git.kernel.org/torvalds/c/0ed8c3dc41338d6b6442a6b692552f24ad523a9b
[118] https://git.kernel.org/torvalds/c/d15662682db232da77136cd348f4c9df312ca6f9
[119] https://git.kernel.org/torvalds/c/bdaba8959e9248524f3d148d1aa47f13944ba8e8
[120] https://git.kernel.org/torvalds/c/1d965c4def07defeb2f3b0eb927e891c45f46748
[121] https://git.kernel.org/torvalds/c/80f232121b69cc69a31ccb2b38c1665d770b0710
[122] 
[123] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=8a7e8ff8ce8ae7d34ed979f41b572bfe7cab421c
[124] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=9c3c0c2048149d946d7f3ebdcbe70e2946750bfb
[125] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=85993b8c9786fb24975dbcabebb1c75790d4fb6a
[126] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=6d97985072dc270032dc7a08631080bfd6253e82
[127] https://git.kernel.org/torvalds/c/02aff8db6438ce29371fd9cd54c57213f4bb4536
[128] https://git.kernel.org/torvalds/c/81ff5d2cba4f86cd850b9ee4a530cd221ee45aa3
[129] https://git.kernel.org/torvalds/c/dd5001e21a991b731d659857cd07acc7a13e6789
[130] https://git.kernel.org/torvalds/c/f72dae20891d7bcc43e9263ab206960b6ae5209f
[131] https://git.kernel.org/torvalds/c/c367dc8d0dd2a1e1ed9fdc2dd831053bdfdf0968
[132] https://outflux.net/blog/
[133] https://outflux.net/blog/archives/2019/05/27/security-things-in-linux-v5-1/
[134] https://lwn.net/Articles/763641/
[135] https://git.kernel.org/torvalds/c/b4b52b881cf08e13d110eac811d4becc0775abbf
[136] 
[137] https://schd.ws/hosted_files/lc32018/00/LC3-SIOV-final.pdf
[138] https://git.kernel.org/torvalds/c/a3a195929d40b38833ffd0f82b2db2cc898641eb
[139] https://git.kernel.org/torvalds/c/26b25a2b98e45aeb40eedcedc586ad5034cbd984
[140] https://git.kernel.org/torvalds/c/95587a75de179da35aea03735843be8278cf1857
[141] https://git.kernel.org/torvalds/c/8cc3759a6c4931fca2ad9c1b0ead24dc0c30041c
[142] https://git.kernel.org/torvalds/c/67b8e02b5e76159a4f94f85bee370af1d9f442f9
[143] https://git.kernel.org/torvalds/c/0e8000f8f616df653d0d7fcc43fafae7e5b07c0b
[144] https://software.intel.com/en-us/blogs/2018/06/25/introducing-intel-scalable-io-virtualization
[145] https://schd.ws/hosted_files/lc32018/00/LC3-SIOV-final.pdf
[146] https://git.kernel.org/torvalds/c/b3e5838252665ee4cfa76b82bdf1198dca81e5be
[147] https://www.heise.de/ct/artikel/Linux-5-1-Performance-Verbesserungen-und-neue-Speichertechnik-4411986.html
[148] https://git.kernel.org/torvalds/c/2151ad1b067275730de1b38c7257478cae47d29e
[149] https://lwn.net/Articles/784831/
[150] https://git.kernel.org/torvalds/c/76f969e8948d82e78e1bc4beb6b9465908e74873
[151] https://git.kernel.org/torvalds/c/afe471ea2d6fcd439c3a7a1fe2df0389e07a67c8
[152] 
[153] https://git.kernel.org/torvalds/c/68ad4a3304335358f95a417f2a2b0c909e5119c4
[154] https://git.kernel.org/torvalds/c/e900a918b0984ec8f2eb150b8477a47b75d17692
[155] https://git.kernel.org/torvalds/c/43bd3a95c98e1a86b8b55d97f745c224ecff02b9
[156] https://git.kernel.org/torvalds/c/90489a72fba9529c85e051067ecb41183b8e982e
[157] https://git.kernel.org/torvalds/c/c22497f5838c237e3094a4dfb99d1c5de6353239
[158] https://git.kernel.org/torvalds/c/470530bbb8fbbf2a09bd1d7150bb92501c5c54e6
[159] https://git.kernel.org/torvalds/c/f24c1d7523e6db26ec2115a308750c875927741b
[160] https://git.kernel.org/torvalds/c/6daeb8737f8a93c6d3a3ae57e23dd3dbe8b239da
[161] https://git.kernel.org/torvalds/c/6017608936c1825ff5d7325270484042f597edff
[162] https://git.kernel.org/torvalds/c/dd4e5d6106b2380e2c1238406d26df8b2fe1c42c
[163] https://lwn.net/Articles/780710/
[164] https://git.kernel.org/torvalds/c/13bac55ef7aef8ecb67ff3005d24b05a464d28ea
[165] https://git.kernel.org/torvalds/c/fc1d8e7cca2daa18d2fe56b94874848adf89d7f5
[166] https://git.kernel.org/torvalds/c/a3e0d41c2b1f86b483b202d642140d8b86d677ca
[167] https://git.kernel.org/torvalds/c/4a83bfe916f3d2100df5bc8389bd182a537ced3e
[168] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-14-3831941.html
[169] https://git.kernel.org/torvalds/c/59df1c2bdecb0d1aaadfb8533df4bea528ee4952
[170] https://git.kernel.org/torvalds/c/8c79f4cd441b27df6cadd11b70a50e06b3b3a2bf
[171] https://git.kernel.org/torvalds/c/1fb3b526df3bd7647e7854915ae6b22299408baf
[172] https://git.kernel.org/torvalds/c/abde77eb5c66b2f98539c4644b54f34b7e179e6b
[173] https://git.kernel.org/torvalds/c/d90dcc1f14555c62a32bc15c86c66d1d5444b5cb
[174] https://git.kernel.org/torvalds/c/d2d8b146043ae7e250aef1fb312971f6f479d487
[175] https://git.kernel.org/torvalds/c/a13f0655503a4a89df67fdc7cac6a7810795d4b3
[176] https://git.kernel.org/torvalds/c/2646719a48c21ba0cae82a3f57382a9573fd8400
[177] https://git.kernel.org/torvalds/c/ff8583d6e4e33fe3856a609095c683d5dbe39120
[178] https://git.kernel.org/torvalds/c/ca4b40629f4edd3a961bedcd118e3ad05439ec71
[179] https://git.kernel.org/torvalds/c/b06ed1e7a2fa9b636f368a9e97c3c8877623f8b2
[180] https://git.kernel.org/torvalds/c/71ae5fc87c34ecbdca293c2a5c563d6be2576558
[181] https://git.kernel.org/torvalds/c/4c7b63a32d54850a31a00f22131db417face70e4
[182] https://git.kernel.org/torvalds/c/007dc78fea62610bf06829e38f1d8c69b6ea5af6
[183] https://git.kernel.org/torvalds/c/573de2a6e844cb230c4483833f29b8344a6a17cc
[184] https://git.kernel.org/torvalds/c/6ec62961e6de9506e8b8620dc19897d8cfd41c2e
[185] https://git.kernel.org/torvalds/c/414147d99b928c574ed76e9374a5d2cb77866a29
[186] https://git.kernel.org/torvalds/c/3aff5fac54d722f363eac7db94536bffb55ca43f
[187] https://git.kernel.org/torvalds/c/eac7078a0fff1e72cf2b641721e3f55ec7e5e21e
[188] https://git.kernel.org/torvalds/c/8f5e823f9131a430b12f73e9436d7486e20c16f5
[189] https://git.kernel.org/torvalds/c/0968621917add2e0d60c8fbc4e24c670cb14319c
[190] https://git.kernel.org/torvalds/c/5ba2a4b12f450c5c69099a5c19671c6e59daa435
[191] https://git.kernel.org/torvalds/c/e00d4135751bfe786a9e26b5560b185ce3f9f963
[192] https://git.kernel.org/torvalds/c/5a2bf1abbf96fca02b9785c252e569ef8e004851
[193] https://git.kernel.org/torvalds/c/2c45e7fbc962be1b03f2c2af817a76f5ba810af2
[194] https://git.kernel.org/torvalds/c/6fe567df04a27468b306ae5c53fa7a1cd3acc5e1
[195] https://git.kernel.org/torvalds/c/529766e0a0114438887382a68d97341fbf8349fb
[196] https://git.kernel.org/torvalds/c/0f97da83102610db886e8b688b9029e080e6d511
[197] https://git.kernel.org/torvalds/c/6e846239e5487cbb89ac8192d5f11437d010130e
[198] https://git.kernel.org/torvalds/c/e57ccca1ba33e1d92cc3bbf8b6304a46948844b0
[199] https://www.sofproject.org/
[200] https://git.kernel.org/torvalds/c/7e978fa37df7f771a5d02934ff828a0ee36bcf11
[201] https://git.kernel.org/torvalds/c/a226893b85b3c35f6c7c168beb28de738211164a
[202] https://git.kernel.org/torvalds/c/cd679898cd323d958b35c014f97c575b4abb8ce2
[203] https://git.kernel.org/torvalds/c/9e42c5ca4a276a668b11116704f5f0d66ab80608
[204] https://git.kernel.org/torvalds/c/c3078f5397046755ddcd0447d202124c398469c5
[205] https://git.kernel.org/torvalds/c/f70abd75b7c6c04d3219d0b3a0f3f15411b042fb
[206] https://www.sofproject.org/
[207] https://www.linuxfoundation.org/press-release/2018/03/the-linux-foundation-welcomes-sound-open-firmware-project/
[208] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=317d9313925cd8388304286c0d3c8dda7f060a2d
[209] https://git.kernel.org/torvalds/c/c5ba1712661233ce0f4666b8c3dee5bb78d380f2
[210] https://git.kernel.org/torvalds/c/04b8e65922f631e297bde9536306f879e6fd952b
[211] https://git.kernel.org/torvalds/c/e3037485c68ec1a299ff41160d8fedbd4abc29b9
[212] https://git.kernel.org/torvalds/c/ef4a0c3173736a957d1495e9a706d7e7e3334613
[213] https://git.kernel.org/torvalds/c/f2113c3020ef9f9bebc4632596ac5a3c3e80dc25
[214] https://git.kernel.org/torvalds/c/42bc4f3129e6565567ee63116850c530dc561aa0
[215] https://git.kernel.org/torvalds/c/4a79bcc64a0514d630783b8d19cf9a85e46fe988
[216] https://git.kernel.org/torvalds/c/7457bc1b0ebf30d98ce993ec876a5ab2b143539d
[217] https://hansdegoede.livejournal.com/21731.html
[218] https://git.kernel.org/torvalds/c/161f62cd07fde123fd52bf6d5b6fd6513cca968e
[219] https://git.kernel.org/torvalds/c/91b228107da3e41558449a62cd93816b47b3b4b5
[220] https://git.kernel.org/torvalds/c/487579bab867e739be3d2c0064ad3af1221482c8
[221] https://git.kernel.org/torvalds/c/a2679b64719085196a8e1762a40e90e92b1f3cf5
[222] https://git.kernel.org/torvalds/c/42337b9d4d958daae266dc455a54e3b9f157862a
[223] https://github.com/conorpp/u2f-zero
[224] https://git.kernel.org/torvalds/c/cf28369c634fafb5f4e81750cba6988cdb4b4490
[225] https://git.kernel.org/torvalds/c/ad74b8649beaf1a22cf8641324e3321fa0269d16
[226] https://git.kernel.org/torvalds/c/af8622f6a585d8d82b11cd7987e082861fd0edd3
[227] https://git.kernel.org/torvalds/c/c0286f568069198484552c39fd2714153b2b16ec
[228] https://git.kernel.org/torvalds/c/ab3e023b1b4c9887c9f0f761b47f3f0516bd3434
[229] https://git.kernel.org/torvalds/c/131abc56e1bacef23cb7b340519d36e2f5adb2a9
[230] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-12-3712705.html
[231] https://git.kernel.org/torvalds/c/4f2a8f5898ecd806cc0ccece1df4c0f143f80a74
[232] https://git.kernel.org/torvalds/c/d2c6a405846c24439f85c7a8da21545f12874638
[233] https://git.kernel.org/torvalds/c/2f146b78d5a9cc032e1376ba3c35e8aed11f615b
[234] https://patchwork.kernel.org/cover/10542337/
[235] https://lists.freedesktop.org/archives/dri-devel/2019-May/218901.html
[236] 
[237] 
[238] 
[239] https://git.kernel.org/torvalds/c/a2d635decbfa9c1e4ae15cb05b68b2559f7f827c
[240] https://git.kernel.org/torvalds/c/a2d635decbfa9c1e4ae15cb05b68b2559f7f827c
[241] https://git.kernel.org/torvalds/c/61ae227032e7f9278cc7d7224045e77e0dedb33e
[242] https://git.kernel.org/torvalds/c/e15b682aad77f158e4af51d258ed7398036fdf8d
[243] https://www.heise.de/ct/artikel/Linux-5-0-ist-da-Geschwindigkeit-zurueckerobern-und-moderner-speichern-4307315.html
[244] https://git.kernel.org/torvalds/c/457109829f4ee4107e8c7108237afba21fabbb5e
[245] https://www.heise.de/meldung/Radeon-RX-5700-XT-RTX-Performance-ab-369-Euro-4464272.html
[246] https://lists.freedesktop.org/archives/amd-gfx/2019-June/035170.html
[247] https://lists.freedesktop.org/archives/amd-gfx/2019-June/035835.html
[248] https://gitlab.freedesktop.org/mesa/mesa/merge_requests/1173
[249] https://git.kernel.org/torvalds/c/0040a390d2fde44a03b3a05cf0cdf3e692ece60f
[250] https://git.kernel.org/torvalds/c/f1d8a071d45bf13dd9bb9f1777133ca8a1cafebe
[251] https://git.kernel.org/torvalds/c/f9a82c4820ac30c80df9ea61577ad5f835968533
[252] https://git.kernel.org/torvalds/c/308ee87a2f1ea7e83c5da49e4359cb133a93217f
[253] https://git.kernel.org/torvalds/c/debe7c8621def7633a355841f838e35b078868bc
[254] 
[255] http://cateee.net/lkddb/
[256] https://git.kernel.org/torvalds/c/f678d6da749983791850876e3421e7c48a0a7127
[257] https://git.kernel.org/torvalds/c/cf482a49af564a3044de3178ea28f10ad5921b38
[258] https://git.kernel.org/torvalds/c/cccd559e98c05b669bdc37b01802f920cff1d6dd
[259] https://git.kernel.org/torvalds/c/b4dd05dee0dbd16afdbba83b698a7110c687be2d
[260] https://git.kernel.org/torvalds/c/7aefd944f038c7469571adb37769cb6f3924ecfa
[261] https://git.kernel.org/torvalds/c/0aed4b28187078565cafbfe86b62f941d580d840
[262] https://git.kernel.org/torvalds/c/8b35ad6232c462b02e397e87ce702bcddd4ba543
[263] https://git.kernel.org/torvalds/c/e7a1414f9dc3498c4c35b9ca266d539e8bccab53
[264] https://git.kernel.org/torvalds/c/47782361aca21a32ad4198f1b72f1655a7c9f7e5
[265] https://git.kernel.org/torvalds/c/7817ffd20a0f7fbd5971643b5ef1f577703dad11
[266] https://git.kernel.org/torvalds/c/dce45af5c2e9e85f22578f2f8065f225f5d11764
[267] https://git.kernel.org/torvalds/c/e0dccbdf5ac7ccb9da5612100dedba302f3ebcfe
[268] https://git.kernel.org/torvalds/c/132d68d37d33f1d0b9c1f507c8b4d64c27ecec8a
[269] https://git.kernel.org/torvalds/c/55472bae5331f33582d9f0e8919fed8bebcda0da
[270] 
[271] 
[272] https://git.kernel.org/torvalds/c/b9c273babce791cf228fc466577f55056a699f9c
[273] https://git.kernel.org/torvalds/c/5861381d486601430cccf64849bd0a226154bc0d
[274] 
[275] 
[276] https://git.kernel.org/torvalds/c/e8a1d70117116c8d96c266f0b99e931717670eaf
[277] https://git.kernel.org/torvalds/c/a05ea40eb384e28205ed7200384f55cf210d8b63
[278] https://git.kernel.org/torvalds/c/4b36daf9ada30a66c93f8701e8c6f23bc3ce94e2
[279] https://git.kernel.org/torvalds/c/8ff468c29e9a9c3afe9152c10c7b141343270bf3
[280] https://git.kernel.org/torvalds/c/092470b537f19788d957aed12d835a179b606014
[281] https://git.kernel.org/torvalds/c/6772cd0eacc8f91a3539f99ae9d9678c455a9fc6
[282] https://git.kernel.org/torvalds/c/08b64bd2c681ab8bd67fbf1d34d092d1bb72ede4
[283] https://git.kernel.org/torvalds/c/4a13b3bec3b49cf979cc62005cc3af5e502899c9
[284] https://git.kernel.org/torvalds/c/22c58fd70ca48a29505922b1563826593b08cc00
[285] https://git.kernel.org/torvalds/c/dc413a90edbe715bebebe859dc072ef73d490d70
[286] https://git.kernel.org/torvalds/c/e8a1d70117116c8d96c266f0b99e931717670eaf
[287] https://git.kernel.org/torvalds/c/c620f7bd0ba5c882b3e7fc199a8d5c2f6c2f5263
[288] https://git.kernel.org/torvalds/c/ce45327ca044415a5832dacfb76cdcfb747e3240
[289] https://git.kernel.org/torvalds/c/8c05f3b965da14e7790711026b32cc10a4c06213
[290] https://git.kernel.org/torvalds/c/0ef0fd351550130129bbdb77362488befd7b69d2
[291] https://git.kernel.org/torvalds/c/ccbc2e5ed192ccd2663477107379f843d072e649
[292] https://git.kernel.org/torvalds/c/92fab77b6b309dc219b02da4a69ad5dc76f7ec74
[293] https://git.kernel.org/torvalds/c/d3511f53bb2475f2a4e8460bee5a1ae6dea2a433
[294] https://git.kernel.org/torvalds/c/b970afcfcabd63cd3832e95db096439c177c3592
[295] https://git.kernel.org/torvalds/c/b0bb1269b9788a35af68587505d8df90498df75f
[296] https://git.kernel.org/torvalds/c/14be4c61c205dcb0a72251c1e2790814181bd9ba
[297] https://git.kernel.org/torvalds/c/27a03b1a71b9adfa7f4ef3f61452fb3bc5b195b1
[298] https://git.kernel.org/torvalds/c/9b6c9e96f941c5ab13dad7278a3622f58e5672fc
[299] https://git.kernel.org/torvalds/c/8f147727030bf9e81331ab9b8f42d4611bb6a3d9
[300] https://git.kernel.org/torvalds/c/e913c4a4c21cd83317fafe63bfdc9d34d2910114
[301] https://git.kernel.org/torvalds/c/fdafe5d1ffe8021704cb389e9823aef4235c88bc
[302] https://git.kernel.org/torvalds/c/0bc40e549aeea2de20fc571749de9bbfc099fb34
[303] https://git.kernel.org/torvalds/c/ba3934de557a2074b89d67e29e5ce119f042d057
[304] https://git.kernel.org/torvalds/c/948a64995aca6820abefd17f1a4258f5835c5ad9
[305] https://git.kernel.org/torvalds/c/7a5575212ce4b6a41581b92fe03b6be1134793ba
[306] 
[307] https://git.kernel.org/torvalds/c/e83b9f55448afce3fe1abcd1d10db9584f8042a6
[308] https://www.heise.de/ct/artikel/Linux-4-18-freigegeben-Raspi-3-Support-und-Vorboten-neuer-Firewall-Technik-4078605.html
[309] 
[310] https://git.kernel.org/torvalds/c/6316f78306c171f5a857a2442dbeebc7baab3566
[311] https://git.kernel.org/torvalds/c/d859900c4c56dc4f0f8894c92a01dad86917453e
[312] https://cilium.io/blog/2019/04/24/cilium-15/
[313] https://git.kernel.org/torvalds/c/cc441a69486bbeda9b99438246720c8214781255
[314] https://git.kernel.org/torvalds/c/5133a4a800fd3a5d1ab7c016196fd416af3a3f1c
[315] https://git.kernel.org/torvalds/c/bb23581b9b38703257acabd520aa5ebf1db008af
[316] https://git.kernel.org/torvalds/c/2843ba2ec75948e274d2c4f0a9390980e68a6461
[317] https://git.kernel.org/torvalds/c/5f0d736e7f7db586141f974821b6ca6c1d906d5b
[318] https://git.kernel.org/torvalds/c/14cfbdac6680bc87f6b9f6196d4d4ec044a01481
[319] https://git.kernel.org/torvalds/c/6ac99e8f23d4b10258406ca0dd7bffca5f31da9d
[320] https://git.kernel.org/torvalds/c/2569473816a9ade34c2ba051118337b2d69007df
[321] https://github.com/github/glb-director
[322] https://www.usenix.org/conference/nsdi18/presentation/olteanu
[323] https://www.heise.de/meldung/VPN-Software-WireGuard-jetzt-als-Pre-Alpha-Version-fuer-Windows-verfuegbar-4419936.html
[324] 
[325] https://lore.kernel.org/lkml/20190708035046.GA18628@Slackware/T/
[326] 
[327] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-14-3831941.html
[328] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-15-3900646.html
[329] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-16-3964466.html
[330] https://www.heise.de/ct/artikel/Die-Neuerungen-von-Linux-4-17-4061166.html
[331] https://www.heise.de/ct/artikel/Linux-4-18-freigegeben-Raspi-3-Support-und-Vorboten-neuer-Firewall-Technik-4078605.html
[332] https://www.heise.de/ct/artikel/Linux-4-19-Schoener-starten-und-bereit-fuer-das-WLAN-von-Morgen-4144037.html
[333] https://www.heise.de/ct/artikel/Linux-4-20-freigegeben-Performance-Optimierungen-und-neue-Treiber-4223066.html
[334] https://www.heise.de/ct/artikel/Linux-5-0-ist-da-Geschwindigkeit-zurueckerobern-und-moderner-speichern-4307315.html
[335] https://www.heise.de/ct/artikel/Linux-5-1-Performance-Verbesserungen-und-neue-Speichertechnik-4411986.html
[336] mailto:thl@ct.de
[337] 
[338] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/
[339] https://kernel.org/
[340] https://www.kernel.org/category/faq.html#linus-has-tagged-a-new-release-but-it-s-not-listed-on-the-front-page
[341] https://www.kernel.org/category/signatures.html
[342] https://www.heise.de/ct/artikel/Linux-Kernel-massgeschneidert-1402386.html
[343] https://www.heise.de/select/ct/2017/6/1489331084099960
[344] https://www.heise.de/select/ct/2017/13/1497639758398080
[345] https://www.heise.de/select/ct/2018/5/1519616757556066
[346] https://www.heise.de/newsticker/
[347] https://twitter.com/kernellog