Kernel-Log – Was 3.0 bringt (4): Treiber | heise online

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

Bessere Unterstützung für neue Chipsätze und Grafikkerne von AMD und Intel; Treiber für Microsofts Kinect und den DVB-T-Nachfolger DVB-T2; zahlreiche Workarounds für verschiedenste Hardware-Probleme.

vorlesen Druckansicht 10 Kommentare lesen
Lesezeit: 43 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Abermals in der Nacht von Montag auf Dienstag hat Linus Torvalds eine Vorabversion von Linux 3.0 veröffentlicht. In der Freigabe-Mail zum RC7 schreibt er, es sei ziemlich ruhig gewesen, aber es habe doch noch einige Neuerungen gegeben, daher hielt er einen weiteren RC für angebracht. Bei der sechsten Vorabversion hatte er bereits angedeutet, das vielleicht schon der RC6 der letzte sein würde.

Wenn Torvalds nicht noch einen weiteren RC einschiebt, dürfte Linux 3.0 vermutlich Ende dieser oder Anfang nächster Woche erscheinen. Das Kernel-Log will daher seine Mini-Serie "Was 3.0 bringt" zum Abschluss bringen und widmet sich im vierten Teil den Neuerungen bei Treibern – darunter jene für Audio-, Grafik-, Multimedia- und Storage-Hardware. Der erste Teil der Artikel-Reihe beschäftigte sich mit den Änderungen an Netzwerk-Treibern und -Infrastruktur, der darauf folgende drehte sich um Dateisysteme; im dritten Teil ging es um plattformspezifischen Code, Virtualisierung und Infrastruktur des Kernels.

Der in Linux 3.0 enthaltene i915-DRM/KMS-Treiber für Intel-Grafikchips in Prozessoren und Chipsätzen für Notebooks und Desktop-PCs soll bereits den Grafikern der Ivy-Bridge-Prozessoren ansteuern können, die Intel vermutlich erst Anfang nächsten Jahres einführen wird (u. a. 1, 2, 3, 4, 5, 6, 7). Der Treiber soll in Zukunft die Stromspartechnik RC6 wieder standardmäßig nutzen. Da störende Wechselwirkungen mit der weniger effizienten Frame Buffer Compression (FBC) bekannt waren, haben die Entwickler FBC zunächst standardmäßig deaktiviert. Kurz vor der Freigabe von Linux 3.0 haben die Entwickler die RC6-Technik dann aber auch deaktiviert , da Probleme aufgetaucht waren. Der Commit-Kommentar deutet aber darauf hin, dass sie demnächst einen weiteren Anlauf nehmen wollen.

Der Radeon-DRM/KMS-Treiber erhält einige Verbesserungen zur Ausgabe via DisplayPort (u. a. 1, 2, 3, 4, 5, 6). Der Treiber spricht jetzt auch den Grafikkern der Llano-Prozessoren an, die AMD kürzlich für Notebooks und Desktop-PCs eingeführt hat (u. a. 1, 2). Um Probleme wie dunkle Bildschirme zu vermeiden, ist die Audio-Ausgabe via HDMI für erste standardmäßig deaktiviert; sie lässt sich über den Kernel-Parameter radeon.audio=1 einschalten. Zudem gab es eine Änderung am Hilfetext zum Radeon-DRM/KMS-Treiber, die klarstellt, dass er jetzt jegliche Radeon-Grafikhardware unterstützt.

Der Nouveau-DRM/KMS-Treiber beherrscht bei den GeForce-Grafikchip-Generationen nv40 und nv84 nun die Pmpeg genannte Technik, mit der sich das Dekodieren von MPEG-Material an den Grafikchip delegieren lässt; es gibt aber bislang kein Userspace-Interface, um Pmpeg zu nutzen. Einige andere Änderungen legen Grundlagen zur Unterstützung verschiedener Techniken, die beim Umschalten zwischen Prozessor-/Chipsatz-Grafik und GeForce-Grafikchips involviert sind (u. a. 1, 2, 3); bei neueren Notebooks nennt Nvidia das "Optimus".

Der DRM-Code unterstützt ab Linux 3.0 zudem eine Farbtiefe von 30-Bit. Zur Aufnahme bei 3.1 ist bereits ein Patch vorgesehen, durch den der Nouveau-Treiber die Firmware selbst erzeugen kann, die zur Nutzung der Beschleunigungsfunktionen von Nvidias Grafikkarten der Serien 400 und 500 (Fermi-GPUs) erforderlich ist; bisher muss man die Firmware mit komplizierten Tricks den proprietären Nvidia-Treibern entlocken. Bald soll es auch eine Reihe von Verbesserungen am Treiber für die virtuelle Grafikhardware mancher VMware-Virtualisierungslösungen geben, der genau wie Nouveau ein Staging-Treiber ist.

Auch der Grafiktreiber gma500 ist ein Staging-Treiber, der den Qualitätsansprüchen seiner Entwickler oder der Kernel-Hacker nicht genügt. Er erhielt einige Erweiterungen, um neben dem GMA500-Grafikkern im Chipsatz US15W (Poulsbo) auch jene in den MID-Plattformen Oaktrail und Moorestown anzusprechen (1, 2). Ferner haben die Kernel-Hacker das TTM-Interface verworfen und ein GEM-Interface zur Speicherverwaltung eingebaut. Unterstützung für den noch in diesem Jahr erwarteten Cedarview ist für Linux 3.1 in Vorbereitung (1, 2). Hauptentwickler Alan Cox ist der Ansicht, die Treiberteile zur Unterstützung von Poulsbo und Cedarview können den Staging-Bereich jetzt verlassen. Die Unterstützung für Chipsätze für Mobile Internet Devices (MID) brauche aber noch einige Aufräumarbeiten, daher soll der Treiber modularisiert werden. Zudem bietet der HDMI-Support bislang nur Grundfunktionen und beherrscht kein HDMI-Audio.

Zum Staging-Bereich stieß ferner der Userspace-Teil des im USB/IP-Projekt entwickelten Frameworks usbip, das USB-Geräte über eine Netzwerkverbindung an andere Systeme weiterreicht. Client- und Host-Treiber von usbip sind bereits seit 2.6.28 Bestandteil von Linux; sie erhielten mit 3.0 einige Änderungen, nachdem es mit ihnen lange nicht vorangegangen war. Eine ganze Reihe von Verbesserungen gab es auch an den Treibern für Microsofts Virtualisierungsschnittstelle Hyper-V, für die Staging-Betreuer Greg Kroah-Hartman die Microsoft-Entwickler in seinem Haupt-Git-Pull-Request lobt.

Neu im Staging-Bereich ist ein Treiber für die Intel Management Engine (Intel ME), die eine Reihe verbreiteter Notebook- und Desktop-PC-Chipsätze von Intel bieten (u. a. 1, ToDo-List). Die Konfigurationsoption "STAGING_EXCLUDE_BUILD" haben die Kernel-Hacker entfernt, damit die Treiber beim Testen jetzt typischerweise kompiliert werden; dadurch verschwindet auch der zugehörige Hilfetext, der klarstellte, dass Staging-Treiber "vielleicht losgehen und den Hund treten, wenn man gerade nicht acht gibt".

Wie mit jeder Kernel-Version gab es auch für Linux 3.0 haufenweise Änderungen, um Probleme mit Hardware zu beseitigen, die fehlerhafte Daten liefert oder sich nicht spezifikationskonform verhält. Exemplarisch sei an dieser Stelle ein Quirk am i915-DRM/KMS-Treiber für Intel-Chips erwähnt. Durch den Patch soll die zu Gnome 3 gehörenden Gnome-Shell auf dem Asus EeeBox PC EB1007 arbeiten; laut dem Autor des Patches lief sie vorher nicht, weil der Asus-PC dem Betriebssystem gegenüber behauptet, wie ein Notebook ein "internes", via LVDS angebundenen Display zu haben.

Ein anderes Beispiel für eine Sonderbehandlung ist ein Commit, der Fehler beim Zusammenspiel mit dem USB-Stick Corsair Padlock v2 und dem Feiya SD/SDHC-Kartenleser umgeht. Besonders häufig sind diese "Quirk" genannten Sonderbehandlungen für die korrekte Funktion von AC97- und HD-Audio-Codecs nötig, die bei PCs für die Audio-Ausgabe zuständig sind. Eine Reihe solcher Patches findet sich im Abschnitt "Die kleinen Perlen" am Ende des Artikels. Die in der Kernel- und Alsa-Dokumentation erläuterten Modul-Parameter der Audio-Treiber können solche Sonderbehandlungen individuell aktivieren. Wenn Ihre Hardware nur durch Angabe solcher Parameter korrekt arbeitet, dann sollten Sie die Informationen zum eigenen System und den benötigten Parametern an die Kernel-/Alsa-Entwickler übermitteln – die können dann einen Quirk erstellen und in den Kernel integrieren, damit die Hardware bei Ihnen und allen anderen Anwendern in Zukunft ohne manuelle Konfiguration korrekt arbeitet.

Erst zur sechsten Vorabversion integrierten die Kernel-Hackern die größte Neuerung im Storage-Bereich: Den Isci genannten Treiber für den SAS-Controller in Intels Server- und Workstation-Chipsatz C600, der in den kommenden Monaten erscheinen soll (u. a. 1). Torvalds war sich erst unsicher, ob er den Treiber so spät im Entwicklungszyklus noch aufgenommen wollte. Er tat es dann aber doch – unter anderem, weil der Treiber-Code für sich alleine steht, daher kann er keine Fehler auslösen, die frühere Kernel nicht gezeigt haben. Neu ist auch der FC-FC4-Provider tcm_fc, der Zusammen mit andere Komponenten den Betrieb als FCoE (Fibre Channel over Ethernet) Target ermöglichen.

Der Treiber mvsas unterstützt nun die Marvell-Chips 88SE9445 und 88SE9485, der Treiber pata_marvell die Bausteine 88SE91A0 und 88SE91A4. Nicht genutzte SATA-Ports lassen sich jetzt komplett abschalten, um den Stromverbrauch zu reduzieren. Der Emulex LightPulse Fibre Channel SCSI driver (lpfc) bietet nun Funktionen zur Kontrolle des für Virtualisierung genutzten SR-IOV (Single-Root I/O Virtualization). Zur Kernel-Dokumentation stießen Erklärungen zu den Sysfs-Dateien, über die sich Informationen rund um das für SSDs oder Netzspeicher mit Thin Provisioning wichtige Discard auslesen lassen.

  • Der XHCI-Treiber für USB 3.0 soll bereits jetzt die EHCI/XHCI-Port-Switching-Funktion der Panther-Point-Chipsätze unterstützen, die zu den Ivy-Bridge-Prozessoren gehören, die Intel vermutlich Anfang nächsten Jahres einführen wird (1, 2).
  • Der Treiber k10temp kann mit Linux 3.0 auch AMD-Prozessoren der Familie 15H (Codename "Bulldozer") ansprechen, die im Spätsommer oder Herbst auf den Markt kommen dürften. Der neue Treiber fam15h_power stellt Schnittstellen bereit, über die sich Informationen zum Stromverbrauch von Bulldozer-CPUs auslesen lassen.
  • Die Kernel-Hacker haben die bislang vom Treiber pkgtemp gebotenen Funktionen zum Auslesen der Temperatursensoren neuerer Intel-CPUs in den Treber coretemp verlagert (1, 2).
  • Das Media-Subsystemen bietet nun Grundfunktionen für DVB-T2-Hardware (1, 2) und bringt einen Treiber für den Sonys DVB-T2-Chip CXD2820R mit. In das Media-Subsystem fließt ein Treiber für den von verschiedenen Herstellern eingesetzten DVB-T-Tuner Micronas DRXD ein (u. a. 1, 2). Neu ist auch ein Treiber für Microsofts Kinect. Einige weitere Neuerungen im Media-Subsystem nennt dessen Betreuer Mauro Carvalho Chehab in seinen beiden Haupt-Git-Pull-Requests (1, 2).
  • Unter den im Rahmen des Alsa-Projekts entwickelten Audio-Treibern des Kernels findet sich jetzt einer für die PCIe-Soundkarte Digigram Lola und einer für das iSight-Mikrofon von Apple. Einige weitere Änderungen nennt Alsa-Entwickler Takashi Iwai in seinem Haupt-Git-Pull-Request.
  • Der Treiber Hid-Multitouch unterstützt jetzt über ein Dutzend weitere Touchscreens; Details finden sich im Abschnitt "Die kleinen Perlen".

Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den "offiziellen" Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderung.

Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten, die bei der Kernel-Konfiguration über "make menuconfig" oder "make xconfig" angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" kennzeichnet Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.

Audio

Grafik

I2C, Hwmon, Watchdog, ...

Input/HID

Media

Platform

Storage

Staging

USB

Various

Die Kernel-Entwickler pflegen das Gros der Änderungen für eine neue Kernel-Version in der Merge Window genannten Phase am Anfang des Entwicklungszyklus in das Quellcodeverwaltungssystem ein. Dadurch stehen die wesentlichen Neuerungen einer neuen Kernel-Version bereits Wochen vor deren Freigabe fest. Gelegentlich nehmen die Kernel-Entwickler in der zweiten Phase des Entwicklungszyklus aber noch einige kleinere, zumeist nicht ganz so wichtige Änderungen der Kategorie "Die kleineren Perlen" in den Linux-Kernel auf – teilweise, nachdem das Kernel-Log über die entsprechenden Subsysteme des Kernels bereits berichtet hat.

Einige solcher Nachzügler gab es diesmal bei den Netzwerktreibern und Dateisystemen:

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 den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl).

(thl)