KVM: Xen PV-on-HVM guest support
authorEd Swierk <eswierk@aristanetworks.com>
Thu, 15 Oct 2009 22:21:43 +0000 (15:21 -0700)
committerAvi Kivity <avi@redhat.com>
Thu, 3 Dec 2009 07:32:18 +0000 (09:32 +0200)
commitffde22ac53b6d6b1d7206f1172176a667eead778
tree16ab77d364ba26928136e6d18463845941b6dd2c
parent94c30d9ca6fd00a69e367b91b6e13572c41938c5
KVM: Xen PV-on-HVM guest support

Support for Xen PV-on-HVM guests can be implemented almost entirely in
userspace, except for handling one annoying MSR that maps a Xen
hypercall blob into guest address space.

A generic mechanism to delegate MSR writes to userspace seems overkill
and risks encouraging similar MSR abuse in the future.  Thus this patch
adds special support for the Xen HVM MSR.

I implemented a new ioctl, KVM_XEN_HVM_CONFIG, that lets userspace tell
KVM which MSR the guest will write to, as well as the starting address
and size of the hypercall blobs (one each for 32-bit and 64-bit) that
userspace has loaded from files.  When the guest writes to the MSR, KVM
copies one page of the blob from userspace to the guest.

I've tested this patch with a hacked-up version of Gerd's userspace
code, booting a number of guests (CentOS 5.3 i386 and x86_64, and
FreeBSD 8.0-RC1 amd64) and exercising PV network and block devices.

[jan: fix i386 build warning]
[avi: future proof abi with a flags field]

Signed-off-by: Ed Swierk <eswierk@aristanetworks.com>
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Avi Kivity <avi@redhat.com>
Documentation/kvm/api.txt
arch/x86/include/asm/kvm.h
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/x86.c
include/linux/kvm.h