With 2.6.36, the list of processor architectures supported by the kernel has grown further and now also includes Tilera's TILEPro and TILE64 32-bit processors (for instance 1, 2, 3). These are VLIW processors which are similar to MIPS processors and have multiple cores that communicate with each other through an iMesh network; as they are quite economical, this allows more than 10,000 processor cores to be accommodated in one server rack. Support for NVIDIA's Tegra processors, which are based on the ARM architecture, has been added to the kernel from the Android environment (for instance 1, 2, 3). The kernel now also includes about 90% of the drivers required for the Ben NanoNote (for instance 1, 2, 3, 4, 5, 6, 7, 8) – a pocket computer with an open hardware platform that became available in Europe last spring.
In his Git-Pull request, KVM maintainer Avi Kivity writes that 2.6.36 contains no major new KVM features – however, he points out various performance optimisations and mentions the support of the Xsave (1, 2) and AVX (Intel Advanced Vector Extension) processor commands in guest systems. An overview of the changes to the Xen code is available in the Git-Pull requests by Jeremy Fitzhardinge and Konrad Rzeszutek Wilk. Fitzhardinge's patch collection now allows paravirt drivers to be used in fully virtualised domains ("pv-on-hvm"); the rest of the changes allow Linux to act as a paravirtualised guest system via a kind of virtual IOMMU in order to access the PCI devices provided by a host (Dom0) (for instance 1).
Some of the changes also provide the foundations for code that is to allow running the Linux kernel as an "initial domain" – a kind of trimmed-down Dom0 support. This code is currently being discussed on the LKML and could make it into the Linux main development branch in one of the next few versions.
The kbuild code now offers four new targets:
- "oldnoconfig" replaces "loose_nonint_oldconfig" and sets all the configuration options in the ".config" kernel configuration file to "no" that weren't set before.
- "listnewconfig" replaces "nonint_oldconfig" and lists all the options that haven't been set in the ".config" file.
- "alldefconfig " generates a ".config" with all options set to the defaults listed in the kconfig files.
- "savedefconfig" writes a configuration file called "defconfig" which only includes the options that differ from the default settings listed in the kconfig files.
Using this make target, the developers have generated dozens of default configuration files for the various system and processor architectures supported by the Linux kernel to replace the previous standard configuration files. As the latter used to include all the default options also listed in the kernel's kconfig files, the related giant commit of almost 6 Mbytes removes more than two hundred thousand lines of code in the kernel sources.
The maintainers of the code for Itanium (IA64) and PowerPC support had already trimmed down their configuration files in the same way (1, 2). All of these changes are the main reason why the source code of 2.6.36 is likely to be slightly more compact than that of its immediate predecessor – which is very unusual, as previous kernels in the past few years grew by several hundred thousand lines with every new version.
The default configuration files' slimming diet already started in 2.6.35, when the kernel developers trimmed the files for ARM systems. None of these changes affect Linux users, as "make defconfig" continues to create a basic configuration file for a system in the same way as before.