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

Seite 2: Staging, DMA-Buffer, Verschiedenes

Inhaltsverzeichnis

In den Staging-Bereich eingezogen sind wie erwartet einige Android-spezifische Treiber – darunter auch einige, die vor Jahren schon mal im Staging-Bereich waren, aber wieder entfernt wurden, weil sich niemand um sie gekümmert hatte (u. a. 1, 2, 3, 4, 5). Durch diese Änderungen soll der Standard-Kernel jetzt alles Nötige zum Booten des Android-Userlands mitbringen; es fehlt allerdings noch der Wakelock-Code oder ein Äquivalent, um ordentliche Akku-Laufzeiten zu erreichen. Einige Hintergründe zum Stand der Integration der Android-spezifischen Änderungen hat John Stultz kürzlich in einem LWN.net-Artikel zusammengefasst, in dem er von einem Treffen der Android Mainlining Interest Group berichtet.

Neu im Staging-Bereich ist ein rudimentärer DRM/KMS-Treiber für die OMAP-Platform von Texas Instruments. Entfernt haben die Kernel-Entwickler unter anderem den Staging-Code des Dateisystems pohmelfs, da dessen Erfinder an einem Nachfolger arbeitet, den er neu entwickelt hat (1, 2).

Über den Verwalter der DRM-Subsystems stieß ein "DMA Buffer Sharing Mechanism" (dma_buf) genanntes Framework zum Kernel, über das sich mehrere Treiber einen DMA Buffer teilen können (u. a. 1, Dokumentation). Diese bislang noch von keinen Treiber genutzte Infrastruktur ist für Embedded-Systeme interessant, da der Kernel damit beispielsweise die von einer Kamera erfassten Bilddaten sowohl an einen Video-Encoder als auch an die Grafikhardware zur Darstellung weiterleiten kann, ohne die Bilddaten im Arbeitsspeicher vervielfältigen zu müssen.

In Systemen mit Hybridgrafik könnte ein dedizierter Grafikchip mittels dma_buf die von ihm berechneten Bilder ohne viel Aufwand über die Chipsatz- oder Prozessor-Grafik ausgeben – das ist etwa zur Unterstützung von Nvidias Technik Optimus interessant, die sich in nicht wenigen modernen Notebooks findet. Es wird allerdings noch diskutiert, ob auch proprietäre Treiber wie jener von Nvidia den DMA-Buffer-Sharing-Mechanismus verwenden dürfen; Rob Clark, einer der Hauptentwickler des Codes, hat sich einen Monat nach Beginn der Diskussion dafür ausgesprochen, es zu erlauben.

Einige Hintergründe zur DMA-Buf-Infrastruktur finden sich in einem LWN.net-Artikel und zwei Videos: Das erste stammt von einem Vortrag auf der Embedded Linux Conference (ELC), in dem Rob Clark das Framework beschrieben hat; die zweite Aufzeichnung zeigt einen Fosdem-Vortrag, in dem Daniel Vetter die Technik erläutert.

  • Die im Rahmen des Alsa-Projekts entwickelten Audio-Treiber des Kernels können die zur Ausgabe an die Hardware gesendeten Daten jetzt komprimiert übertragen (u. a. 1, Dokumentation). Der Treiber für HDA-Codecs von Cirrus spricht nun den Cirrus Logic 4213 an. Zu den weiteren Änderungen zählen eine Fortsetzung der Umbauten, damit die Treiber seltener auf im Kernel hinterlegte Sonderbehandlungen zurückgreifen müssen, um Realtek-Audio-Chips korrekt zu konfigurieren.
  • Neu in Linux 3.3 ist Code für den Tuner der Terratec H7; die Aufnahme eines Treiber für diese USB-Box, die digitales Antennen- und Kabelfernsehen ermöglicht und ein CI-Modul enthält, ist noch in Vorbereitung. Es gab zudem eine Reihe von Umbauarbeiten und Erweiterungen rund um die Programmierschnittstellen (APIs) der Frontend- und Tuner-Treiber; Details finden sich bei den kleinen Perlen auf der nächsten Seite und in einer Mail von Media-Subsystem-Betreuer Mauro Carvalho Chehab.
  • Die ATA-Treiber erhielten einige Verbesserungen zum Power-Management zur Laufzeit (1, 2, 3, 4).
  • Der Treiber für ALPS-Touchpads spricht nun Touchpads an, die Version 3 und 4 eines ALPS-Protokolls verwenden. Bisher nutzte der Kernel deren PS/2-Kompatibiltiätsmodus, der eine Doppelklick-Funktion bereitstellten; jetzt muss man diese Funktion unter Umständen explizit aktivieren.
  • Der Hardware-Monitoring-Treiber it87 unterstützt nun den auf einigen Mainstream-Mainboards eingesetzten Baustein IT8728F.
  • Bei der Programmierung von Kernel-Treibern gibt es nun keine Sonderbehandlung mehr für "System Devices" (sysdev) (1, 2); Treiber für Plattform-spezifische Geräte müssen in Zukunft mit den regulären Schnittstellen und Bus-Funktionen vorlieb nehmen.
  • Durch den neuen Charger Manager (Dokumentation) lernt der Kernel einige Funktionen zum Laden von Batterien auf Geräten, wo die Software den Ladevorgang überwachen und regeln muss.
Mehr Infos

Die "Was Linux 3.3 bringt"-Serie

Das Kernel-Log kann bereits jetzt einen Überblick über die wichtigsten Neuerungen der Mitte März erwarteten Linux-Version 3.3 geben, da alle größeren Neuerungen bereits in den ersten zwei Entwicklungswochen integriert wurden; Linux 3.3 befindet sich daher jetzt in der Stabilisierungsphase, in der die Kernel-Hacker normalerweise keine größeren Änderungen mehr vornehmen.

Über einige der Neuerungen von Linux 3.3 hat das Kernel-Log bereits berichtet:

Der nebenstehende Text schließt die "Was 3.3 bringt"-Serie ab.