Kernel-Log – Was 3.15 bringt (4): Infrastruktur
Linux soll sich bald mit dem LLVM-basierten Clang kompilieren lassen. Der Kernel unterstützt zwei weitere x86-Instruktionen. Ein 64-Bit-Linux bootet jetzt auch auf 64-Bit-x86-UEFI-Systemen, die eine 32-Bit-Firmware verwenden.
- Thorsten Leemhuis
Durch eine Handvoll von Änderungen arbeitet der Linux-Kernel beim Schlafenlegen und Wecken von Komponenten jetzt an weiteren Stellen asynchron, was die Zeit zum Suspend und Resume des Systems reduzieren kann (1, 2, 3, 4, 5). Die dadurch erzielte Steigerung dürfte auf vielen Systemen aber deutlich kleiner sein als der Gewinn durch die Änderungen am Storage-Code, durch die 3.15 auf manchen Systemen erheblich schneller aus dem Suspend-to-RAM aufwacht; Details dazu erläutert der erste Teil unserer "Was 3.15 bringt"-Serie.
Schlafregelung
Der Power-Management-Code von 3.15 kann Hardware-Komponenten eine Zeitspanne vorgeben, innerhalb der sie die Arbeit aufnehmen müssen. Dadurch können Komponenten, die Stromsparmodi autark ansteuern, Wechsel in zu tiefe Schlafzustände vermeiden, damit Performance und Reaktionsgeschwindigkeit des Systems nicht leiden (1, 2). Details zur Arbeitsweise und Verwendung des "Latency tolerance device PM QoS type" erläutert ein Artikel bei LWN.net.
EFI Mixed Mode
Ein 64-Bit-Kernel startet nun auch auf Systemen mit x86-64-Prozessor, aber 32-Bit-UEFI-Firmware (u. a. 1, 2). Dank diesem "EFI Mixed Mode" lässt sich Linux jetzt auf einer Handvoll Notebooks und Tablets verwenden, die Intels Bay-Trail-Prozessoren enthalten, aufgrund von Versorgungsproblemen mit Windows-Treibern aber eine 32-Bit-UEFI-Firmware nutzen – bislang ging das bei solchen Geräten nur mit viel Gebastel. In diese Klasse fällt etwa das in c't 1/14 getestete Packard Bell EasyNote ME69 BMP. Da diesem und einigen ähnlichen Systemen auch ein Compatibility Support Module (CSM) fehlt, kann man auf ihnen bislang nur eine der äußerst raren x86-32-Distributionen installieren, die einen 32-Bit-UEFI-Loader mitbringen.
Die "Was Linux 3.15 bringt"-Serie
Das Kernel-Log kann bereits jetzt einen Überblick über die wichtigsten Neuerungen der Linux-Version 3.15 geben, da alle größeren Änderungen bereits in den ersten zwei Entwicklungswochen integriert wurden; das Ende Mai oder Anfang Juni erwartete Linux 3.15 befindet sich seit dem in der Stabilisierungsphase, in der die Kernel-Hacker nur selten größere Umbauten vornehmen.
Über einige der Neuerungen von Linux 3.15 hat das Kernel-Log bereits im Rahmen der Artikelserie "Was 3.15 bringt" berichtet:
In der kommenden Woche folgt noch ein Artikel zu Treibern.
Neue CPU-Instruktionen
Der Kernel 3.15 beherrscht die neue x86-Instruktion RDSEED (1, 2). Ähnlich wie beim seit 3.2 unterstützten RDRAND ruft RDSEED Zufallsdaten beim Prozessor ab; bei RDSEED wird dessen Pseudo-Random Number Generator (PRNG) aber bei jedem Instruktionsaufruf mit echten Zufallsdaten frisch initialisiert. Intels im Sommer erwartete Broadwell-Prozessoren sollen RDSEED mitbringen.
Neu ist auch Unterstützung für den Instruktionssatz AVX512 (1, 2); ihn sollen verschiedene, in den nächsten Jahren erwartete Intel-Prozessoren beherrschen, um über 32 Register à 512 Bit parallel 8 doppelt genaue Gleitkommawerte zu berechnen.
Verschiedenes
Einige Entwickler des LLVMLinux Project haben die Kompatibilität mit Clang verbessert; bei den nächsten Versionen sollen weitere Patches dieser Art folgen, damit sich der Linux-Kernel bald mit dem C-Compiler kompilieren lässt, der auf der Compiler-Infrastruktur LLVM aufsetzt.
Der Firmware gegenüber meldet der ACPI-Code des Kernel jetzt Kompatibilität zu "Windows 2013". Der neue Kernel soll dadurch auch auf einigen neueren Systemen sauber laufen, bei denen ältere Versionen aufgrund von Firmware-Fehlern Probleme zeigen; in einigen Fällen bootet Linux nicht einmal.
Kernel mit Unterstützung für Modul-Signaturen können sich jetzt selbst mit dem Taint-Flag "E" markieren, wenn sie ein unsigniertes Modul laden (1, 2).
Der ARM-Code unterstützt jetzt Uprobes, das Performance- und Ablaufprüfpunkte zur Laufzeit in Userspace-Software einfügen kann.
Der Kernel-Debugger KGDB funktioniert jetzt auch auf ARM64.
Merge Commits
Es gab noch hunderte andere Änderungen am Code der beschriebenen Kernel-Bereiche. Informationen zu diesen finden Sie über die folgenden Links auf Git-Merge-Commits, mit denen die wesentlichsten Neuerungen dieser Bereiche in Linux 3.15 eingeflossen sind; die zugehörigen Commit-Kommentare enthalten zumeist eine Beschreibung der wichtigsten Änderungen des jeweiligen Subsystems.
- Pull ACPI and power management updates from Rafael Wysocki
- Pull ARC changes from Vineet Gupta
- Pull ARM64 updates from Catalin Marinas
- Pull ARM changes from Russell King
- Pull ARM SoC board changes from Arnd Bergmann
- Pull ARM SoC cleanups from Arnd Bergmann
- Pull ARM SoC device tree changes from Arnd Bergmann
- Pull ARM SoC driver changes from Arnd Bergmann
- Pull ARM SoC late cleanups from Arnd Bergmann
- Pull ARM SoC non-critical bug fixes from Arnd Bergmann
- Pull ARM SoC sh driver change from Arnd Bergmann
- Pull ARM SoC specific changes from Arnd Bergmann
- Pull compat time conversion changes from Peter Anvin
- Pull core locking updates from Ingo Molnar
- Pull CPU hotplug notifiers registration fixes from Rafael Wysocki
- Pull devicetree changes from Grant Likely
- Pull /dev/random changes from Ted Ts'o
- Pull Hexagon updates from Richard Kuo
- Pull IOMMU upates from Joerg Roedel
- Pull irq code updates from Thomas Gleixner
- Pull kvm updates from Paolo Bonzini
- Pull m68k fixes from Greg Ungerer
- Pull main powerpc updates from Ben Herrenschmidt
- Pull Metag architecture changes from James Hogan
- Pull MIPS updates from Ralf Baechle
- Pull more ACPI and power management fixes and updates from Rafael Wysocki
- Pull more ACPI and power management updates from Rafael Wysocki
- Pull more powerpc updates from Ben Herrenschmidt
- Pull more tracing updates from Steven Rostedt
- Pull PCI changes from Bjorn Helgaas
- Pull perf changes from Ingo Molnar
- Pull powerpc non-virtualized cpuidle from Ben Herrenschmidt
- Pull regmap updates from Mark Brown
- Pull s390 compat wrapper rework from Heiko Carstens
- Pull s390 updates from Martin Schwidefsky
- Pull second set of arm64 updates from Catalin Marinas
- Pull second set of ARM changes from Russell King
- Pull second set of s390 patches from Martin Schwidefsky
- Pull slave-dmaengine updates from Vinod Koul
- Pull spi fixes from Mark Brown
- Pull spi Updates from Mark Brown
- Pull timer changes from Thomas Gleixner
- Pull tracing updates from Steven Rostedt
- Pull VFIO updates from Alex Williamson
- Pull virtio updates from Rusty Russell
- Pull x86 boot changes from Peter Anvin
- Pull x86 cpu handling changes from Ingo Molnar
- Pull x86 EFI changes from Ingo Molnar
- Pull x86 old platform removal from Peter Anvin
- Pull x86 reboot changes from Ingo Molnar
- Pull x86 vdso changes from Peter Anvin
- Pull Xen features and fixes from David Vrabel
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf dem Twitter-Konto "@kernellog" annonciert. (thl) (thl)