Höher und weiter – Die Neuerungen von Linux 2.6.28

Seite 4: Audio und Video, Kernel-Infrastruktur

Inhaltsverzeichnis
Über das Git-Web-Frontend auf Kernel.org lassen sich auch Informationen zu Änderungen an einzelnen Dateien des Linux-Kernels aufrufen – so lässt sich beispielsweise herausfinden, ob es Neuerungen an den auf dem eigenen System eingesetzten Treibern gab. Dazu muss man allerdings wissen, wo sich die Treiberdateien im Quellcodebaum des Linux-Kernels finden. Bei den zumeist stark auf Modulen setzenden Kerneln der Distributionen helfen häufig die Ausgaben des Programms modinfo bei der Suche: [VERBATIM0] Liegt ein kompiliertes Modul etwa in [...]/kernel/drivers/net/e100.ko, dann findet sich dessen Sourcecode im Linux-Quellcodearchiv normalerweise im Verzeichnis drivers/net/ in Dateien mit ähnlichem Namen – etwa e100.c im Falle des für Intel-100-MBit-Netzwerkhardware zuständigen Treibers e100. Andere Module wie der für Intels PCI-Gigabit-LAN-Chips zuständige Treiber e1000 haben hingegen ein Verzeichnis für sich allein. Kennt man die ungefähre Position des Treiber-Quellcodes, navigiert man im Git-Webinterface über die Tree-Ansicht zu den jeweiligen Quellcode-Dateien und ruft über den Link history eine Übersicht über die jüngsten Änderungen an den zugehörigen Dateien oder dem ganzen Verzeichnis auf. Im Verzeichnis für die Netzwerktreiber lassen sich so beispielsweise die Änderungen am Treibercode von e100 (drivers/net/e100.c) und e1000 (drivers/net/e1000/) anzeigen und näher unter die Lupe nehmen.

Die Audio-Treiber von Linux 2.6.28 entsprechen in ungefähr dem Stand der Alsa-Treiber-Version 1.0.18, bringen aber bereits einige zusätzliche, meist allerdings eher kleinere Verbesserungen und Korrekturen mit. Zu den über die neue Alsa-Version eingeflossenen Neuerungen zählt eine Userspace-Schnittstelle, über die Anwendungen erkennen können, an welchen Audio-Buchsen Ein- oder Ausgabegeräte angeschlossen sind (Jack Sensing). Ebenfalls neu ist der Treiber snd-usb-us122l für das Tascam US-122L USB Audio/MIDI Interface. Der Treiber snd-virtuoso versteht sich nun mit der Xonar HDAV1.3 und der Xonar HDAV1.3 Deluxe von Asus.

Zahlreiche Änderungen bringen oder verbessern die Unterstützung für die AC97- und HD-Audio-Codecs verschiedener Hersteller – neu ist etwa der Support für die Codecs AD1882A und AD1980 von Analog Devices, ALC662 und 663 von Realtek oder VT1708S und VT1702 von VIA. Wie mit praktisch jeder neuen Kernel-Version erweiterten die Entwickler zudem die Whitelists für die automatische Anwendung Hardware-spezifischer Workarounds, sodass die Treiber die bei so manchen PCs, Notebooks und Mainboards nötigen und manuell über Modulparameter aktivierten Sonderbehandlungen für die Audio-Codecs auf mehr Hardware als zuvor automatisch aktivieren – ab 2.6.28 beispielsweise beim Dell Studio 15, dem HP Compaq 6730s oder dem Medion MD96630. Entfernt haben die Kernel-Entwickler hingegen den OSS-Treiber hal2. Die OSS-Emulation im Alsa-Modul soundcore ist nun optional, was alternative Implementierungen ermöglicht – damit ist der noch experimentelle OSS Proxy gemeint, der auf das ebenfalls experimentelle CUSE (Character devices in user space) aufsetzt (siehe auch LWN.net-Artikel).

Alleine mehr als 500 der in den vergangenen Wochen für 2.6.28 vorgenommenen Commits verändern den Code im Video-4-Linux-/DVB-Subsystem und bringen dabei zahlreiche Verbesserungen mit (1, 2, 3, 4, 5) – darunter eine große Überarbeitung des Gspca-Treibers t613 und ein neuer Treiber für die Terratec Cinergy T2, der den bisherigen ersetzt. Neu ist zudem ein Gspca-Treiber für den Webcam-Chip M5602 von ALi.

Wie schon bei Linux 2.6.27 haben die Entwickler erneut zahlreiche Aufrufe des im Multiprozessor-Betrieb für die Sicherung kritischer Codebereiche genutzten Big Kernel Lock (BKL) eliminiert oder von den Treiber-Subsystemen in die Treiber selbst verlagert. Weiter vorangetrieben haben die Kernel-Hacker zudem die mit Linux 2.6.24 begonnene Zusammenlegung der Verzeichnisse und Quellcodedateien zur Unterstützung von x86-32- und x86-64-Systemen. Bei diesem fortwährenden Prozess traf es diesmal unter anderem zahlreiche Code-Bereiche rund um das IRQ-Management; dadurch sollte sich das Verhalten von 32- und 64-Bit-x86-Kernel weiter annähern, die bei der IRQ-Konfiguration bislang gelegentlich recht unterschiedlich vorgehen.

Optimiert und um den PRIO based multiqueue packet scheduler erweitert haben die Netzwerk-Entwickler die mit 2.6.27 eingeführte Linux TX Multiqueue Implementation (kurz "multiqueue networking"). Erstmals dabei ist der von Nokia-Entwicklern eingebrachte Phonet Stack (Dokumentation) und die von Herbert Xu entwickelte Unterstützung für Transparent Ethernet Bridging over GRE tunnels. Jan Engelhardt brachte zudem zahlreiche sehr umfangreiche Renovierungsarbeiten am Netfiltercode ein, durch die unter anderem die Ebtables-Unterstützung jetzt auf Xtables aufbaut. Die Netfilter-Infrastruktur unterstützt nach fünf Jahren nun wieder "vernünftig" den Betrieb als transparenter Proxy (aus dem Merge request: "Proper transparent proxy support in netfilter. We sort of lost this feature 5 or so years ago, but hey better late than never to get it back :-)").

Das Initialisieren der Hardware und so den Boot-Vorgang beschleunigen sollen einige von Intel-Entwickler Arjan van de Ven eingebrachte Änderungen (u.A. 1, 2, 3, 4). Diese und einige weitere, von Torvalds allerdings zurückgewiesene Änderungen hatte van de Ven bei dem auf der Linux Plumbers Conference gezeigten Netbook eingesetzt, dass nur fünf Sekunden zum Start von Linux benötigte. Bei den meisten Systemen dürfte Linux 2.6.28 aber trotz der integrierten Fastboot-Patches allerdings nur unwesentlich schneller starten, da gängigen Mainstream-Distribution die meiste Zeit mit dem Initialisieren von Userspace-Diensten sowie dem Laden von Anmelde-Manager und Desktop-Umgebung vertrödeln. Wer dennoch die für die Kernel-Initialisierung benötigte Zeit zu Optimierungszwecken näher analysieren will, kann dabei nun auf neue, speziell für diesem Zweck eingerichtete Tracing-Infrastruktur zurückgreifen.