Porting Linux KVM to FreeBSD (SoC 2007)
Linux KVM is a Virtual Machine Monitor, part of the Linux kernel, that uses Intel VT-x or AMD-V extensions for x86 processors to create a full virtualization environment. This project will consist in porting Linux KVM to the FreeBSD kernel.
Since Linux KVM has a structure similar to that of a device driver (actually, it is a device driver, from many points of view,) core kernel changes will not be required, and the final product of this project will be an external loadable kernel module, exporting an interface based on ioctl() calls to a device descriptor. Part of the project will be also the porting of the userspace client for that interface, a modified qemu that uses KVM for host execution.
First and foremost, this work will make it possible to use FreeBSD as a Virtual Machine Monitor for fully virtualized guests, and, in the future, para-virtualized ones.
There is also an additional benefit. In order to reduce the complexity of the work, I will try to import as much as possible from the existing Linux kernel KVM code, and enhance the linux-kmod-compat code (in /usr/ports/devel/) to implement the features required by the KVM code. As a consequence, the linux-kmod-compat improvements will be useful for other ports as well.
The status of the project has been tracked on http://feanor.sssup.it/~fabio/soc07/.
After the SoC
The development continues, please refer to http://feanor.sssup.it/~fabio/freebsd/lkvm/ for code downloads, instructions and updates.