From ec3bd602ecc1033a15a0d94bcddee11b01134ebe Mon Sep 17 00:00:00 2001 From: Pekka Enberg Date: Wed, 24 Mar 2010 18:13:46 +0200 Subject: [PATCH] Initialize RIP before starting to run the guest Use the return value of load_kernel() to initialize RIP register before starting the guest with KVM_RUN ioctl(). Signed-off-by: Pekka Enberg --- tools/kvm/kvm.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/kvm/kvm.c b/tools/kvm/kvm.c index 62f8d04d3545..faa5bc130795 100644 --- a/tools/kvm/kvm.c +++ b/tools/kvm/kvm.c @@ -27,6 +27,8 @@ struct kvm { uint64_t ram_size; void *ram_start; + + struct kvm_regs regs; }; static void die_perror(const char *s) @@ -134,11 +136,11 @@ static struct kvm *kvm__init(void) static void kvm__run(struct kvm *self) { - int ret; + if (ioctl(self->vcpu_fd, KVM_SET_REGS, &self->regs) < 0) + die_perror("KVM_SET_REGS failed"); - ret = ioctl(self->vcpu_fd, KVM_RUN, 0); - if (ret < 0) - die_perror("KVM_RUN ioctl"); + if (ioctl(self->vcpu_fd, KVM_RUN, 0) < 0) + die_perror("KVM_RUN failed"); } static void kvm__show_registers(struct kvm *self) @@ -257,7 +259,7 @@ int main(int argc, char *argv[]) kvm = kvm__init(); - kvm__load_kernel(kvm, kernel_filename); + kvm->regs.rip = kvm__load_kernel(kvm, kernel_filename); kvm__run(kvm); -- 2.39.5