aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAvi Kivity <avi@redhat.com>2009-11-04 12:12:02 +0200
committerAvi Kivity <avi@redhat.com>2009-11-15 14:16:36 +0200
commit6a4250b60d1196f27a0a05f258308d963fa5617f (patch)
tree352360f69d3f0766e4b647c10474f23b9a6c8929
parentFix qemu_announce_self_once mismerge (diff)
downloadqemu-kvm-6a4250b60d1196f27a0a05f258308d963fa5617f.tar.gz
qemu-kvm-6a4250b60d1196f27a0a05f258308d963fa5617f.tar.bz2
qemu-kvm-6a4250b60d1196f27a0a05f258308d963fa5617f.zip
Move internal error handling into a function
Signed-off-by: Avi Kivity <avi@redhat.com>
-rw-r--r--qemu-kvm.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/qemu-kvm.c b/qemu-kvm.c
index 809fd65a0..4b225376a 100644
--- a/qemu-kvm.c
+++ b/qemu-kvm.c
@@ -869,6 +869,18 @@ int kvm_is_ready_for_interrupt_injection(CPUState *env)
return env->kvm_run->ready_for_interrupt_injection;
}
+static int kvm_handle_internal_error(kvm_context_t kvm,
+ CPUState *env,
+ struct kvm_run *run)
+{
+ fprintf(stderr, "KVM internal error. Suberror: %d\n",
+ run->internal.suberror);
+ kvm_show_regs(env);
+ if (run->internal.suberror == KVM_INTERNAL_ERROR_EMULATION)
+ fprintf(stderr, "emulation failure, check dmesg for details\n");
+ abort();
+}
+
int kvm_run(CPUState *env)
{
int r;
@@ -967,12 +979,7 @@ int kvm_run(CPUState *env)
break;
#endif
case KVM_EXIT_INTERNAL_ERROR:
- fprintf(stderr, "KVM internal error. Suberror: %d\n",
- run->internal.suberror);
- kvm_show_regs(env);
- if (run->internal.suberror == KVM_INTERNAL_ERROR_EMULATION)
- fprintf(stderr, "emulation failure, check dmesg for details\n");
- abort();
+ r = kvm_handle_internal_error(kvm, env, run);
break;
default:
if (kvm_arch_run(env)) {