Kernel-Log – Was 3.17 bringt (3): Treiber

Der Linux-Kernel unterstützt 4K-Monitore und moderne Radeon-Chips besser. Thunderbolt soll nun auch bei Apple-Systemen funktionieren. Der Rauswurf von mehr als einem Dutzend Treibern dürfte den Codeumfang von 3.17 gegenüber seinen Vorgängern verkleinern.

In Pocket speichern vorlesen Druckansicht
Lesezeit: 11 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Der Kernel stellt nun standardmäßig die bei Linux 3.12 eingeführten Render Nodes bereit – Gerätedateien, über die Programme die Rechenfunktionen von Grafikkernen ansprechen können, ohne Root-Rechte zu benötigen oder die Bildschirmausgabe zu beeinflussen.

Linux unterstützt nun auch den bei DisplayPort 1.2 spezifizierten Multi-Stream Transport (MST) – eine Technik, mit der Grafikchips über eine DisplayPort-Verbindung mehrere Monitore ansprechen können. Sie ist zur besseren Unterstützung von 4K-Monitoren nötig, denn manche von ihnen gaukeln Betriebssystemen vor, sie seien zwei per MST angesprochene Displays. MST-Support ist auch für Docking-Stationen wichtig, in denen ein per DisplayPort angesprochener Chip die DVI-, HDMI- oder VGA-Ausgänge stellt.

Mehr Infos

Entwicklungsstand

Linux 3.17 erscheint vielleicht noch im September. Darauf deutet zumindest einiges in der Freigabemail zur sechsten Vorabversion hin. Die Freigabe kann sich aber leicht um eine Woche oder mehr verzögern, falls noch größere Fehler auftauchen.

Bislang implementiert aber nur der i915-Treiber MST. Ferner nutzt der Treiber für Intels Notebook- und Desktop-Grafikkerne nun die zur Laufzeit verwendbaren Stromspartechniken intensiver, wenn der Bildschirmschoner einen Bildschirm per DPMS (VESA Display Power Management Signaling) schlafen legt. Einige weitere Neuerungen listet der Treiber-Maintainer Daniel Vetter in einem Blog-Eintrag; die dort genannten Funktionen Broadwell Semaphores und Panel Self Refresh (PSR) wurden bei 3.17 aber lahmgelegt, weil sie Probleme gezeigt haben (1, 2).

Der schon länger im Kernel enthalte Treibercode für Hawaii-Chips lief aufgrund einiger Fehler nicht korrekt. Die haben die Kernel-Entwickler nun korrigiert, daher soll Linux nun auch mit AMDs Radeon-Grafikkarten der R9-290-Serie arbeiten (u. a. 1, 2, 3, 4). Die wichtigsten dieser Fehlerkorrekturen sind auch in die 3.16er-Stable-Kernel eingeflossen.

Der Radeon-Treiber unterstützt nun sieben weitere Varianten von Radeon-Grafikkernen, deren im Handel verwendete Bezeichnung die Commit-Kommentare allerdings verschweigen (1, 2, 3). Bei den Grafikkernen mit den Codenamen Barts, Turks, Caicos und Cayman nutzt Linux nach einigen Fehlerkorrekturen nun wieder das Dynamic Power Management, das die Leerlauf-Leistungsaufnahme mancher Radeon-Chips erheblich reduziert (1, 2). Die Unterstützung für BAPM (Bidirectional Application Power Management), das neuere AMD-Prozessoren mit Grafikkern (APU/Accelerated Processing Unit) bieten, bleibt aufgrund einiger Probleme standardmäßig deaktiviert; über den neuen Radeon-Parameter "bapm=1" lässt sich die Stromspartechnik nun aber leichter aktivieren.

Der Kernel kann jetzt die verschiedenen Geschwindigkeitsstufen des Grafikkerns im Nvidia-SoC (System-on-Chip) Tegra K1 ansteuern. Der dafür zuständige Code stammt von Nvidia-Mitarbeiten. Die haben den Nouveau-Entwicklern zudem einige Tipps gegeben, durch die der Treiber Kepler-GPUs zuverlässiger initialisiert, wenn deren Grafik-Engine beim Systemstart nicht gestartet wurde.

Erheblich umgebaut haben die Kernel-Entwickler das bei 3.4 integrierte Dma-Buf, das Buffer zum Direct Memory Access (DMA) einrichtet, die mehrere Hardware-Bausteine und deren Treiber verwenden. Durch die Umbauten unterstützt der Code nun "Fences" (u. a. 1, 2, 3, 4, 5, 6, 7). Mit ihnen kann ein Treiber sicherstellen, dass etwa eine Webcam ein Einzelbild eines gerade aufgezeichneten Videos vollständig in einen Buffer schreibt, bevor der Grafikchip mit der Ausgabe der dort enthaltenen Daten beginnt. Solch eine Barriere vermeidet Bildstörungen, denn der Grafikchip gibt sonst Müll aus, wenn er den Bildbuffer schneller liest, als ihn die Webcam füllt.

Die Fences haben noch anderen Einsatzgebiete. Bei PC-Hardware sind sie für moderne Hybridgrafiksysteme interessant, wo der Grafikkern des Prozessors ein Bild ausgibt, das ein zugeschalteter Grafikchip von AMD oder Nvidia berechnet hat. Gerade bei Embedded-Hardware sind DMA-Buffer mit Fences wichtig, damit die verschiedenen Funktionen eines SoC effizient und störungsfrei zusammenarbeiten. Der Android-Kernel hat daher schon länger eine ähnliche Funktion. Eine Variante des dafür zuständige Codes steckt im Staging-Bereich und kann nun auf Fences zurückgreifen.

Während der Entwicklungsphase haben einige Entwickler gefordert, einige Funktionen zur Nutzung von Fences nicht über EXPORT_SYMBOL() freizugeben, sondern über EXPORT_SYMBOL_GPL(). Das sollte klarstellen, dass nur Treiber unter einer GPLv2-kompatiblen Lizenz die Fences verwenden dürfen. Daraus entstand dann eine längere, bei LWN.net zusammengefasste Diskussion, ob EXPORT_SYMBOL_GPL() überhaupt sinnvoll ist. Geändert hat die Debatte aber nichts, daher stellt der Kernel die Fence-Schnittstellen per EXPORT_SYMBOL() bereit, wie es dessen Hauptentwickler von Anfang an vorgesehen hatte.

Was Linux 3.17 bringt

Das Ende September oder Anfang Oktober erwartete Linux 3.17 befindet sich in der Stabilisierungsphase. Größere Umbauarbeiten gibt es in dieser Zeit nur in seltenen Ausnahmefällen, denn alle wesentlichen Neuerungen haben die Kernel-Hacker bereits Anfang August in den ersten beiden Entwicklungswochen integriert. Das Kernel-Log kann daher bereits vor der Fertigstellung einen Überblick über die wichtigsten Änderungen dieser Version liefern. Das erfolgt im Rahmen der Artikelserie "Was 3.17 bringt", die aus drei Teilen besteht:

Thunderbolt soll nun auch bei Apple-Systeme funktionieren. Das ist einem speziellen Treiber zu verdanken, der IRQs und anderer Systemressourcen konfiguriert, wenn man Thunderbolt-Hardware an- oder absteckt. Das ist eigentlich Aufgabe der Firmware, wie Kernel-Entwickler Greg Kroah-Hartman in seinem Blog erklärt hat – Apple überlässt es aber dem Betriebssystem.

Der Joystick-Treiber unterstützt nun den Xbox One Controller. Der Alps-Treiber spricht jetzt Alps-Touchspads der Generation v7 an, die etwa im Toshiba Portege Z30-A stecken. Der Treiber für Synaptic-Touchpads unterstützt nun die als "ForcePads" bezeichneten Touchpads, die HP etwa beim EliteBook 1040 einsetzt. Der Lenovo-HID-Treiber unterstützt nun das die Bluetooth- und USB-Ausführungen des ThinkPad Compact Keyboard with TrackPoint (1, 2).

Beim Treiber für Wacom-Zeichentablets gab es allerlei Umbauten, durch die sich der Treiber nun besser einfügt und weniger Sonderbehandlung erfordert (u. a. 1, 2, 3). Der Kernel bringt nun einen Treiber für einige alte Wacom-Tablets mit, die über einen seriellen Port angeschlossen werden; der Wacom-Treiber für den X-Server konnte diese Tablets früher selbst ansteuern, braucht jetzt aber einen Kernel-Treiber.

Der Sound-Treiber Virtuoso unterstützt nun auch die Asus Xonar Essence STX II.

Zum Direct Rendering Manager (DRM) des Kernels stieß der KMS-taugliche Grafiktreiber Sti für die Grafikkerne in SoCs aus der STMicroelectronics-Serie stiH41x (u. .a 1, 2, 3, 4).

Eine ganze Reihe von Treibern unterstützt nun Intels Braswell (u. a. 1, 2, 3, 4); dieser Anfang 2015 erwartete Prozessorkern soll den Bay Trail beerben, der in neueren Atom-Prozessoren sowie einigen der günstigsten Celeron- und Pentium-CPUs steckt.

Das Crypto-Subsystem bringt nun eine Infrastruktur zur Nutzung von Intels QuickAssist Technology (QAT), mit, über die sich sich eine hardwareunterstützte Optimierung bestimmter Computer-Workloads realisieren lässt (u. a. 1, 2, 3, 4, 5). Auf diese Infrastruktur baut ein ebenfalls neuer Treiber für Intels Crypto-Beschleuniger DH895xcc auf.

Der Kernel bringt nun einen Treiber für den Fallsensor mit, den Toshiba in einigen Notebooks einsetzt (1, 2). Wie die Treiber für die Fallsensoren einiger Dell- und HP-Geräte arbeitet er mit einem Userspace-Dienst zusammen, der die Festplattenköpfe im Fall eines Falles parkt, um das Risiko von Datenverlust und Festplattenschänden zu senken.

Vierzehn Treiber sind aus dem Staging-Bereich geflogen (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14). Darunter war auch der Treiber Crystalhd für den gleichnamigen Video-Beschleuniger-Chip von Broadcom, der in dem ein oder andere Linux-Mediacenter-PC steckt.

Der Quellcode und/oder die Userspace-Schnittstellen dieser Treiber haben nie die Qualitätsansprüche der Kernel-Entwickler erfüllt. Sie wurden daher lediglich in den Staging-Bereich integriert, um den Code im Rahmen des normalen Kernel-Entwicklungsprozess zu verbessern. Die verantwortlichen Programmierer haben aber mittlerweile aufgegeben, daher wurden die Treiber jetzt aus dem Bereich für unzulänglichen Code entfernt.

Staging-Code werfen die Entwickler sogar raus, wenn bekannt ist, dass er noch eingesetzt wird. Auch das Interface zwischen Treiber und Userspace kann sich bei Staging-Code jederzeit ändern. Beides ist beim Linux-Kernel sonst tabu ist. Auf diese Herangehensweise weist Linus Torvalds seine Mitstreiter auch alle paar Wochen deutlich hin. Die "no regressions"-Regel gilt für Staging-Code aber nicht – das und die Qualitätsmängel sind der Grund, warum manche Distributionen gar keine oder nur wenige Staging-Treiber ausliefern.

Durch den Rauswurf der Staging-Treiber wurde der Kernel knapp 250.000 Codezeilen schlanker. Die ganzen anderen Änderungen haben das aber nahezu wieder ausgeglichen, daher ist der RC6 nur rund 15.000 Zeilen kleiner als 3.16. Wenn die bis zur Fertigstellung von 3.17 nicht noch eintrudeln, dann wird 3.17 doch noch eine von lediglich zwei Kernel-Versionen in den letzten Jahren, die kleiner sind als ihr direkter Vorgänger. Die andere war 2.6.36; dort sind die Kernel-Quellen geschrumpft, weil die Kernel-Enwickler einen effizienteren Weg gefunden haben, um Standard-Konfigurationsdateien für verschiedene Platformen bereitzustellen.

Es gab noch hunderte andere Änderungen am Code der beschriebenen Kernel-Bereiche. Informationen dazu finden Sie über die folgenden Links, die auf Git-Merge-Commits verweisen, mit denen die wesentlichsten Neuerungen dieser Bereiche in Linux 3.16 eingeflossen sind; die Kommentare zum Merge enthalten zumeist eine Beschreibung, die die wichtigsten Änderungen des jeweiligen Subsystems nennt.

Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf dem Twitter-Konto "@kernellog" annonciert. (thl) (thl)