/Linux-Kernel 4.14: Neue Netzwerktreiber und Optimierungen beim Grafiktreibern

Linux-Kernel 4.14: Neue Netzwerktreiber und Optimierungen beim Grafiktreibern


Linux-Kernel 4.14

Trends & News
| Kernel-Log

Neue und optimierte Grafiktreiber verbessern Hardware-Support und Performance von Linux. Ferner stießen Treiber für Audio-, DVB-, LAN- und WLAN-Chips verschiedener Unternehmen zum Kernel.

Der in der ersten Novemberhälfte erwartete Linux-Kernel 4.14 enthält überarbeitete Grafiktreiber, die Hardware-Support und Performance verbessern. Neu dabei ist auch ein Treiber für ein Display eines Lego-Mindstorm-Roboters. Auch die Unterstützung für DVB-S2-Hardware haben die Kernel-Entwickler verbessert. Außerdem bringt Linux jetzt einen Treiber für einen neuen WLAN-Chip von Realtek mit.

Die folgenden Absätze liefern Details zu diesen und weiteren Neuerungen rund um Treiber. In 4.14 eingeflossene Neuerungen rund um Architektur- und Infrastrukturcode, Sicherheit, Netzwerk, Storage und Dateisysteme erläutert dieser schrittweise erweiterte Artikel auf den Seiten zwei bis vier.

Der für moderne Radeon-GPUs zuständige Amdgpu-Treiber kann jetzt große Speicherseiten (Huge Pages) nutzen, die Overhead beim Speicherzugriff vermeiden und so die Performance steigern – insbesondere beim Rechnen mit GPUs (General-purpose computing on Graphics Processing Units). Ferner gab es allerlei Verbesserungen und Feintuning rund um den Support von Vega-Grafikkarten, der GPU-Virtualisierung mit SR-IOV und dem Support der Stromspartechnik PowerPlay. Zudem haben AMDs Entwickler eine Reihe von Patches integriert, durch die sich AMDs als “Platform for GPU-Enabled HPC and Ultrascale Computing” umschriebenes GPGPU-Framework ROCm jetzt mit dem offiziellen Kernel funktioniert; bislang klappt das allerdings nur mit den APUs der Prozessorgenerationen Kaveri und Carrizo.

Mit Vega-Grafikkarten und den GPUs in AMDs jüngst vorgestelltem Ryzen Mobile kann der Treiber aber nach wie vor keine Bildschirme ansteuern, denn dazu ist weiterhin die anfangs als DAL (Display Abstraction Layer) und mittlerweile DC (Display Core) bekannte Patch-Sammlung erforderlich. Dieses Manko löst sich aber womöglich bald in Luft auf, denn der für die Grafiktreiber zuständige Entwickler Dave Airlie scheint Linus Torvalds bitten zu wollen, DC in Linux 4.15 zu integrieren. Airlie und einige andere Kern-Entwickler des für Grafiktreiber zuständigen Kernel-Subsystems hatten diese von AMD selbst entwickelte Patch-Sammlung anfangs rundweg abgelehnt, weil sie ihren Qualitätsansprüchen nicht genügte. Hauptgrund, vereinfacht gesagt: Die Patches sorgten für eine Abstraktionsschicht zwischen Treibercode und dem Atomic-Framework der Kernels, die als gemeinsame Basis für modernen Kernel-Grafiktreiber gedacht ist. Erschwerend kam hinzu, dass DAL einige Funktionen reimplementierte, die Atomic bereits bot. Airlie & Co. sahen das Ganze letztlich als Ballast an, der Pflege und Weiterentwicklung unnötig verkompliziert hätte.

Nach allerlei Diskussionen haben die AMD-Entwickler das eingesehen und begonnen, den Treiber anzupassen, damit er die Ansprüche von Airlie & Co erfüllt. Nach tiefgreifenden Umbauten und rund 20 Monaten Entwicklungszeit baten sie dann kürzlich um die Aufnahme von DC. Airlie fand dann noch einige Probleme, die AMDs Entwickler oder er selbst ausräumten. Offenbar ist er jetzt zufrieden und will es zur Aufnahme einsenden; Torvalds könnte sich aber an Eigenschaften stören und so die Aufnahme verwehren. Das Risiko gibt es immer – bei DC ist es aber größer, weil es aus über 800 Patches besteht, die viel neuen Code mitbringen.

Der für die modernen Intel-GPUs zuständige Treiber i915 beherrscht jetzt Render Decompression Support; dadurch kann der Treiber bestimmte Daten jetzt komprimiert im Grafikspeicher ablegen, um Speicherbandbreite zu sparen und so die Performance zu verbessern. Außerdem beherrscht der Treiber nun DRM Syncobjs; mit ihrer Hilfe soll der in Mesa enthaltene Vulkan-3D-Treiber den bei Vulkan 1.0.42 hinzugekommenen Befehl VK_KHX_external_semaphore unterstützen, der eine Synchronisation von Speicherzugriffen ermöglicht.

Unter einer Reihe weiterer Änderungen waren mehrere, um den Support für die seit Linux 4.8 mögliche GPU-Virtualisierung mit Intels Graphics Virtualization Technology (GVT) robuster und schneller zu machen. Intels Entwickler haben zudem die Unterstützung für die GPU der Cannon-Lake-Prozessoren verbessert, die in den nächsten Monaten auf den Markt kommen sollen. Der Support für die bereits erhältlichen und zur Core-i-8000-Serie gehörenden Coffee-Lake-Prozessoren wird indes weiterhin nur aktiv, wenn man den Parameter i915.alpha_support=1 spezifiziert; ab 4.15 soll das nciht mehr nötig sein.

Der Nouveau-Treiber des Kernel unterstützt jetzt auch die GeForce GT 1030, denn es weiß jetzt auch dessen NV138 oder GP108 genannten Grafikchip anzusprechen. 3D-Beschleunigung gelingt bislang nicht, denn Nvidia hat bislang keine für diesen Chip geeignete Firmware veröffentlicht, die in die Firmware-Sammlung linux-firmware einfließen könnte.

Der für die Grafikkerne der verschiedenen Raspberry-Pi-Modelle zuständige Treiber VC4 unterstützt jetzt HDMI CEC (Consumer Electronics Control). Dabei handelt es sich um einen Standard, um mehrere per HDMI verbundene Geräte über eine Fernbedienung zu steuern.

Neben den erwähnten Neuerungen bei Grafiktreibern gab es noch Hunderte weitere. Einige der wichtigsten nennt ein Kommentar des Git-Commits, der die wesentlichen Änderungen am Direct Rendering Manager (DRM) und seinen Treibern gebracht hat. Darunter ist ein Grafiktreiber für den STM32 DSI Controller.

Ebenfalls neu: Ein Treiber für den LCD-Controller Sitronix ST7586, den das Panel des Lego-Roboters Mindstorm EV3 nutzt. Der Code baut auf dem bei Linux 4.11 integrierten Tinydrm auf, mit dem sich recht einfach Treiber für simple und oft via I2C oder SPI angeschlossene Bildschirm-Panel schreiben lassen.

Darüber hinaus gab es einige Detailänderungen am Framebuffer-Subsystem, das früher die von Embedded-Grafiktreibern bevorzugte Basis war.

Die Kernel-Entwickler haben auch zahlreiche andere Treiber überarbeitet und neue integriert, um die Hardware-Unterstützung zu verbessern. Die Alsa- und ASoC-Treiber unterstützten jetzt etwa die Audio-Funktion von Cannon-Lake-Prozessoren, die Intel offenbar in den nächsten Monaten einführen will (1, 2, 3, 4, 5). Die Änderungen am Media-Subsystem haben gleich einen ganzen Schwung neuer Treiber gebracht, die etwa Support für den ST STV0910 DVB-S/S2 Demodulator, den ST STV6111 DVB-S/S2 Tuner oder den Tuner-Demodulator MaxLinear MxL5xx DVB-S/S2 bringen. Zudem gab es größere Umbauten an ddbridge, durch die der Treiber jetzt auf den MXL5xx-Chips aufbauenden DVB-S-Hardware Digital Devices Max S4/8 und Octopus Max unterstützt.

Der Netzwerktreiber e1000e hat bereits jetzt gelernt, zwei neue Generationen des als “LAN on Motherboard” (LOM) eingestuften Netzwerk-Chips Intel i219 anzusprechen. Diese sollen zur 2018 oder 2019 erwarteten Ice-Lake-Platform gehören, die vermutlich in Core-i-Prozessoren der 9000er-Serie stecken wird. Solch vorausschauend in Linux einfließender Treiber-Support macht es Anwendern leicht, denn dadurch werden die im Frühjahr erscheinenden Distributionen die neuen Intel-Chips unterstützen, die womöglich schon einige Monate später auf den Markt kommen. Im Bereich für Code mit größeren Qualitätsmängeln findet sich jetzt ein Treiber für den 802.11ac-WLAN-Chip RTL8822BE von Realtek.

Durch neue und verbesserte Treiber unterstützt Linux 4.14 knapp vierhundert Geräte oder Geräteklassen mehr als sein Vorgänger; bei rund 30 davon handelt es sich um PCI/PCIe- oder USB-Geräte, wie die Datenbanken der Linux Kernel Driver DataBase (LKDDb) zeigen. Darüber hinaus gab es wieder viele Detailverbesserungen, die oft nur wenige Geräte betreffen. Einige Beispiele für Notebooks und Covertables von Asus: Die Entwickler haben für Unterstützung der Multimedia-Keys des Asus Transformer Pro T304UA und des Touchpads vom Asus Transformer Book T100 gesorgt. Beim Asus ROG G752xx und einigen anderen Notebooks funktioniert das Touchpad besser; das ist Änderungen am Elantech-Treiber zu verdanken, durch die er jetzt Touchpads mit zwei Maustasten von Clickpads unterscheiden kann, bei der allein die Fingerposition über Links- oder Rechtsklick entscheidet.

Details zu diesen und weiteren Neuerungen rund um Treiber finden sich in den Kommentaren der Commits, die das Gros der Änderungen der folgenden Subsysteme gebracht haben: Character Devices, Driver Core, Input (1, 2), Human Interface Devices (HID), Hardware-Monitoring, Platform Drivers x86, RDMA, Sound, Staging, TTY, USB und Watchdog.

Darüber hinaus haben die Entwickler die ganzen Firmware-Dateien entfernt, ohne die eine Reihe von Treibern nicht funktioniert. Diese Dateien lagen bislang in den Linux-Quellen unterhalb von firmware/. Dort wurden sie aber schon länger nicht mehr aktualisiert, um Anwender zum Umstieg auf die unabhängig vom Kernel gepflegte Firmware-Sammlung linux-firmware zu bewegen. Alle Mainstream-Distributionen sind bereits seit einer Weile auf diese umgestiegen.

Schrittweise aktualisierter Text zu Linux 4.14

Am 16. September hat Linus Torvalds die erste Vorabversion von Linux 4.14 freigegeben. Damit hat er die “Merge Window” genannte Phase des Entwicklungszyklus abgeschlossen, in der er alle wesentlichen Umbauten für eine neue Kernel-Version vornimmt; größere, erwähnenswerte Änderungen passieren danach nur noch in Ausnahmefällen.

Das Kernel-Log kann daher schon jetzt die Neuerungen der am 6. oder 13. November erwarteten Kernel-Version beschreiben. Das erfolgt wie immer schrittweise. Dieser Text wird daher zwischen Erstpublikation und der Fertigstellung des neuen Kernels mehrfach erweitert, um nach und nach die wesentlichen Änderungen von Linux 4.14 zu beschreiben.

Im neuesten Text-Update kamen Abschnitte zu neuen und verbesserten Treibern dazu, die Sie auf der ersten Artikelseite finden. Ältere Textpassagen zu Architektur- und Infrastukturcode, Sicherheitstechniken, Dateisystemen sowie Storage- und Netzwerk-Support finden Sie auf den folgenden Seiten. Vor die Abschnitte mit bislang beschriebenen Änderungen werden wir noch Absätze stellen, die Verbesserungen bei Treibern beschreiben. Details zur Versionshistorie des Artikels finden Sie am Artikelende