The Xen virtual machine monitor was recently merged [1] into the upcoming 2.6.23 [2] Linux kernel in a series of patches from Jeremy Fitzhardinge. The project was originally started as a research project [3] at the University of Cambridge, and has been repeatedly discussed [4] as a merge candidate [5] for the mainline Linux kernel.
Xen is described in the project's FAQ [6] as:
"Xen is a virtual machine monitor (VMM) for x86-compatible computers. Xen can securely execute multiple virtual machines, each running its own OS, on a single physical system with close-to-native performance."
The commit diffs:
- [Add Xen interface header files [7]]
- [Core Xen implementation [8]]
- [virtual mmu [9]]
- [event channels [10]]
- [time implementation [11]]
- [configuration [12]]
- [add pinned page flag [13]]
- [Complete pagetable pinning [14]]
- [ignore RW mapping of RO pages in pagetable_init [15]]
- [Account for stolen time [16]]
- [Implement sched_clock [17]]
- [SMP guest support [18]]
- [Add support for preemption [19]]
- [lazy-mmu operations [20]]
- [hack to prevent bad segment register reload [21]]
- [use the hvc console infrastructure for Xen console [22]]
- [Add grant table support [23]]
- [add the Xenbus sysfs and virtual device hotplug driver [24]]
- [add virtual block device driver. [25]]
- [add virtual network device driver [26]]
- [machine operations [27]]
- [handle external requests for shutdown, reboot and sysrq [28]]
- [Place vcpu_info structure into per-cpu memory [29]]
- [Attempt to patch inline versions of common operations [30]]
- [suppress abs symbol warnings for unused reloc pointers [31]]
- [use iret directly when possible [32]]
- [disable all non-virtual drivers [33]]
Links:
[1] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=5ead97c84fa7d63a6a7a2f4e9f18f452bd109045
[2] http://kerneltrap.org/taxonomy/term/371
[3] http://www.cl.cam.ac.uk/research/srg/netos/xen/
[4] http://lwn.net/Articles/125831/
[5] http://lwn.net/Articles/183105/
[6] http://wiki.xensource.com/xenwiki/XenFaq
[7] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=a42089dd358a7673a0a23126589a9029e57c2049
[8] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=5ead97c84fa7d63a6a7a2f4e9f18f452bd109045
[9] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3b827c1b3aadf3adb4c602d19863f2d24e7cbc18
[10] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e46cdb66c8fc1c8d61cfae0f219ff47ac4b9d531
[11] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=15c84731d647c34d1491793fa6be96f5de3432eb
[12] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=e738fca8d7dffec30eeee231c38f128eed56c8c8
[13] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=c85b04c3749507546f6d5868976e4793e35c2ec0
[14] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f4f97b3ea90130520afb478cbc2918be2b6587b8
[15] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=9a4029fd3409eb224eb62c32d9792071382694ec
[16] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f91a8b447b9af64f589f6e13fec7f09b5927563d
[17] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ab55028886dd1dd54585f22bf19a00eb23869340
[18] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f87e4cac4f4e940b328d3deb5b53e642e3881f43
[19] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=f120f13ea0dbb0b0d6675683d5f6faea71277e65
[20] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=d66bf8fcf3fce058a1cd164a7c8ee6093fdf039c
[21] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=8b84ad942b534f8faeb34b68f0f7277ea375fed0
[22] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=b536b4b9623084d86f2b1f19cb44a2d6d74f00bf
[23] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=ad9a86121f5a374b48ce2924f8a9d7e94a04db27
[24] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=4bac07c993d03434ea902d3d4290d9e45944b66c
[25] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=9f27ee595038653ddf8bca871200d39247d6f4fc
[26] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=0d160211965b79de989cf2d170985abeb8da5ec6
[27] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=fefa629abebe328cf6d07f99fe5796dbfc3e4981
[28] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=3e2b8fbeec8f005672f2a2e862fb9c26a0bafedc
[29] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=60223a326fc8fa6e90e2c3fd28ae6de4a311d731
[30] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=6487673b8a858f99a5348e1078b3f5aec700f9e0
[31] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=600b2fc242992e552e0b4e24c8c1f084b341f39b
[32] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=9ec2b804e099e8a326369e6cccab10dee1d172ee
[33] http://git.kernel.org/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=dfdcdd42fdf63452ddd1bed6f49ae2a35dfb5d6c