Die Neuerungen von Linux 4.16

Seite 6: Netzwerk & Treiber

Inhaltsverzeichnis

Der BPF des Kernel unterstützt jetzt auch Funktionsaufrufe, wie man sie von klassischen Programmiersprachen kennt (u. a. 12, 3). Solche waren aus Sicherheitsgründen bislang in der manchmal auch eBPF (enhanced Berkeley Packet Filter) genannten Virtual Machine untersagt, mit der XDP (eXpress Data Path), Seccomp, Perf und zahlreiche andere Subsysteme von Linux Programme ausführen, um ihren Aufgaben nachzugehen. Der BPF-Compiler musste daher bislang jegliche Funktionen von BPF-Programmen mittels Inline-Technik an den jeweiligen Stellen einbinden, was die fertigen Programme aufgebläht hat. Die neue Möglichkeit vermeidet das nicht nur, sondern erlaubt zugleich auch ein Erstellen von BPF-Bibliotheken. Auf deren Funktionen können dann verschiedene mit der BPF-VM aufgeführte Programme zurückgreifen, wie man es von anderen Programmiersprachen gewohnt ist.

An frühere Zeiten dürfte sich mancher bei einer anderen Entschlackung erinnern: Die Kernel-Entwickler  haben die Unterstützung für "Novell IPX" und das darauf aufbauende Netware Core Protocol File System (Ncpfs) in den Staging-Zweig verlagert. Das soll Anwender warnen, denn diese Funktionen fliegen bald komplett raus, falls niemand den Code übernimmt und aufräumt. Das scheint recht unwahrscheinlich: Beide Techniken kommen heute kaum noch zum Einsatz, denn sie hatten ihre Hochzeit Ende der Neunziger mit Novell NetWare.

Einige weitere Änderungen am Netzwerk-Code nennt der Kommentar des Merge-Commit, in dem das Gros der Änderungen an diesem Subsystem steckt. Unter denen war auch eine Detail-Optimierung am Receiver Autotuning, die die Performance in bestimmten Situationen verbessern kann. Bei einem Benchmark stieg der Durchsatz dadurch von 1700 auf 4600 Mbit/s an; der zuständige Google-Entwickler hatte das verwendete Testszenario aber auch speziell konstruiert, um die Vorteile der Änderung zu demonstrieren.

Mit dem Nouveau-Treiber lassen sich jetzt auch die Beschleunigungsfunktionen von GP108-GPUs nutzen, die bei der GeForce GT 1030 zum Einsatz kommen. Wie dieser Tage üblich, ist dazu eine von Nvidia signierte Firmware nötig, wie sie das Unternehmen über die Linux-Firmware-Sammlung vertreibt; genau wie bei anderen Karten der 900- und 1000-Reihe ermöglicht diese Firmware allerdings keinen Wechsel in die schnellsten oder sparsamsten Betriebsmodi der Grafik-Hardware.

Der Amdgpu-Treiber kann Dank "Multi display synchronization logic" jetzt im Mehrschirmbetrieb die Bildwiederholraten der beteiligten Monitore besser aufeinander abstimmen, was Bildstörungen vermeiden soll. Unter eine Reihe von Detailverbesserungen sind auch allerlei Korrekturen am Support für die Vega-Grafik, die auf Vega-Grafikkarten oder den jüngst vorgestellten Ryzen-Prozessoren mit Grafikkern (Codename "Raven Ridge") zum Einsatz kommt. Wie schon bei 4.15 gab es allerlei Umbauten, um die Unterstützung zum Rechnen auf Radeon-Chips (GPGPU/General-purpose computing on Graphics Processing Units) zu verbessern.

Ein Merge-Kommentar hebt rund fünfzig Änderungen an Grafiktreibern hervor.

(Bild: git.kernel.org – 4bf772b14675 )

Aus der Reihe "Probleme an Stellen, von denen so mancher nichts ahnt": Beim Asus T100HA und einer Handvoll anderen Convertible-Notebooks erscheint die Textkonsole des Kernels jetzt in der richtigen Ausrichtung, wenn das Tablet auf dem Tastatur-Teil des Systems steckt. In diesen 2-in-1-Geräten steckt nämlich ein Bildschirm-Panel, das standardmäßig für den Porträt-Modus ausgelegt ist; daher muss der Kernel das Bild der Textkonsole im Notebook-Betrieb um 90 Grad drehen. Die dafür zuständigen Kernel-Änderungen schaffen zugleich auch eine Schnittstelle, über die Desktop-Umgebungen erfahren, in welche Richtung sie das Bild drehen müssen (u. a. 1, 2).

Der bislang vom Amdgpu-Treiber verwendete Scheduler wurde an eine andere Stelle des Direct Rendering Managers (DRM) verschoben, weil der für Vivante-Grafikkerne zuständige Etnaviv-Treiber diesen in Zukunft auch nutzen möchte.

Einige weitere Änderungen rund um Grafiktreiber nennen die Kommentare von zwei Git-Merges (1, 2).

Die Entwickler haben Code in den Bereichen AHCI, ASoC, HID, Grafik, MEI, Platform und x86 erweitert, um die Unterstützung für Intels in diesem Jahr erwartete "Cannon Lake"-Prozessoren samt der zugehörigen Chipsätze zu verbessern.

Aas einem Jahr-2038-Problem haben die Entwickler ein Jahr-2106-Problem gemacht.

(Bild: git.kernel.org – 152194fe9c3f )

Dank einer Änderung soll aktuelle 32-Bit-Software Tastatureingaben und andere Input-Events auch nach dem Jahr 2038 noch korrekt verarbeiten können, wenn ein in Unix-Systemen viel genutzter Variablentyp zum Speichern einer Zeitangabe zu klein wird. Das gelingt durch einen Trick mit dem Vorzeichen, der aber nur bis zum Jahr 2106 hilft. Der Commit-Kommentar liefert Details und rät Entwicklern dazu, stattdessen einen anderen Zeitstempel-Typ für Input Events zu nutzen.

Linux unterstützt jetzt das MIPI SoundWire (u. a. 1, 2), ein Interface zum Datenaustausch mit Audio-Hardware, das speziell auf Belange von Mobilgeräten ausgelegt wurde. Support für die in der Kernel-Dokumentation näher erläuterte Technik stammt von Intel-Entwicklern, die auch gleich einen "Intel Soundwire Master Driver" eingebracht haben, der nicht näher spezifizierte Intel-Hardware mit dieser Schnittstelle unterstützt. Ebenfalls neu und gut dokumentiert: Support  für den SLIMbus (Serial Low Power Interchip Media Bus). Dieser stammt genau wie SoundWire von der MIPI (Mobile Industry Processor Interface) und ist zum Verbinden von System-on-Chips (SoCs) mit Audio Codecs gedacht.

Darüber hinaus verbessert eine Reihe neuer und erweiterter Treiber die Hardware-Unterstützung. Exemplarisch einige Beispiele: Der Wacom-Treiber weiß jetzt die zwei Zeichentablets der "One by Wacom"-Reihe anzusprechen. Der Treiber Dib0700 unterstützt jetzt den Xbox One Digital TV Tuner. Neu dabei ist auch Support für den SIOX bus der auf Automatisierungslösungen spezialisierten Firma Eckelmann AG. Der für moderne USB-Chips zuständige Xhci-Treiber implementiert jetzt die Debug Capability (DbC).

 Durch diese und weitere Verbesserungen unterstützt Linux 4.16 knapp fünfhundert Geräte oder Geräteklassen mehr als sein Vorgänger; bei rund neunzig davon handelt es sich um PCI/PCIe- oder USB-Geräte, wie die Datenbanken der Linux Kernel Driver DataBase (LKDDb) zeigen.

 Details zu diesen und weitere Änderungen rund um Treiber finden sich in den Kommentaren von Git-Merges der Subsysteme ASoC, Char, Driver Core, HID, Hardware Monitoring, Input, Libata, Media, MFD, NTB, PCI, Platform (1, 2) RDMA (1, 2), Sound, Staging, TTY, USB und Watchdog.