From da6b7b8d7d3b85345624fec1c869cc64e96e344a Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Tue, 23 Mar 2010 07:38:07 +0200 Subject: [PATCH] Initialize KVM some more This patch adds some more KVM initialization code. Doesn't work yet, though. Signed-off-by: Pekka Enberg --- tools/kvm/kvm.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c index b4dece22f770..1bbcbc56afda 100644 --- a/tools/kvm/kvm.c +++ b/tools/kvm/kvm.c @@ -8,6 +8,7 @@ struct kvm { int fd; /* /dev/kvm */ int vmfd; + int vcpu_fd; }; static void die(const char *s) @@ -50,6 +51,7 @@ static struct kvm *kvm__new(void) static struct kvm *kvm__init(void) { + struct kvm_userspace_memory_region mem; struct kvm *self; int ret; @@ -70,9 +72,32 @@ static struct kvm *kvm__init(void) if (!kvm__supports_extension(self, KVM_CAP_USER_MEMORY)) die("KVM_CAP_USER_MEMORY"); + mem = (struct kvm_userspace_memory_region) { + .slot = 0, + .guest_phys_addr = 0x0UL, + .memory_size = 64UL * 1024UL * 1024UL, + }; + + ret = ioctl(self->vmfd, KVM_SET_USER_MEMORY_REGION, &mem, 1); + if (ret < 0) + die("ioctl(KVM_SET_USER_MEMORY_REGION)"); + + self->vcpu_fd = ioctl(self->vmfd, KVM_CREATE_VCPU, 0); + if (self->vcpu_fd < 0) + die("ioctl(KVM_CREATE_VCPU)"); + return self; } +static void kvm__run(struct kvm *self) +{ + int ret; + + ret = ioctl(self->vcpu_fd, KVM_RUN, 0); + if (ret < 0) + die("KVM_RUN"); +} + int main(int argc, char *argv[]) { struct cpu *cpu; @@ -85,5 +110,7 @@ int main(int argc, char *argv[]) cpu__reset(cpu); + kvm__run(kvm); + return 0; } -- 2.39.5