Neuer Bildverarbeitungspfad bei Intel Update

Linux-Kernel 4.11

Trends & News | Kernel-Log

Seite 6: Neuer Bildverarbeitungspfad bei Intel

Nach mehren Entwicklungsjahren nutzt der i915-Treiber bei moderneren Intel-Prozessoren nun standardmäßig "Atomic Modesetting". Diese seit Linux 4.2 als stabil geltende Infrastruktur macht unter anderem die Monitor-Konfiguration verlässlicher, weil der Treiber eine von der Hardware nicht unterstützte Betriebsart vorab erkennen kann; dadurch kann er dann zum Beispiel einen Wechsel in eine unzulässige Mehrschirmkonfiguration verweigern, die womöglich zu einem unbedienbaren System geführt hätte.

Atomic Modesetting ermöglicht zudem eine bessere Synchronisation der Bildausgabe. Darauf greift eine andere Neuerung zurück, denn der Intel-Treiber unterstützt nun Explicit Fencing. Mit Hilfe dieser seit Linux 4.10 unterstützten Technik können etwa Desktop-Oberflächen und Programme zuverlässig sicherstellen, dass mehrere Ebenen eines Anwendungsfensters zeitgleich auf dem Bildschirm erscheinen – etwa damit ein Video-Player nicht das von der GPU dekodierte Video anzeigt, bevor auch der Fensterrahmen und die Steuerelemente zur Darstellung bereit sind. Ferner müssen auch Vulkan-Treiber die expliziten Synchronisationspunkte beherrschen, um die 3D-Programmierschnittstelle korrekt zu unterstützten.

Auch der Grafiktreiber "vmwgfx", der für verschiedene von VMware-Produkten emulierten GPUs zuständig ist, unterstützt jetzt Atomic Modesetting.

Neben dem bereits erwähnten Vega-Support gab es noch zahlreiche andere Umbauten am Amdgpu-Treiber. Durch einige lässt sich bei vielen neueren GPUs jetzt ein "Power Profile" via Sysfs setzen. Anwender können darüber etwa beeinflussen, wie weit die Taktfrequenz von GPU oder Grafikspeicher sinken und wie zügig sie in schnellere oder langsamere Zustände wechseln.

Der Treiber für die Grafikkerne auf dem Raspberry Pi kann per HDMI nun auch Audio-Signale ausgeben.

Einige weitere Änderungen rund um die Grafiktreiber des Kernels nennt der Merge mit den wichtigsten Änderungen am Direct Rendering Manager (DRM). Darunter ist etwa noch ein generischer Treiber zur Bildausgabe mit LVDS-Paneln, deren Bridge keinen speziellen Treiber erfordert. Der Kernel erkennt außerdem externe, per Thunderbolt angeschlossene Grafikchips nun als solche; das vermeidet unerwünschte Wechselwirkungen mit der GPU-Zuschaltfunktion, die unter anderem für Notebooks mit zwei Grafikchips gedacht ist (u. a. 1, 2, 3, 4).

Das Open Sound System (OSS) und die darauf aufbauenden Audio-Treiber lassen sich bei 4.12 nicht mehr aktivieren. Dieser Schritt bereitet den Rauswurf von OSS vor, auf das Sound-Treiber typischerweise aufgesetzt haben, bevor die Advanced Linux Sound Architecture (ALSA) mit Linux 2.6 zum Standard-Audio-Interface von Linux wurde. Jetzt, dreizehn Jahre später, steht OSS auf der Abschussliste, weil die im Kernel enthaltene Ausführung von OSS schon lange nicht mehr ordentlich gepflegt wird; außerdem nutzt ihr Code recht häufig einen als unsauber ("hackish") eingestuften Funktionsaufruf des Kernels, den die Entwickler loswerden wollen. Womöglich überdenken die Programmierer den Rauswurfplan allerdings noch, falls das Lahmlegen von OSS zu validen Einsprüchen von Anwendern führt.

Mit Hilfe der "USB Type-C Connector Class" stellt das USB-Subsystem nun Schnittstellen bereit, über die Userspace-Programme besser mit den USB-C-Verbindungen eines Systems interagieren können. Anwendungen können darüber etwa den Status und grundlegende Informationen zu Typ-C-Ports abfragen, aber auch USB-C-Funktionen konfigurieren; beispielsweise Data-Role-Swapping oder die Stromversorgung per USB Power Delivery. Details hierzu erläutert die zugehörige Dokumentation. Das Ganze ist aber vornehmlich für Embedded Systems und weniger für PCs oder Notebooks gedacht: Bei Letzteren funktionieren USB-C-Port schon länger recht ordentlich, weil sich typischerweise deren Firmware um die Konfiguration von Power Delivery & Co. kümmert.

Einige der mittels USB Type-C Connector Class nutzbare Funktionen erfordern Hardware-spezifische Treiber. Einer für einen von Intel gefertigten USB-C-Phy, der zur Broxton-Platform gehört, stieß gleich mit zum Kernel. Auf dem neuen Typ-C-Code baut auch der neue USB Type-C Port Manager (tcpm) auf, der sich um die Konfiguration der Stromversorgung via Typ-C kümmern kann. Genau wie beim neuen Type-C Port Controller Interface driver (tcpci) erfüllt der Code allerdings die Qualitätsrichtlinien der Kernel-Entwickler nicht und liegt daher im Staging-Bereich.

Im Bereich für Code mit Qualitätsmängeln landete auch der Treiber Rtl8723bs. Er unterstützt einen gleichnamigen WLAN-Chip von Realtek, der in einer Reihe zumeist günstiger Systeme zum Einsatz steckt, darunter neben einigen Notebooks mit Atom-Prozessoren auch Intels erster Compute Stick oder der "9-Dollar-Computer" C.H.I.P. Im Staging-Bereich landete auch ein Treiber, mit dem ein Raspberry Pi einen Audio-Strom parallel per Kopfhörer-Anschluss und HDMI ausgeben kann.

Durch die erwähnten und zahlreiche weitere Änderungen unterstützt Linux 4.12 über 750 Geräte oder Geräteklassen mehr als sein Vorgänger. Das geht aus den Datenbanken der Linux Kernel Driver DataBase (LKDDb) hervor, laut denen der Kernel durch neue und verbesserte Treiber rund 100 weitere PCI/PCIe- und USB-Geräte unterstützt. Darunter ist etwa ein Treiber für einen bei manchen Raspberry Pi eingesetzten SD-Host-Controller. Ebenfalls neu dabei ist Support für Intels RealSense SR300 Camera oder die Xbox-360-Gamepads Mad Catz Brawlstick und Razer Sabertooth. Informationen zu zahlreichen weiteren Verbesserungen zur Hardware-Unterstützung finden sich in den wichtigsten Merges der Subsysteme Char, Clk, Dmaengine, I2C, Input (1, 2), HID, Libata, GPIO, Hwmon, Media (DVB, IR, Video, …), MFD, Platform, Sound (1, 2), Staging und USB.

Zur Startzeit-Optimierung bringen die Kernel-Quellen jetzt AnalyzeBoot v2.0 mit. Das im Verzeichnis tools/power/pm-graph/ liegende Script erzeugt eine HTML-Datei mit einer interaktiven Balkengrafik, die zeigt, wie lange welches Kernel-Subsystem zur Initialisierung benötigt. Die dazu erforderlichen Daten kann das Skript auf zwei Arten sammeln: Über den Function Tracer (Ftrace) oder die Ausgaben von dmesg, sofern man beim Booten die Kernel-Option initcall_debug angibt. Der Beobachtungszeitraum beginnt mit dem Start des Kernels und endet mit Aufruf des Init-Prozesses. Dadurch richtet sich das Tool eher an Kernel-Entwickler und tüftelnde Linux-Experten. Werkzeuge wie Systemd-Bootchart sind für viele Nutzer eine bessere Anlaufstelle, weil sie nicht nur den Start des Kernels, sondern auch die weitere Initialisierung des Betriebssystems durch den Init-Prozess analysieren.

AnalyzeBoot analysiert den Kernel-Start und zeigt, wie lange die verschiedenen Subsystem zur Initialisierung benötigen.

AnalyzeBoot zählt zur von Intel vorangetriebenen Werkzeugsammlung PM-Graph. Zu der gehört auch AnalyzeSuspend, das dem Kernel jetzt in Version 4.6 beiliegt. Dieses Tool zeigt, womit der Kernel die Zeit verbringt, wann das System in den Bereitschaftsmodus wechselt oder daraus erwacht. Details zum Einsatz der Skripte liefern die Man-Pages zu Bootgraph und Sleepgraph.

Die Umbauten am Xen-Code enthalten einen Frontend-Treiber für den "9pfs Xen Transport", der einen effizienteren Datenaustausch zwischen verschiedenen Xen-Domänen verspricht; die Kommunikation erfolgt dabei über ein Backend, das in das Qemu einfließen soll. Neu im Xen-Code sind auch Multi-Touch-Support im Eingabegerätetreiber sowie Definitionen für mächtigere Grafik- und Sound-Treiber, die sich per Paravirtualisierung mit dem Hypervisor austauschen. Die Xen-Macher entwickelt diese vornehmlich zum Einsatz bei IT-Systemen von Automobilen.

Eine der vielen Anpassungen an KVM (1, 2) entfernt eine alte Technik, mit der sich Geräte des Hosts an eine Virtual Machine (VM) überstellen ließen. Ferner gab es einige Korrekturen und Optimierungen für Systeme mit Intel-Prozessoren, bei denen man aus einer VM eine weitere VM startet (Nested Virtualization/nVMX).

Eine ganze Reihe von Änderungen gab es wieder an perf und der Kernel-Infrastruktur, auf die das Performance-Analyse-Tool zurückgreift. Dazu gehört Support für AMD IOMMU Events und bessere Unterstützung für eine Reihe für Uncore-Events verschiedener Intel-Prozessoren (u. a. 1, 2, 3, 4). Neu ist auch Code, der die Ausgaben von perf report und perf top nach Symbolgröße sortiert.

Auch bei Function Tracer (Ftrace) gab es wieder eine Reihe von Änderungen. Eine davon rüstet die Trace-Option function-fork nach, durch die das Ablaufverfolgungswerkzeug auch alle von Kindprozessen ausgelösten Funktionsaufrufe im Blick behält, wenn es eine Gruppe von Prozessen beobachtet.

Es gab einige Änderungen, durch die sich kleinere Kernel-Images kompilieren lassen, damit Linux ressourcenschonender läuft und sich besser für Geräte des Internet of Things (IoT) eignet (u. a. 1, 2, 3). Außerdem gibt es Überlegungen, ein neues, schlankeres TTY-Layer zu integrieren; ob das passiert ist aber nach wie vor offen, denn ein entsprechender Vorschlag war schon vor Aufnahme eines vorbereitenden Patches auf größere Gegenwehr gestoßen, wie LWN.net schreibt.

Ein paar Detailanpassungen sollen Programmierern des Linux-Kernels die Arbeit erleichtern. Eine neue Funktion zum atomaren Update von Variablen per cmpxchg macht Code kürzer und übersichtlicher. Neu dabei sind auch die Aufrufe der Familie kv[mz]alloc* (u. a. 1, 2). Mit ihnen fällt Kernel-Code automatisch auf die Speicherallokation mit vmalloc() zurück, falls kmalloc() fehlschlägt; entsprechende Aufrufe sollen an zahlreichen Stellen des Kernels enthaltenen Code ersetzen, die bislang genau das machen; Hintergründe hierzu erläutert LWN.net.

Details zu anderen Neuerungen im Bereich Infrastruktur finden sich in den wichtigsten Commits der Subsysteme ACPI (1, 2), Devicetree, Device Properties Framework, Dokumentation, EDAC, EFI, IOMMU, IRQ, Kbuild (1, 2, 3), Kselftests, Locking, PCI, Power Management (1, 2), RAS, RCU, Prozess-Scheduler, Thermal, Timer, TTY und Virtio.

Kommentare

Anzeige
Anzeige