From d987d9b652ca0e4e9ac7bec51402c049c40fb1b1 Mon Sep 17 00:00:00 2001 From: Meng-Huan Yu Date: Tue, 12 Jan 2021 19:35:09 +0800 Subject: Minidiag: Commit NVRAM immediately right after cleaning diag request Clean up the diag request flag to avoid potential reboot loop if somehow a forced reboot occurs. BRANCH=puff,zork,volteer,trogdor,dedede BUG=b:177303714 TEST=CQ TEST=FEATURES=test P2_TEST_FILTER='*' emerge-zork vboot_reference TEST=boot to minidiag and then do hardware reset, then expect boot to OS instead of boot to minidiag again. Signed-off-by: Meng-Huan Yu Change-Id: I24815d512ca42b78dc42cafaebc666e6a53db793 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2624110 Reviewed-by: Joel Kitching (cherry picked from commit 5046e96cfa81350e53ffc4ac0f87e1b5f9c6eee1) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2677616 Reviewed-by: Nick Vaccaro Commit-Queue: Nick Vaccaro --- firmware/lib/vboot_api_kernel.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index e2d14310..52d3f073 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -236,7 +236,13 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx, VB2_TRY(vb2_broken_recovery_menu(ctx)); } else if (DIAGNOSTIC_UI && vb2api_diagnostic_ui_enabled(ctx) && vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST)) { + /* + * Need to clear the request flag and commit nvdata changes + * immediately to avoid booting back into diagnostic tool when a + * forced system reset occurs. + */ vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 0); + vb2ex_commit_data(ctx); /* Diagnostic boot. This has UI. */ VB2_TRY(vb2_diagnostic_menu(ctx)); -- cgit v1.2.1