2kernel.c: check display request in vb2api_kernel_phase2

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>
diff --git a/firmware/2lib/2kernel.c b/firmware/2lib/2kernel.c
index 30d6bbe..41764ef 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 @@
 	/* 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 @@
 		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 ef06b5f..04defe5 100644
--- a/tests/vb2_kernel2_tests.c
+++ b/tests/vb2_kernel2_tests.c
@@ -114,22 +114,6 @@
 		"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 a573b52..ca945e9 100644
--- a/tests/vb2_kernel_tests.c
+++ b/tests/vb2_kernel_tests.c
@@ -325,6 +325,14 @@
 	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");