Kernel Log: What's coming in 2.6.28 - Part 7: architecture support, memory subsystem and virtualisation
It's not just the audio drivers which have seen important changes during the second half of the development phase for 2.6.28 – there have also been significant developments relating to the various architectures supported by Linux, and in virtualisation technologies and memory management – which is one of the reasons why the Kernel Log is only reporting on these new features in the forthcoming version of Linux now, during the final phase of 2.6.28 development.
After several years of development, the kernel development team has adopted a number of "VM pageout scalability improvements", driven primarily by Rik van Riel, which revamp and optimise parts of the memory subsystem (including 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12). This is intended to reduce the administrative overhead for memory-intensive applications and for systems with large amounts of RAM. Details and background on the changes can be found in an LWN.net article. A number of changes introduced by Nick Piggin will also specifically reduce the CPU load arising from memory management (including 1, 2, 3, 4, 5, 6) – LWN.net also has background information on this.
With the include files for ARM, IA64, Power and Sparc having migrated from include/xyz to arch/xyz/include in Linux 2.6.27, the files for a number of other architectures, including MIPS and x86, are now following suit in 2.6.28. The kernel development team have also overhauled APIC support for x86 systems in various places and extended it to include support for x2apic (including 1, 2, 3, 4). One new feature is support for the XSAVE and XRSTOR commands, supported by newer Intel processors, which save or restore the state of x87 and SSE registers during context switches. Following a redesign, apparently driven by AMD, Microcode Loader, which previously only allowed Intel CPU microcode to be updated, now supports newer AMD processors (e.g. 1, 2, 3). There have also been a number of fundamental changes relating to performance and code debugging, including kernel tracepoints (documentation, examples) and the unified trace buffer. The kernel development team have removed irqbalance – in most distributions the eponymous userspace demon has already been taking care of this for several years.
As in Linux 2.6.27, the development team has once again eliminated numerous calls to the Big Kernel Lock (BKL), used for safeguarding critical code regions during multiprocessor operation, or transferred them from the driver subsystem to the drivers themselves. The kernel coders have also pushed forward with consolidation of the directories and source code files for support for x86-32 and x86-64 systems, which started in Linux 2.6.24. This time around, this ongoing process has included various areas of code relating to IRQ management. This should result in further convergence of the behaviour of the 32 and 64 bit kernels, which previously differed somewhat in the way they dealt with IRQ configuration.
2.6.28 also includes a number of new features for virtualisation solutions. Under the KVM virtualisation solution it is now possible to pass PCI devices through to guests, with the help of Intel's VT-D (e.g. 1, 2, 3). Improvements have also been made which should allow operating systems running as KVM guests to start up around 15 per cent faster. The kernel now offers a Container Freezer for container-based visualisation, which allows a container to be frozen completely (documentation), allowing, for example, a low priority cluster job to be temporarily suspended. The kernel code for operating as a Xen guest system (DomU) now also allows CPU hotplugging. Xen DomU and IOMMU support for Intel's Itanium (IA64) has also been added. The Xen code to run a primary Xen domain (Dom0) has, as expected, not made it into 2.6.28.
Further commits relating to architecture and PCI code in the main development tree leading to Linux 2.6.28:
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
Further background and information about developments in the Linux kernel and its environment can also be found in previous issues of the kernel log at heise open:
- Kernel Log: What's coming in 2.6.28 - Part 6: Changes to the audio drivers
- Kernel Log: New kernel versions, progress with Btrfs and Tux3
- Kernel Log: VIA co-operates with the open source developers of openChrome
- Kernel Log: New graphics drivers and Linux versions: Dom0 patches for 2.6.29?
- Kernel Log: What's coming in 2.6.28 - Part 5: updates for netbooks and notebooks
- Kernel Log: New kernels, open audio drivers for X-Fi
Older Kernel logs can be found in the archives or by using the search function at heise open.
(thl/c't)
(djwm)