Revision bb44e0d1 kvm-all.c

b/kvm-all.c
817 817
#ifdef KVM_CAP_INTERNAL_ERROR_DATA
818 818
static int kvm_handle_internal_error(CPUState *env, struct kvm_run *run)
819 819
{
820

  
820
    fprintf(stderr, "KVM internal error.");
821 821
    if (kvm_check_extension(kvm_state, KVM_CAP_INTERNAL_ERROR_DATA)) {
822 822
        int i;
823 823

  
824
        fprintf(stderr, "KVM internal error. Suberror: %d\n",
825
                run->internal.suberror);
826

  
824
        fprintf(stderr, " Suberror: %d\n", run->internal.suberror);
827 825
        for (i = 0; i < run->internal.ndata; ++i) {
828 826
            fprintf(stderr, "extra data[%d]: %"PRIx64"\n",
829 827
                    i, (uint64_t)run->internal.data[i]);
830 828
        }
829
    } else {
830
        fprintf(stderr, "\n");
831 831
    }
832
    cpu_dump_state(env, stderr, fprintf, 0);
833 832
    if (run->internal.suberror == KVM_INTERNAL_ERROR_EMULATION) {
834 833
        fprintf(stderr, "emulation failure\n");
835 834
        if (!kvm_arch_stop_on_emulation_error(env)) {
835
            cpu_dump_state(env, stderr, fprintf, 0);
836 836
            return 0;
837 837
        }
838 838
    }
......
966 966
            ret = 1;
967 967
            break;
968 968
        case KVM_EXIT_UNKNOWN:
969
            DPRINTF("kvm_exit_unknown\n");
970
            ret = -1;
971
            break;
972
        case KVM_EXIT_FAIL_ENTRY:
973
            DPRINTF("kvm_exit_fail_entry\n");
974
            ret = -1;
975
            break;
976
        case KVM_EXIT_EXCEPTION:
977
            DPRINTF("kvm_exit_exception\n");
969
            fprintf(stderr, "KVM: unknown exit, hardware reason %" PRIx64 "\n",
970
                    (uint64_t)run->hw.hardware_exit_reason);
978 971
            ret = -1;
979 972
            break;
980 973
#ifdef KVM_CAP_INTERNAL_ERROR_DATA
......
1001 994
    } while (ret > 0);
1002 995

  
1003 996
    if (ret < 0) {
997
        cpu_dump_state(env, stderr, fprintf, 0);
1004 998
        vm_stop(0);
1005 999
        env->exit_request = 1;
1006 1000
    }

Also available in: Unified diff