summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulius Werner <jwerner@chromium.org>2018-02-16 13:19:42 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-02-20 20:31:52 -0800
commit5b26e40508e787baecb5d8920926de0ba37f09ce (patch)
treeed8937e596b297c813889f16bacc1de729da3b2c
parentcc441a0ea8b0e1a7a1802070dc6ca606d80c9148 (diff)
downloadvboot-5b26e40508e787baecb5d8920926de0ba37f09ce.tar.gz
Always enter BROKEN screen in non-manual recovery, even in dev mode
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>
-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");