From 6562f9d118383a9d77b9227bf566cc5d689ce89f Mon Sep 17 00:00:00 2001 From: Paramjit Oberoi Date: Mon, 23 May 2022 17:27:52 -0700 Subject: [PATCH] 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 Reviewed-by: Daniel Verkamp Auto-Submit: Paramjit Oberoi Reviewed-by: Vineeth Pillai Tested-by: kokoro --- src/linux/mod.rs | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/linux/mod.rs b/src/linux/mod.rs index 7cf99dceb9..74e76ef6e2 100644 --- a/src/linux/mod.rs +++ b/src/linux/mod.rs @@ -1842,6 +1842,7 @@ fn run_control( 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( 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( } } if break_to_wait { + if pvpanic_code == PvPanicCode::Panicked { + exit_state = ExitState::GuestPanic; + } break 'wait; } }