Kernel-Log – Was 3.7 bringt (4): Treiber

Größe Umbauten sollen die Treiber für Grafikkerne von Intel und Nvidia robuster machen. Linux 3.7 bringt zudem eine Reihe neuer DVB-Treiber und nutzt die Stromsparmechanismen moderner Audio-Chips besser.

In Pocket speichern vorlesen Druckansicht 1 Kommentar lesen
Lesezeit: 30 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Die Entwickler des Nouveau-Treibers haben den zum Kernel gehörenden Teil des Open-Source-Treibers für Nvidia-Grafikkerne grundlegend umgebaut (u. a. 1, 2, 3, 4, 5, 6). Dadurch soll er besser zu Nvidias Chips passen, die die Entwickler in den Jahren des Reverse Engineerings deutlich besser kennengelernt haben. Ziel des Ganzen ist eine saubere, weniger komplexe Treiberarchitektur, mit der sich neue Funktionen leichter implementieren lassen; darunter Support für Nvidias Grafikchip-Kopplungstechnik Scalable Link Interface (SLI), dessen Unterstützung in Nouveau aber bislang nur angedacht ist.

In Linux 3.7 ist zudem rudimentärer Support zum Einstellen der Lüfterregelung bei Grafikkernen der Serien NV40 und NV50 eingezogen, die auf GeForce-Karten der Modellreihen 6xxx bis 300 im Einsatz sind. Bei einigen der GeForce-600-Grafikkarten mit Kepler-GPU (NVE0) nutzt der Nouveau-Treiber nun eine eigene Firmware, die allerdings noch keine Beschleunigungsfunktionen ermöglicht.

Durch größere Umbauten am Intel-Grafiktreiber i915 sollen der Code zum Konfigurieren der Bildschirmausgänge robuster und flexibler arbeiten. Via Sysfs lassen sich nun Informationen zu den Geschwindigkeitsstufen des Grafikkerns auslesen und Limits setzen, um dadurch beispielsweise den maximalen Stromverbrauch zu begrenzen (u. a. 1, 2, 3).

Die Unterstützung für die Grafikkerne einiger noch nicht erhältlicher Prozessoren muss der Anwender über den Treiber-Parameter "preliminary_hw_support" aktivieren – derzeit ist das für die Grafikkerne der im nächsten Jahr erwarteten Prozessoren mit den Codenamen Haswell und ValleyView nötig. Der Ansatz mit dem Parameter soll verhindern, dass Anwender diese Grafikkerne unabsichtlich mit einem unvollständigen oder unausgegorenem Treiber nutzen. Einige weitere für Linux 3.7 am Intel-Treiber vorgenommene Änderungen listet dessen Maintainer Daniel Vetter in einem Blog-Eintrag.

Mehr Infos

Entwicklungsstand

Am Sonntag hat Linus Torvalds die siebte Vorabversion von Linux 3.7 veröffentlicht. Dabei erklärt er, anders als noch beim RC6 erwartet brauche der Kernel brauche unbedingt eine weitere Testwoche, denn die in den RC7 eingeflossenen Änderungen seien "slightly scarier".

Eine Veröffentlichung rund um den ersten Advent scheint derzeit zumindest weiterhin wahrscheinlich. Wie bei der Entwicklung des Linux-Kernels ist es aber nie auszuschließen, dass sich die Freigabe um eine oder mehrere Wochen verzögert, falls die Kernel-Entwickler noch Fehler beseitigen wollen, die nicht-triviale Änderungen erfordern.

Durch Umbauten am Code zur Bildschirmkonfiguration des Radeon-Grafiktreibers sollen neuere AMD-Kerne in bestimmten Fällen nun mehr als zwei Bildschirme mit einer Phasenregelschleife (PLL) ansteuern können. Dadurch sind mehr Multimonitor-Konstellationen als zuvor möglich; zudem soll die Leistungsaufnahme bestimmter Mehrschirmkonfigurationen sinken (1, 2, 3, 4). Die ebenfalls neue Unterstützung für "2-level VM pagetables" verspricht den Speicherverbrauch zu senken. Neue Funktionen zur Kontrolle der Hintergrundbeleuchtung sowie Verbesserungen bei der ACPI-Interaktion mit der System-Firmware sollen unter anderem dafür sorgen, dass die Helligkeitsregelung bei mehr Notebooks als zuvor funktioniert (1, 2, 3, 4).

Die Unterstützung für die zur Laufzeit nutzbaren Stromsparmechanismen im Treiber für die viel genutzten HD-Audio-Chips gilt nun nicht mehr als experimentell und wird standardmäßig aktiviert. Die Kernel-Entwickler haben zudem den Support für "Runtime Power-Management" im HDA-Treiber ausgebaut, damit sich nun auch das dabei involvierte PCI/PCIe-Device schlafen legen kann.

Zum Kernel stieß ein Channel Mapping API zur besseren Abfrage und Konfiguration von Audio-Kanälen, was zur Einrichtung von Surround-Sound interessant ist (1, 2, 3, 4, 5). Neu dabei ist auch ein Treiber für den C-Media-Soundchip CMI8328, der unter anderem auf der Soundkarte AudioExcel AV500 sitzt. Der Versionsstand der Alsa-Treiber im Kernel lässt sich nun nicht mehr über das Proc-Dateisystem auslesen; wie der Commit-Kommentar erklärt, entsprach dieser Wert sowieso nicht der Versionsnummer des Treiber-Pakets, das das Alsa-Projekts selbst anbietet.

Das Media-Subsystem erhielt ein neues API für via USB angebundene DVB-Controller; zahlreiche Kernel-Treiber wurden diesem Zug darauf angepasst. Dieses "DVB USB v2 core API" soll eine Reihe von Fehlern beseitigen und für ordentliches Verhalten bei der Verwendung systemweiter Schlafzustände sorgen.

Die Entwickler haben zudem die Treiberaufteilung unterhalb des Verzeichnisses drivers/media/ der Kernel-Quellen verändert, wodurch zahlreiche Treiber nun in neuen Unterverzeichnissen liegen (u. a. 1, 2, 3, 4). Neben den Umbauten am Nouveau-Treiber und der Abtrennung des Userspace-APIs ist das einer der Hauptgründe, warum eine Unterschiedsanalyse mit Diffstat so viele veränderte Codezeilen gegenüber Linux 3.6 ausweist.

Neu sind auch Multistream-Unterstützung für DVB-T2 und der Treiber adv7604 für den Video-Decoder ADV7604 von Analog Devices. Erstmals dabei ist der Treiber coda für Video-Codecs von Chips&Media sowie Unterstützung für den Infrarot-Empfänger von TechnoTrend. Der Treiber ngene spricht nun die Terratec Cynergy 2400i Dual DVB-T an und af9035 die Asus MyCinema U3100Mini Plus. Zum Kernel stieß ferner der Treiber stk1160 für die gleichnamigen Audio- und Video-USB-Chips, die unter anderem DVR-USB-Hardware von Easycap nutzt. Diese wurde bisher vom Staging-Treiber easycap unterstützt, den die Kernel-Entwickler nun entfernt haben.

Zum Staging-Bereich mit seinem unausgereiften Code stieß der Treiber silicom für die "Bypass" genannten Netzwerkkarten von Silicom, die zwei oder vier Netzwerkports paaren. Das erst bei Linux 3.5 aufgenommene Ramster, das Arbeitsspeicherdaten zur Speicherung an ein anderes System eines Cluster abgeben kann, wurde grundlegend überarbeitet (u. a. 1, 2, 3). Der neue Code verwendet das zusammen mit der Ramster-Überarbeitung integrierte Zcache2 – eine vom Ramster-Entwickler stammende Neuimplementierung des im Staging-Zweig enthaltenen Zcache, das Auslagerungsspeicher und Teile des Arbeitsspeichers komprimieren kann. Die Entwickler der beiden Zcache-Varianten sind sich noch uneinig, welche der beiden Ausführungen die beste Basis für eine nicht im Staging-Bereich angesiedelte Lösung ist.

Das Subsystem für Human Interface Devices (HIDs) unterstützt jetzt die Sony PS3 Blue-ray Disc Remote Control. Bislang wurde die BD-Fernbedienung der Spielkonsole vom BlueZ-Userspacetreiber angesprochen – der dafür zuständige Code wurde allerdings kürzlich entfernt. Der Treiber wiimote spricht nun auch das Nintendo Balance-Board an. Neu ist auch ein Framework für HID-Sensoren.

Das Input-Subsystem unterstützt nun mehr als 32 Eingabegeräte – eine in Multiseat-Konfigurationen gelegentlich erreichte Grenze.

Der Infiniband-Treiber mlx4 kann nun mit Hilfe von SR-IOV Teilfunktionen der vom ihm unterstützen Mellanox-HBAs an virtualisierte Systeme durchreichen (u. a. 1, 2).