Die Neuerungen von Linux 4.15

Seite 7: Hardware-Unterstützung

Inhaltsverzeichnis

Neben zahlreichen anderen Architekturen unterstützt Linux jetzt RISC-V. Diese offene Prozessorarchitektur wird von einer ganzen Reihe verschiedener Firmen und Institutionen vorangetrieben. Darunter auch Western Digital, das jüngst prognostiziert hat, irgendwann pro Jahr rund "zwei Milliarden RISC-V-Kerne" in Controllern für Festplatten und SSDs auszuliefern.

Durch den RISC-V-Support ist die Anzahl der Quellcodeverzeichnisse mit Architektur-spezifischem Code auf 31 gewachsen.

(Bild: git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch )

Noch ist die Linux-Unterstützung für die ISA (Instruction Set Architecture) aber nicht zu viel Nutze, weil zum Praxiseinsatz noch einige Dinge fehlen. Vor allem mangelt es an Treibern für RISC-V-Implementierungen und mit ihnen gebaute Boards; eine Reihe solcher Treiber stecken in der Begutachtungsphase und sollen bei 4.16 folgen, nachdem die dafür nötigen Grundlagen jetzt geschaffen wurden.

Die ISA des RISC-V ist für 32-, 64- und 128-Bit-Prozessoren ausgelegt. Sie ist aber nur im weiteren Sinne verwandt mit dem quelloffenen Befehlssatz OpenRISC, den Linux schon länger unterstützt. Die treibenden Kräfte hinter OpenRISC verfolgen aber etwas andere Ziele als die hinter RISC-V, was einer der Gründe ist, warum Riscv.org und Openrisc.io an einigen Stellen anderen Design-Entscheidungen getroffen haben.

Um die Linux-Unterstützung für OpenRISC ist es indes jüngst etwas ruhiger geworden. Mit 4.15 tat sich mal wieder etwas mehr beim OpenRISC-Code, denn der unterstützt dank SMP-Support jetzt auch Prozessoren mit mehreren Kernen.

Einige Hintergründe zum Stand dieser und anderer offener Prozessor-Architekturen hat LWN.net jüngst im Artikel "Is it time for open processors?" zusammengetragen.

Der Hardware-Monitoring-Treiber K10temp kann nun auch die Prozessortemperatur von Ryzen und anderen AMD-Prozessoren mit Zen-Architektur auslesen (1, 2).

Die Audio-Treiber des Kernels unterstützen nun endlich den Sound-Chip, der in AMD-APUs der 2016 eingeführten Stoney-Ridge-Generation steckt; zu diesen gehören etwa die A6- und A9-Modelle der Baureihen 9200 und 9400. Außerdem wissen die Audio-Treiber jetzt auch die Audio-Hardware von Raven-Ridge-CPUs anzusprechen, zu denen neben Ryzen 3 2200G und Ryzen 5 2400G auch die im Herbst eingeführte Ryzen-Mobile-CPUs zählen.

Die Kernel-Entwickler haben das früher für Audio-Treiber genutzte Open Sound System (OSS) entfernt.

(Bild: git.kernel.org – 727dede0ba )

Das bei Linux 4.12 auf die Abschussliste gesetzte Open Sound System (OSS) ist jetzt wie angedroht rausgeflogen. Damit verschwindet ein Stück Historie, denn Sound-Treiber haben typischerweise auf OSS aufgesetzt, bevor die Advanced Linux Sound Architecture (ALSA) mit Linux 2.6 zum Standard-Audio-Interface von Linux wurde.

Die Kernel-Entwickler haben zudem den Support für Intel-WLAN-Chips verbessert, die zur Wireless-9000er-Serie gehören. Diese im Herbst letzten Jahres eingeführten 802.11ac-Chips finden sich bislang vor allem in brandneuen Notebook-Modellen mit Core-i-8000-CPUs. Auch die Unterstützung für eine Reihe anderer WLAN-Chips haben Intels Entwickler verbessert, wodurch der Iwlwifi-Treiber letztlich zahlreiche weitere Ausführungen von Intels WLAN-Chips anzusprechen weiß (u. a. 1, 2, 3, 4, 5, 6, 7).

Allein der Iwlwifi-Treiber erkennt mit 4.15 über 80 weitere Ausführungen von Intels WLAN-Chips – darunter sind nicht nur neue Varianten bekannter WLAN-Bausteine, sondern auch einige bislang nicht unterstützte Chips.

Der x86-Platform-Code bietet jetzt eine Userspace-Schnittstelle, um einige Hardware-Funktionen aus dem Userspace nutzen zu können, die per WMI (Windows Management Instrumentation) ansprechbar sind und letztlich meist vom SMBIOS ausgeführt werden. Darüber lassen sich etwa Funktionen zum Managen und Überwachen von Servern nutzen. Das gelingt jetzt etwa mit dem Platform-Treiber für Notebooks, Desktops und Servern von Dell, bei dem es größere Umbauten gab, um die Funktionen bereitzustellen (1, 2, 3, 4, 5). Durch sie weiß der Treiber nun auch das WMI-Interface neuerer Dell-Systeme zu nutzen.

Der Kernel unterstützt nun auch das Alps T4 Touchpad, das etwa in den HP-Notebooks-Reihen EliteBook 1000 und Zbook Studio zum Einsatz kommt. Die genannten Änderungen an Treibern sind aber ohnehin nur die Spitze eines Eisbergs von neuen oder um Hardware-Support erweiterten Treibern. Durch diese Änderungen unterstützt Linux 4.15 letztlich rund 750 Geräte oder Geräteklassen mehr als sein Vorgänger; bei über 450 davon handelt es sich um PCI/PCIe- oder USB-Geräte, wie die Datenbanken der Linux Kernel Driver DataBase (LKDDb) zeigen. Letztlich erkennt Linux dadurch jetzt rund 16.500 Geräte oder Geräteklassen, die der Kernel via PCI/PCIe oder USB anspricht.

Details zu Änderungen an Treibern und der sie umgebenden Infrastruktur nennen die wichtigsten Merge-Commits der Subsysteme Char, Driver Core, Fbdev, Input, HID, I2C, RDMA, Hwmon, IPMI, Media, MFD, NTB, Platform, Staging, Sound, TTY und USB.

Zur Hardware-Überwachung und für Bastler kann eine neue Funktion interessant sein, durch die der Kernel die Blinkfrequenz einer LED abhängig von der CPU-Last reduziert oder erhöht.

Nach einigen bereits in Linux 4.14 eingeflossenen Patches gab es noch weitere Änderungen, damit /proc/cpuinfo statt des Standardtakts wieder eine Taktfrequenzangabe liefert, die der Kernel grob aus den letzten Betriebszuständen des Prozessors berechnet. Ähnlich war es schon bis hin zu Linux 4.13, wo die Entwickler auf Ausgabe des Basistakts umgestellt hatten, weil solch ein berechneter Wert "inakkurat" sei – das führte allerdings zu Kritik, woraufhin die Entwickler zurück gerudert sind

Mehr und zugleich weniger schwankende Performance bei AMDs Epyc-Prozessoren verspricht eine Änderung am Scheduler, die Prozesse optimaler auf die verfügbaren CPU-Kerne verteilt.

Linux 4.15 nutzt Intels "Turbo Boost Max Technology 3.0" nun auch bei Skylake-X-Systemen, bei denen sich der Prozessor nicht selbst per HWP (Hardware-managed P-states) um das Hoch- und Heruntertakten kümmert. Das ist laut Commit-Kommentar etwa beim Einsatz eines Core i9-7900x auf dem Asrock x299 wichtig: Dort soll HWP im BIOS-Setup standardmäßig deaktiviert sein, wodurch bislang Performance-Potenzial brach lag.

Unter den Änderungen am PCI-Subsystem waren einige, um die Unterstützung für die Stromspartechnik ASPM (Active State Power Management) zu verbessern, die den Stromverbrauch bei der Kommunikation mit PCIe-Geräten reduziert.

Bei der Kernel-Infrastruktur und den Werkzeugen für Performance-Monitoring und -Analysen mit Perf gab es wieder zahlreiche Verbesserungen, die ein Commit-Kommentar näher erläutert. Darunter beispielsweise eine Änderung, durch die sich Flamegraphs leichter erzeugen lassen. Bei Letzteren handelt es sich um eine grafisch ansprechende und übersichtliche Aufarbeitung, wie viel Zeit in welchen Code-Funktionen verbracht wurde.

Auch beim Tracing-Tool Ftrace gab es einige Änderungen. Durch sie erläutert die zugehörige Dokumentation nun auch, wie man Ftrace innerhalb des Kernels einsetzt.

Linux 4.15 unterstützt zahlreiche neue Boards mit ARM-Prozessor.

(Bild: git.kernel.org – 527d147074 )

Bei 4.15 stieß wieder Support für eine Reihe von ARM-SoCs und damit gebauten Boards zum Kernel. Dadurch unterstützt Linux nun etwa den für den Entertainment-Einsatz entworfenen Allwinner R40/V40 oder den für Netzwerk-Hardware ausgelegten Broadcom Hurricane 2. Einer der vielen Merge-Commits des ARM-Subsystems nennt noch zahlreiche weitere jetzt SoCs und Boards, die Linux jetzt unterstützt.

Der ARM64-Code kann jetzt die Scalable Vector Extension (SVE) nutzen (u. a. 1, 2, 3, 4, 5, 6). Dabei handelt es sich um eine Aarch64-Architekturerweiterung, die einen neuen Instruktionssatz mit einer Befehlsstruktur für Vektorlängen von 128 Bit bis 2048 Bit bietet. Man muss also nicht speziell für eine Vektorlänge kompilieren, weil einmal kompilierter Code mit allen Vektorlängen laufen kann. Details zur Technik erläutert ein Blog-Eintrag bei ARM oder eine Datei in der Kernel-Dokumentation.

Einige weitere Änderungen rund um Hardware-nahe Infrastruktur nennen die Kommentare in den wichtigsten Merge-Commits der Codebereiche ACPI, Clock, Devicetree, KVM (1, 2), GPIO, IRQ Core, Power Management (PM), IOMMU, Thermal, VFIO und Xen. Informationen zu den Architektur-spezifischen Änderungen liefern die wichtigsten Merge-Commits am Code für ARC, ARM (Core, DT, SoCs, SoC-Drivers), ARM64 (Core), mk68 (1, 2), MIPS, Powerpc, Parisc, S390 (1, 2), SPARC, x86 (APIC, Cache, Core, Timer). Das sind übrigens nur jene Merges dieser Bereichs, die der Autor aus dem ein oder anderen Grund für erwähnenswert hielt; einige Dutzende andere haben diese Hürde nicht geschafft. Das gleiche gilt auch für andere Aufzählungen dieser Art, die dieser Text enthält.