Don't exit immediately on a guest panic event.

BUG=b:233758484,b:224887095
TEST=manual

Change-Id: I2634f012b7756f7208fc69233b785bddf9b8a818
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/3661258
Commit-Queue: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Auto-Submit: Paramjit Oberoi <psoberoi@google.com>
Reviewed-by: Vineeth Pillai <vineethrp@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Paramjit Oberoi 2022-05-23 17:27:52 -07:00 committed by Chromeos LUCI
parent 0948bc8d3a
commit 6562f9d118

View file

@ -1842,6 +1842,7 @@ fn run_control<V: VmArch + 'static, Vcpu: VcpuArch + 'static>(
vcpu_thread_barrier.wait();
let mut exit_state = ExitState::Stop;
let mut pvpanic_code = PvPanicCode::Unknown;
let mut balloon_stats_id: u64 = 0;
'wait: loop {
@ -1875,14 +1876,9 @@ fn run_control<V: VmArch + 'static, Vcpu: VcpuArch + 'static>(
exit_state = ExitState::Crash;
}
VmEventType::Panic(panic_code) => {
let panic_code = PvPanicCode::from_u8(panic_code);
info!("Guest reported panic [Code: {}]", panic_code);
if panic_code == PvPanicCode::CrashLoaded {
// VM is booting to crash kernel.
break_to_wait = false;
} else {
exit_state = ExitState::GuestPanic;
}
pvpanic_code = PvPanicCode::from_u8(panic_code);
info!("Guest reported panic [Code: {}]", pvpanic_code);
break_to_wait = false;
}
},
Err(e) => {
@ -1890,6 +1886,9 @@ fn run_control<V: VmArch + 'static, Vcpu: VcpuArch + 'static>(
}
}
if break_to_wait {
if pvpanic_code == PvPanicCode::Panicked {
exit_state = ExitState::GuestPanic;
}
break 'wait;
}
}