summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Te Yuan <yuanhsinte@google.com>2022-07-08 16:55:54 +0800
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-07-15 07:11:44 +0000
commita975eed306e16947c30b48ccd25ab67a37295742 (patch)
tree47c71250e1c5d9d1b841fade2ad8e69632f9cef9
parentb68529526ab82d1da99b58155620beaa8aa3f487 (diff)
downloadvboot-release-R105-14989.B.tar.gz
2kernel.c: check display request in vb2api_kernel_phase2stabilize-14989.85.Bstabilize-14989.107.Brelease-R105-14989.B
In preparation for moving VbTryLoadKernel to depthcharge, move the VB2_NV_DISPLAY_REQUEST check from vb2api_normal_boot to vb2api_kernel_phase2. BUG=b:172339016 BRANCH=none TEST=make runtests Signed-off-by: Hsin-Te Yuan <yuanhsinte@google.com> Change-Id: I3629d8dbbcaba23220152543ba77558c8bbcdc7b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3752431 Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Reviewed-by: Hsuan Ting Chen <roccochen@chromium.org>
-rw-r--r--firmware/2lib/2kernel.c37
-rw-r--r--tests/vb2_kernel2_tests.c16
-rw-r--r--tests/vb2_kernel_tests.c8
3 files changed, 15 insertions, 46 deletions
diff --git a/firmware/2lib/2kernel.c b/firmware/2lib/2kernel.c
index 30d6bbe6..41764ef1 100644
--- a/firmware/2lib/2kernel.c
+++ b/firmware/2lib/2kernel.c
@@ -12,31 +12,6 @@
#include "2secdata.h"
#include "vboot_api.h"
-/**
- * Reset any NVRAM requests.
- *
- * @param ctx Vboot context
- * @return 1 if a reboot is required, 0 otherwise.
- */
-static int vb2_reset_nv_requests(struct vb2_context *ctx)
-{
- int need_reboot = 0;
-
- if (vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST)) {
- VB2_DEBUG("Unset display request (undo display init)\n");
- vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 0);
- need_reboot = 1;
- }
-
- if (vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST)) {
- VB2_DEBUG("Unset diagnostic request (undo display init)\n");
- vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 0);
- need_reboot = 1;
- }
-
- return need_reboot;
-}
-
vb2_error_t vb2api_normal_boot(struct vb2_context *ctx,
VbSelectAndLoadKernelParams *kparams)
{
@@ -47,11 +22,6 @@ vb2_error_t vb2api_normal_boot(struct vb2_context *ctx,
/* Boot from fixed disk only */
VB2_DEBUG("Entering\n");
- if (vb2_reset_nv_requests(ctx)) {
- VB2_DEBUG("Normal mode: reboot to reset NVRAM requests\n");
- return VB2_REQUEST_REBOOT;
- }
-
vb2_error_t rv = VbTryLoadKernel(ctx, VB_DISK_FLAG_FIXED, kparams);
VB2_DEBUG("Checking if TPM kernel version needs advancing\n");
@@ -277,7 +247,14 @@ vb2_error_t vb2api_kernel_phase2(struct vb2_context *ctx)
break;
case VB2_BOOT_MODE_DIAGNOSTICS:
case VB2_BOOT_MODE_DEVELOPER:
+ break;
case VB2_BOOT_MODE_NORMAL:
+ if (vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST)) {
+ vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 0);
+ VB2_DEBUG("Normal mode: "
+ "reboot to unset display request\n");
+ return VB2_REQUEST_REBOOT;
+ }
break;
default:
return VB2_ERROR_ESCAPE_NO_BOOT;
diff --git a/tests/vb2_kernel2_tests.c b/tests/vb2_kernel2_tests.c
index ef06b5f1..04defe50 100644
--- a/tests/vb2_kernel2_tests.c
+++ b/tests/vb2_kernel2_tests.c
@@ -114,22 +114,6 @@ static void normal_boot_tests(void)
"vb2api_normal_boot() returns VB2_ERROR_MOCK");
reset_common_data();
- mock_vbtlk_expect_fixed = 0;
- vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1);
- TEST_EQ(vb2api_normal_boot(ctx, &kparams), VB2_REQUEST_REBOOT,
- "vb2api_normal_boot() reboot to reset NVRAM display request");
- TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
- " display request reset");
-
- reset_common_data();
- mock_vbtlk_expect_fixed = 0;
- vb2_nv_set(ctx, VB2_NV_DIAG_REQUEST, 1);
- TEST_EQ(vb2api_normal_boot(ctx, &kparams), VB2_REQUEST_REBOOT,
- "vb2api_normal_boot() reboot to reset NVRAM diag request");
- TEST_EQ(vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST), 0,
- " diag request reset");
-
- reset_common_data();
new_version = 0x20003;
TEST_SUCC(vb2api_normal_boot(ctx, &kparams), "Roll forward");
TEST_EQ(kernel_version, 0x20003, " version");
diff --git a/tests/vb2_kernel_tests.c b/tests/vb2_kernel_tests.c
index a573b52b..ca945e95 100644
--- a/tests/vb2_kernel_tests.c
+++ b/tests/vb2_kernel_tests.c
@@ -325,6 +325,14 @@ static void phase2_tests(void)
TEST_EQ(mock_ec_sync_called, 1, " EC sync");
reset_common_data(FOR_PHASE2);
+ SET_BOOT_MODE(ctx, VB2_BOOT_MODE_NORMAL);
+ vb2_nv_set(ctx, VB2_NV_DISPLAY_REQUEST, 1);
+ TEST_EQ(vb2api_kernel_phase2(ctx), VB2_REQUEST_REBOOT,
+ "Normal mode with display request: rebooting");
+ TEST_EQ(vb2_nv_get(ctx, VB2_NV_DISPLAY_REQUEST), 0,
+ " display request reset");
+
+ reset_common_data(FOR_PHASE2);
SET_BOOT_MODE(ctx, VB2_BOOT_MODE_DEVELOPER);
TEST_SUCC(vb2api_kernel_phase2(ctx), "Developer mode");
TEST_EQ(mock_ec_sync_called, 1, " EC sync");