Höher und weiter – Die Neuerungen von Linux 2.6.28

Seite 5: Virtualisierung, mehr Treiber

Inhaltsverzeichnis
Treibereien In der Unmenge der für Linux 2.6.28 vorgenommenen Änderungen finden sich eine Unmenge an Patches, die die zahlreichen in den Linux-Quellen enthaltenen Treiber verändern. Diese Patches verbessern die Hardware-Unterstützung, erweitern den Funktionsumfang oder korrigieren schlichtweg Fehler. Die in den nebenstehenden Absätze auf dieser und den vorangegangenen Seiten erwähnten Treiberneuerungen sind nur die allerwichtigsten; viele weitere solcher Änderungen finden sich am Ende des Artikels in zwei thematisch grob sortierten Listen mit Kurzbeschreibungen der jeweiligen Änderung (1, 2). Diese verlinken zum jeweiligen Commit im Webinterface des Verwaltungssystems für den Linux-Quellcode, wo sich in der Regel weitere Informationen zu den Hintergründen der jeweiligen Änderung sowie der Patch selbst findet.

Nachdem bereits bei Linux 2.6.27 die Include-Dateien für ARM, IA64, Power und Sparc von include/xyz nach arch/xyz/include wanderten, folgen nun die Dateien für einige weitere Architekturen – darunter MIPS und x86. Die Kernel-Entwickler überholten ferner die APIC-Unterstützung für x86-Systeme an verschiedenen Stellen und erweiterten sie dabei gleich um Unterstützung für x2apic (u. a. 1, 2, 3, 4). Neu dabei ist auch die Unterstützung für die von neueren Intel-Prozessoren verstandenen Befehle XSAVE und XRSTOR, die den Zustand von x87- und SSE-Registern beim Context-Switch sichern oder wiederherstellen.

Der Microcode Loader, über den sich bislang nur der Microcode von Intel-CPUs aktualisieren ließ, unterstützt nach einem maßgeblich von AMD-Entwicklern vorangetriebenen Redesign nun auch neuere AMD-Prozessoren (u. a. 1, 2, 3). Zum Performance- oder Code-Debugging gibt es ferner einige grundlegende Neuerungen – darunter die Kernel Tracepoints (Dokumentation, Beispiele) und der Unified Trace Buffer. Entfernt haben die Kernel-Entwickler irqbalance – bei den meisten Distributionen kümmert sich bereits seit Jahren der gleichnamige Userspace-Daemon um diese Aufgabe.

Auch für Virtualisierungslösungen bringt 2.6.28 wieder einiges Neues. Mit der Virtualisierungslösung KVM lassen sich nun etwa mit Hilfe von Intels VT-D PCI-Geräte an Gäste durchreichen (u. a. 1, 2, 3); zudem gab es eine Optimierung, die den Startprozess von als KVM-Gast laufenden Betriebssystemen um rund 15 Prozent beschleunigen soll. Für Visualisierung mit Containern bietet der Kernel nun einen Container Freezer, mit dem sich ein Container komplett einfrieren lässt (Dokumentation, LWN.net-Artikel) – etwa um einen Cluster-Job mit niedriger Priorität vorübergehend komplett anzuhalten. Der Kernel-Code zum Betrieb als Xen-Gastsystem (DomU) ermöglicht nun auch CPU-Hotplugging; neu aufgenommen wurde ferner Xen-DomU- und IOMMU-Unterstützung für Intels Itanium (IA64). Der Xen-Code zum Aufsetzen einer federführenden Xen-Domäne (Dom0) hat die Aufnahme in 2.6.28 wie erwartet nicht geschafft.

Die bislang erwähnten Neuerungen waren allerdings nur die wichtigsten. Neu dabei sind etwa auch zahlreiche Treiber für das insbesondere bei Embedded-Systemen eingesetzten Framework ASoC (ALSA System on Chip) – darunter Treiber für die Codecs WM8903, WM8580, WM8900 und WM8971 von Wolfson Microelectronics. Neben dem vor einigen Monaten zu Red Hat gewechselten Jaroslav Kysela ist nun auch der bei Suse beschäftigte Alsa-Entwickler Takashi Iwai offiziell als Verwalter der Audio-Treiber in den Kernel-Quellen gelistet.

Bereits bei der Konfiguration lässt sich nun festlegen, welche Gspca-Treiber tatsächlich übersetzen werden sollen. Neu ist die Unterstützung für die DVB-S2-Chips cx24116, si21xx und stv0288; die Treiber cx88 und dw2102 wurden parallel um DVB-S2-Unterstützung erweitert.

Im Netzwerk-Bereich sind die Treiber enic (10 GBit-NICs von Cisco), jme (Gigabit-NICs von JMicron), qlge (10GBit-NICs von Qlogic) und smsc95xx (USB 2.0 10/100 MBit-Adapter mit SMSC LAN9500) hinzugekommen. Erstmals enthalten sind zudem der Treiber fsl_qe_udc für den QE/CPM USB Device Controller von Freescale und ein USB test and measurement class driver für Geräte, die der USB.org-Spezifikation für "USB Test and Measurement devices" entsprechen.

Der Treiber für Toshiba-Notebooks beherrscht nun die Kontrolle zum Ein- und Ausschalten von Bluetooth und nutzt dazu das rfkill-Framework. Der Framebuffer-Treiber für Intel-Grafikchipsätze kennt jetzt den im Eee 901 verbauten 945GME.

Viele weitere weniger wichtige, aber keineswegs bedeutungslose Änderungen finden sich auf der letzten Seite dieses Artikels – im V4L/DVB-Abschnitte finden sich etwa die Nahmen von zahlreichen DVB-Karten und -Adaptern, mit denen der Linux-Kernel in der Version 2.6.28 umgehen kann.

Wie im September auf dem Kernel-Summit beschlossen, haben die Kernel-Hacker den Entwicklungszweig "Linux-Staging" in den Hauptentwicklungszweig aufgenommen (1, 2). Ursprünglich hatte Greg Kroah-Hartman Linux-Staging vor einigen Monaten gestartet, um dort unabhängig vom offiziellen Linux-Kernel gewartete Open-Source-Treiber zusammenzutragen, die den Qualitätsansprüchen der Kernel-Entwickler nicht genügen; damit wollte man anderen Entwicklern eine zentrale Plattform bieten, um die Treiber dort für eine Aufnahme in den offiziellen Linux-Kernel aufzubereiten.

Die Verbesserung solcher Treiber mit teils schwerwiegenden Problemen im Code oder im Design wollen die Kernel-Entwickler aber nun innerhalb des Hauptentwicklungszweigs vorantreiben; alle Kernel-Hacker hätten den Code dort direkt vor Augen und könnten Verbesserungen über die üblichen, ihnen bekannten Wege beisteuern. Um die reifen von den unreifen Treibern klar zu trennen, landete der bisher in Linux-Staging zusammengetragene Code im neuen Verzeichnis driver/staging/. Damit aber auch den Anwendern klar wird, dass diese Treiber größere Probleme haben können, muss man Staging-Code explizit während der Kernel-Konfiguration aktivieren; beim Laden eines Staging-Treibers wird der Kernel zudem als "TAINT_CRAP" markiert, damit bei Fehlerberichten klar ersichtlich ist, dass ein "mistiger" Treiber geladen war und möglicherweise für Probleme jeglicher art (mit)verantwortlich ist (1, 2).

In dem Dutzend in den Hauptentwicklungszweig aufgenommenen Staging-Treibern sind einige recht bekannte, die einige Linux-Distributionen schon seit Jahren ausliefern – etwa der vom WLAN-NG-Projekt entwickelte Treiber prism2_usb für Intersil-USB-Chips oder der Treiber at76_usb für WLAN-Chips von Atmel. Es wird sich zeigen müssen, ob sich durch die Aufnahme in den Staging-Bereich des offiziellen Kernels nun mehr Kernel-Hacker als zuvor berufen fühlen, die Treiber zu verbessern – gerade bei dem alten und komplexen WLAN-NG-Treiber könnte das Schreiben eines von Grund auf neuen Treibers möglicherweise die bessere Herangehensweise sein, sofern jemand überhaupt noch so viel Arbeit für so alte Hardware investieren will.