From 46119f1f2cf0c93d7ec92c1171ccb405d83658a5 Mon Sep 17 00:00:00 2001 From: Steffen Schulz Date: Thu, 2 Sep 2021 17:29:06 -0700 Subject: [PATCH] KVM unknown exit: only fail after default handler also fails Qemu default handler covers some corner cases and prints diagnostics. Failing only afterwards seems to fix a KVM_EXIT_ENTRY_ERROR crash (code 9) --- accel/kvm/kvm-all.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/accel/kvm/kvm-all.c b/accel/kvm/kvm-all.c index 11f7c3ad93..0254410cda 100644 --- a/accel/kvm/kvm-all.c +++ b/accel/kvm/kvm-all.c @@ -2692,12 +2692,13 @@ int kvm_cpu_exec(CPUState *cpu) #define CONFIG_UNKNOWN_ERROR_IS_PANIC #ifndef CONFIG_UNKNOWN_ERROR_IS_PANIC fprintf(stderr, "Unknown exit code (%d) => ABORT\n", run->exit_reason); - assert(false); ret = kvm_arch_handle_exit(cpu, run); + assert(ret == 0); #else debug_fprintf("kvm_arch_handle_exit(%d) => panic\n", run->exit_reason); - handle_hypercall_kafl_panic(run, cpu, (uint64_t)run->hypercall.args[0]); - ret = 0; + ret = kvm_arch_handle_exit(cpu, run); + if (ret != 0) + handle_hypercall_kafl_panic(run, cpu, (uint64_t)run->hypercall.args[0]); #endif #endif ret = kvm_arch_handle_exit(cpu, run);