summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2018-02-16 13:19:42 -0800
committerChromeOS Commit Bot <chromeos-commit-bot@chromium.org>2018-02-21 19:48:56 +0000
commit3483d80714cabbda39bc90b08dd7ffc4b0927a71 (patch)
tree5750787b38f3f43258bdd3c07e651e0bdc17597e
parentdff3a8544b09d54cce487b215a8713d4594c834b (diff)
downloadvboot-firmware-scarlet-10388.B.tar.gz
Always enter BROKEN screen in non-manual recovery, even in dev modefirmware-scarlet-10388.B
Previously, non-manual recovery behavior would depend on the developer mode switch: in normal mode it would get stuck at the BROKEN screen, but in developer mode it would proceed exactly like manual recovery. This behavior was mostly just confusing to people and it seems that we have no real use case for it anymore. Remove the developer mode special case so that non-manual recovery will always go to the BROKEN screen from now on. BRANCH=scarlet? BUG=None TEST=make runtests, verified manually on Scarlet and Kevin Change-Id: Iaf33f82d7cb709a5ee309c08d1ad3015859738b3 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/924458 Reviewed-by: Randall Spangler <rspangler@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org> (cherry picked from commit 5b26e40508e787baecb5d8920926de0ba37f09ce) Reviewed-on: https://chromium-review.googlesource.com/929646
-rw-r--r--firmware/lib/vboot_common.c4
-rw-r--r--tests/vboot_api_kernel2_tests.c12
-rw-r--r--tests/vboot_detach_menu_tests.c12
3 files changed, 13 insertions, 15 deletions
diff --git a/firmware/lib/vboot_common.c b/firmware/lib/vboot_common.c
index 60483b2c..d3851940 100644
--- a/firmware/lib/vboot_common.c
+++ b/firmware/lib/vboot_common.c
@@ -213,10 +213,6 @@ int VbSharedDataSetKernelKey(VbSharedDataHeader *header, const VbPublicKey *src)
int vb2_allow_recovery(uint32_t flags)
{
- /* In dev mode, unconditionally allowed. */
- if (flags & VBSD_BOOT_DEV_SWITCH_ON)
- return 1;
-
/*
* If EC is in RW, it implies recovery wasn't manually requested.
* On some platforms, EC_IN_RW can't be reset by the EC, thus, this may
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index 6c3c814a..2a714baa 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -579,7 +579,7 @@ static void VbBootRecTest(void)
VBERROR_SHUTDOWN_REQUESTED,
"Shutdown requested by keyboard");
- /* Remove disks */
+ /* Broken screen */
ResetMocks();
shutdown_request_calls_left = 100;
mock_num_disks[0] = 1;
@@ -588,11 +588,11 @@ static void VbBootRecTest(void)
vbtlk_retval = VBERROR_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE;
TEST_EQ(VbBootRecovery(&ctx),
VBERROR_SHUTDOWN_REQUESTED,
- "Remove");
+ "Broken");
TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
" broken screen");
- /* No removal if dev switch is on */
+ /* Broken screen even if dev switch is on */
ResetMocks();
shutdown_request_calls_left = 100;
mock_num_disks[0] = 1;
@@ -601,9 +601,9 @@ static void VbBootRecTest(void)
vbtlk_retval = VBERROR_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE;
TEST_EQ(VbBootRecovery(&ctx),
VBERROR_SHUTDOWN_REQUESTED,
- "No remove in dev");
- TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
- " insert screen");
+ "Broken (dev)");
+ TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
+ " broken screen");
/* No removal if recovery button physically pressed */
ResetMocks();
diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c
index 06e2be37..3d30683a 100644
--- a/tests/vboot_detach_menu_tests.c
+++ b/tests/vboot_detach_menu_tests.c
@@ -1304,16 +1304,18 @@ static void VbBootRecTest(void)
TEST_EQ(screens_count, 2, " no extra screens");
TEST_EQ(beeps_count, 0, " no beep on shutdown");
- /* go to INSERT if dev switch is on */
+ /* BROKEN screen even if dev switch is on */
ResetMocks();
- vbtlk_retval[0] = VBERROR_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE;
+ vbtlk_retval[0] = VBERROR_SUCCESS - VB_DISK_FLAG_REMOVABLE;
+ vbtlk_retval[1] = VBERROR_NO_DISK_FOUND - VB_DISK_FLAG_REMOVABLE;
+ vbtlk_retval[2] = VBERROR_SUCCESS - VB_DISK_FLAG_REMOVABLE;
shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
TEST_EQ(VbBootRecoveryMenu(&ctx), VBERROR_SHUTDOWN_REQUESTED,
- "Shutdown requested in INSERT with dev switch");
+ "Shutdown requested in BROKEN with dev switch");
TEST_EQ(vb2_nv_get(&ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery");
TEST_EQ(debug_info_displayed, 0, " no debug info");
- TEST_EQ(screens_displayed[0], VB_SCREEN_RECOVERY_INSERT,
- " insert screen");
+ TEST_EQ(screens_displayed[0], VB_SCREEN_OS_BROKEN,
+ " broken screen");
TEST_EQ(screens_displayed[1], VB_SCREEN_BLANK, " final blank screen");
TEST_EQ(screens_count, 2, " no extra screens");
TEST_EQ(beeps_count, 0, " no beep on shutdown");