Kernel-Log: Was 2.6.28 bringt (7) - Architektur-Unterstützung, Speichersubsystem und Virtualisierung
2.6.28 bringt zahlreiche Verbesserungen für die Speicherverwaltung, die Performance und Skalierbarkeit bei großen Systemen verbessern sollen. Ferner neu sind Unterstützung für x2apic, XSAVE/XRSTOR oder das Durchreichen von PCI-Geräten an KVM-Gäste.
Nicht nur bei den Audio-Treibern, sondern auch beim Code für die verschiedenen von Linux unterstützten Architekturen, den Virtualisierungstechnken und der Speicherverwaltung fanden noch einige wichtige Änderungen in der zweiten Hälfte des Entwicklungsphase von 2.6.28 statt – einer der Gründe, warum das Kernel Log erst in der jetzigen Endphase der 2.6.28-Entwicklung über diese Neuerungen der nächsten Linux-Version berichtet.
Nach jahrelanger Entwicklung nahmen die Kernel-Entwickler zahlreiche maßgeblich von Rik van Riel unter der Bezeichnung "VM pageout scalability improvements" vorangetriebene Änderungen auf, die Teile des Speichersubsystems renovieren und optimieren (u. a. 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12). Das soll denVerwaltungs-Overhead bei speicherlastigen Anwendungen sowie Systemen mit viel Arbeitsspeicher reduzieren; Details und Hintergründe zu den Änderungen finden sich in einem LWN.net-Artikel. Ferner sollen einige von Nick Piggin eingebrachte Änderungen speziell die CPU-Belastung durch die Speicherverwaltung mindern (u.A. 1, 2, 3, 4, 5, 6) – auch hierzu liefert LWN.net Hintergrundinformationen.
Nachdem bereits bei Linux 2.6.27 die Include-Dateien für ARM, IA64, Power oder Sparc von include/xyz nach arch/xyz/include wanderten, folgen nun die Dateien für einige weitere Architekturen – darunter MIPS und x86. Die Kernel-Entwickler überholten ferner die APIC-Unterstützung für x86-System an verschiedenen Stellen und erweiterten sie dabei gleich um Unterstützung für x2apic (u. a. 1, 2, 3, 4). Neu dabei ist auch die Unterstützung für die von neueren Intel-Prozessoren verstandenen Befehle XSAVE und XRSTOR, die den Zustand von x87- und SSE-Registern beim Context-Switch sichern oder wiederherstellen. Der Microcode Loader, über den sich bislang nur der Microcode von Intel-CPUs aktualisieren ließ, unterstützt nach einem maßgeblich von AMD-Entwicklern vorangetriebenen Redesign nun auch neuere AMD-Prozessoren (u. a. 1, 2, 3). Zum Performance- oder Code-Debugging gab es ferner einige grundlegende Neuerungen – darunter die Kernel Tracepoints (Dokumentation, Beispiele) und der Unified Trace Buffer. Entfernt haben die Kernel-Entwickler irqbalance – bei den meisten Distributionen kümmert sich bereits seit Jahren der gleichnamige Userspace-Daemon um diese Aufgabe.
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 teilweise unterschiedlich vorgehen.
Auch für Virtualisierungslösungen bringt 2.6.28 wieder einiges Neues. Mit der Virtualisierungslösung KVM lassen sich nun etwa mit Hilfe von Intels VT-D PCI-Geräte an Gäste durchreichen (u. a. 1, 2, 3); zudem gab es eine Optimierung, die den Startprozess von als KVM-Gast laufenden Betriebssystemen um rund 15 Prozent beschleunigen soll. Für Visualisierung mit Containern bietet der Kernel nun einen Container Freezer, mit dem sich ein Container komplett einfrieren lässt (Dokumentation) – etwa um einen Cluster-Job mit niedriger Priorität vorübergehend komplett anzuhalten. Der Kernel-Code zum Betrieb als Xen-Gastsystem (DomU) ermöglicht nun auch CPU-Hotplugging; neu aufgenommen wurde ferner Xen-DomU- und IOMMU-Unterstützung für Intels Itanium (IA64). Der Xen-Code zum Aufsetzen einer federführenden Xen-Domäne (Dom0) hat die Aufnahme in 2.6.28 wie erwartet nicht geschafft.
Weitere im zu Linux 2.6.28 führenden Hauptentwicklungszweig erfolgte Commits rund um Architektur- und PCI-Code:
x86:
- add AMD IOMMU tree to MAINTAINERS file
- AMD IOMMU: implement lazy IO/TLB flushing
- edac x38: new MC driver module
- KVM: x86: accessors for guest registers
- oprofile: Add support for AMD Family 11h
- x86: add PCI IDs for AMD Barcelona PCI devices
- x86: add PCI IDs for AMD Barcelona PCI devices
- x86: Add sysfs entries for UV v4
- x86: Add UV bios call infrastructure v4
- x86: Add UV EFI table entry v4
- x86: Add UV partition call v4
- x86: add X86_RESERVE_LOW_64K
- x86: AMD microcode patch loading support
- x86: AMD microcode patch loading support v2
- x86: apic - use SET_APIC_DEST_FIELD instead of hardcoded shift
- x86: blacklist DMAR on Intel G31/G33 chipsets
- x86, bootup: add built-in kernel command line for x86 (v2)
- x86: check for and defend against BIOS memory corruption
- x86: configuration options to compile out x86 CPU support code
- x86: consolidate header guards
- x86: doc: move x86-generic documentation from Doc/x86/i386
- x86: drop double underscores from header guards
- x86, gart: add detection of AMD family 0x11 northbridges
- x86, gart: fix gart detection for Fam11h CPUs
- x86: HPET: convert WARN_ON to WARN_ON_ONCE
- x86: HPET: enter hpet_interrupt_handler with interrupts disabled
- x86: HPET: read from HPET_Tn_CMP() not HPET_T0_CMP
- x86: improve UP kernel when CPU-hotplug and SMP is enabled
- x86: major refactoring
- x86: make io_apic_32.c the same as io_apic_64.c
- x86: make io_apic_64.c and io_apic_32.c the same
- x86: Make NUMA on 32-bit depend on BROKEN
- x86: moved Intel microcode patch loader declarations to seperate header file
- x86: PAT documentation updates with debug info
- x86, pci: add northbridge pci ids for fam 0x11 processors
- x86: PIC, L-APIC and I/O APIC debug information
- x86, ptrace: PEBS support
- x86: remove EXPERIMENTAL restriction from CONFIG_HOTPLUG_CPU
- x86: remove irqbalance in kernel for 32 bit
- x86: remove sparse irq from Kconfig
- x86, um: initial part of asm-um move
- x86: usb debug port early console, v4
- x86, xsave: update xsave header bits during ptrace fpregs set
- x86, xsave: xsave cpuid feature bits
Non-x86:
- ARM: 5202/1: pxa: Added Mitac Mio A701 smartphone support.
- ARM: 5210/2: AFEB9260: board support
- ARM: 5238/2: Very basic Palm Zire 72 support
- ARM: OMAP2: Powerdomain: Add base OMAP2/3 powerdomain code
- ARM: OMAP3: Add minimal omap3430 support
- Basic support for the Arcom/Eurotech Viper SBC.
- Blackfin arch: Add new board support for ADZS-BF526-EZ-BRD
- Blackfin arch: add supporting for kgdb
- GPIO: add new Xilinx driver for powerpc
- MIPS: TXx9: Add RBTX4939 board support
- MIPS: TXx9: Add TX4939 SoC support
- MX2: Add DMA support for mx2 and (eventually) mx1
- NIU: Add Sun CP3260 ATCA blade support
- powerpc/86xx: Correct SOC bus-frequency in GE Fanuc SBC610 DTS
- powerpc: Fix Book-E watchdog timer interval setting
- powerpc: Fix msr check in compat_sys_swapcontext
- powerpc/fsl-booke: Fix synchronization bug w/local tlb invalidates
- powerpc: Repair device bindings documentation
- rename io_apic_64.c and io_apic_32.c to io_apic.c
- sparc: remove CONFIG_SUN4
PCI:
- PCI: allow quirks to be compiled out
- PCI: follow lspci device/vendor style
- PCI PM: Introduce function pci_wake_from_d3
- PCI: support PCIe ARI capability
- PCI: tidy PME support messages
- x86/PCI: follow lspci device/vendor style
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich auch in den vorangegangen Ausgaben des Kernel-Logs auf heise open:
- 12.12.2008: Was 2.6.28 bringt (6) - Neuerungen bei Audio-Treibern
- 12.12.2008: Neue Kernel-Versionen, Fortschritte bei Btrfs und Tux3
- 20.11.2008: VIA arbeitet mit Open-Source-Entwickler von openChrome zusammen
- 17.11.2008: Neue Grafiktreiber und Linux-Versionen; Dom0-Patches für 2.6.29?
- 13.11.2008: Was 2.6.28 bringt (5) - Neuerungen für Net- und Notebooks
- 10.11.2008: Neue Kernel, offene Audio-Treiber für X-Fi
- 28.10.2008: Video-Kurzinterviews mit Torvalds, Kroah-Hartman und Co.
- 24.10.2008: 2.6.28-rc1 veröffentlicht, neue Grafik- und Kamera-Treiber
- 24.10.2008: Was 2.6.28 bringt (4) – Verbesserungen bei der Grafik-Unterstützung
Ältere Kernel-Logs finden sich über das Archiv oder die Suchfunktion von heise open. (thl)