diff options
Diffstat (limited to 'kvm-all.c')
-rw-r--r-- | kvm-all.c | 22 |
1 files changed, 8 insertions, 14 deletions
@@ -817,22 +817,22 @@ static int kvm_handle_io(uint16_t port, void *data, int direction, int size, #ifdef KVM_CAP_INTERNAL_ERROR_DATA static int kvm_handle_internal_error(CPUState *env, struct kvm_run *run) { - + fprintf(stderr, "KVM internal error."); if (kvm_check_extension(kvm_state, KVM_CAP_INTERNAL_ERROR_DATA)) { int i; - fprintf(stderr, "KVM internal error. Suberror: %d\n", - run->internal.suberror); - + fprintf(stderr, " Suberror: %d\n", run->internal.suberror); for (i = 0; i < run->internal.ndata; ++i) { fprintf(stderr, "extra data[%d]: %"PRIx64"\n", i, (uint64_t)run->internal.data[i]); } + } else { + fprintf(stderr, "\n"); } - cpu_dump_state(env, stderr, fprintf, 0); if (run->internal.suberror == KVM_INTERNAL_ERROR_EMULATION) { fprintf(stderr, "emulation failure\n"); if (!kvm_arch_stop_on_emulation_error(env)) { + cpu_dump_state(env, stderr, fprintf, 0); return 0; } } @@ -966,15 +966,8 @@ int kvm_cpu_exec(CPUState *env) ret = 1; break; case KVM_EXIT_UNKNOWN: - DPRINTF("kvm_exit_unknown\n"); - ret = -1; - break; - case KVM_EXIT_FAIL_ENTRY: - DPRINTF("kvm_exit_fail_entry\n"); - ret = -1; - break; - case KVM_EXIT_EXCEPTION: - DPRINTF("kvm_exit_exception\n"); + fprintf(stderr, "KVM: unknown exit, hardware reason %" PRIx64 "\n", + (uint64_t)run->hw.hardware_exit_reason); ret = -1; break; #ifdef KVM_CAP_INTERNAL_ERROR_DATA @@ -1001,6 +994,7 @@ int kvm_cpu_exec(CPUState *env) } while (ret > 0); if (ret < 0) { + cpu_dump_state(env, stderr, fprintf, 0); vm_stop(0); env->exit_request = 1; } |