From 3483d80714cabbda39bc90b08dd7ffc4b0927a71 Mon Sep 17 00:00:00 2001 From: Julius Werner Date: Fri, 16 Feb 2018 13:19:42 -0800 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/924458 Reviewed-by: Randall Spangler Reviewed-by: Daisuke Nojiri (cherry picked from commit 5b26e40508e787baecb5d8920926de0ba37f09ce) Reviewed-on: https://chromium-review.googlesource.com/929646 --- firmware/lib/vboot_common.c | 4 ---- tests/vboot_api_kernel2_tests.c | 12 ++++++------ tests/vboot_detach_menu_tests.c | 12 +++++++----- 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"); -- cgit v1.2.1