diff options
author | edisonhello <edisonhello@google.com> | 2021-07-29 18:10:25 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-09-14 08:03:05 +0000 |
commit | 5256851079ae8178557848090b701fc08eb5dbaa (patch) | |
tree | e3baa23b69f466dee700c289187b67650f030a2b | |
parent | 3d7ad1b873803a2be9dd358c6313aa59a2c9b3bc (diff) | |
download | vboot-5256851079ae8178557848090b701fc08eb5dbaa.tar.gz |
vboot/ui: Remove broken recovery screen
Remove broken recovery screen in vboot, and migrate to depthcharge.
Remove broken recovery related tests in vboot.
BUG=b:172339016
TEST=Hayato booted into developer mode
TEST=export CC=x86_64-pc-linux-gnu-clang DEBUG=1 DETACHABLE=0; \
make -j test_setup && make -j runtests
TEST=export CC=x86_64-pc-linux-gnu-clang DEBUG=1 DETACHABLE=1; \
make -j test_setup && make -j runtests
BRANCH=none
Cq-Depend: chromium:3116129
Change-Id: I7d830e992d9ae1703befba570dfbe3061319b9fe
Signed-off-by: edisonhello <edisonhello@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3060559
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
-rw-r--r-- | firmware/2lib/2stub.c | 6 | ||||
-rw-r--r-- | firmware/2lib/2ui.c | 18 | ||||
-rw-r--r-- | firmware/2lib/2ui_screens.c | 16 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 11 | ||||
-rw-r--r-- | firmware/2lib/include/2ui.h | 11 | ||||
-rw-r--r-- | firmware/2lib/include/2ui_private.h | 1 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 2 | ||||
-rw-r--r-- | tests/vb2_ui_tests.c | 154 | ||||
-rw-r--r-- | tests/vboot_api_kernel4_tests.c | 2 |
9 files changed, 19 insertions, 202 deletions
diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c index 7cec2e5d..3a7a36d4 100644 --- a/firmware/2lib/2stub.c +++ b/firmware/2lib/2stub.c @@ -256,3 +256,9 @@ vb2_error_t vb2ex_commit_data(struct vb2_context *ctx) ctx->flags &= ~VB2_CONTEXT_NVDATA_CHANGED; return VB2_SUCCESS; } + +__attribute__((weak)) +vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx) +{ + return VB2_SUCCESS; +} diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 83dcde07..3cd14f0f 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -451,24 +451,6 @@ vb2_error_t developer_action(struct vb2_ui_context *ui) } /*****************************************************************************/ -/* Broken recovery */ - -vb2_error_t vb2_broken_recovery_menu(struct vb2_context *ctx) -{ - return vb2_ui_loop(ctx, VB2_SCREEN_RECOVERY_BROKEN, - broken_recovery_action); -} - -vb2_error_t broken_recovery_action(struct vb2_ui_context *ui) -{ - /* Broken recovery keyboard shortcuts */ - if (ui->key == '\t') - return vb2_ui_screen_change(ui, VB2_SCREEN_DEBUG_INFO); - - return VB2_SUCCESS; -} - -/*****************************************************************************/ /* Manual recovery */ vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx) diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index af273d12..999d90e6 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -252,21 +252,6 @@ static const struct vb2_screen_info language_select_screen = { }; /******************************************************************************/ -/* VB2_SCREEN_RECOVERY_BROKEN */ - -static const struct vb2_menu_item recovery_broken_items[] = { - LANGUAGE_SELECT_ITEM, - ADVANCED_OPTIONS_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_broken_screen = { - .id = VB2_SCREEN_RECOVERY_BROKEN, - .name = "Recover broken device", - .menu = MENU_ITEMS(recovery_broken_items), -}; - -/******************************************************************************/ /* VB2_SCREEN_ADVANCED_OPTIONS */ #define ADVANCED_OPTIONS_ITEM_DEVELOPER_MODE 1 @@ -1377,7 +1362,6 @@ static const struct vb2_screen_info diagnostics_memory_full_screen = { */ static const struct vb2_screen_info *screens[] = { &language_select_screen, - &recovery_broken_screen, &advanced_options_screen, &debug_info_screen, &firmware_log_screen, diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 6144c84b..273ff012 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1394,6 +1394,17 @@ vb2_error_t vb2ex_ec_battery_cutoff(void); /*****************************************************************************/ /* Functions for UI display. */ +/** + * UI for a non-manual recovery ("BROKEN"). + * + * Enter the broken screen UI, which shows that an unrecoverable error was + * encountered last boot. Wait for the user to physically reset or shut down. + * + * @param ctx Vboot context + * @return VB2_SUCCESS, or non-zero error code. + */ +vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx); + /* Helpers for bitmask operations */ #define VB2_SET_BIT(mask, index) ((mask) |= ((uint32_t)1 << (index))) #define VB2_CLR_BIT(mask, index) ((mask) &= ~((uint32_t)1 << (index))) diff --git a/firmware/2lib/include/2ui.h b/firmware/2lib/include/2ui.h index 55ff5749..4ae73fc0 100644 --- a/firmware/2lib/include/2ui.h +++ b/firmware/2lib/include/2ui.h @@ -246,17 +246,6 @@ vb2_error_t vb2_ui_screen_change(struct vb2_ui_context *ui, enum vb2_screen id); vb2_error_t vb2_developer_menu(struct vb2_context *ctx); /** - * UI for a non-manual recovery ("BROKEN"). - * - * Enter the recovery menu, which shows that an unrecoverable error was - * encountered last boot. Wait for the user to physically reset or shut down. - * - * @param ctx Vboot context - * @return VB2_SUCCESS, or non-zero error code. - */ -vb2_error_t vb2_broken_recovery_menu(struct vb2_context *ctx); - -/** * UI for a manual recovery-mode boot. * * Enter the recovery menu, which prompts the user to insert recovery media, diff --git a/firmware/2lib/include/2ui_private.h b/firmware/2lib/include/2ui_private.h index 79cdd1b7..9f08c3eb 100644 --- a/firmware/2lib/include/2ui_private.h +++ b/firmware/2lib/include/2ui_private.h @@ -27,7 +27,6 @@ vb2_error_t vb2_ui_loop(struct vb2_context *ctx, enum vb2_screen root_screen_id, vb2_error_t (*global_action)(struct vb2_ui_context *ui)); vb2_error_t developer_action(struct vb2_ui_context *ui); -vb2_error_t broken_recovery_action(struct vb2_ui_context *ui); vb2_error_t manual_recovery_action(struct vb2_ui_context *ui); /* From 2ui_screens.c */ diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index cab35636..26d096d4 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -197,7 +197,7 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx, if (vb2api_allow_recovery(ctx)) VB2_TRY(vb2_manual_recovery_menu(ctx)); else - VB2_TRY(vb2_broken_recovery_menu(ctx)); + VB2_TRY(vb2ex_broken_screen_ui(ctx)); } else if (vb2api_diagnostic_ui_enabled(ctx) && vb2_nv_get(ctx, VB2_NV_DIAG_REQUEST)) { /* diff --git a/tests/vb2_ui_tests.c b/tests/vb2_ui_tests.c index e8488304..8790e75d 100644 --- a/tests/vb2_ui_tests.c +++ b/tests/vb2_ui_tests.c @@ -804,36 +804,6 @@ static void developer_tests(void) VB2_DEBUG("...done.\n"); } -static void broken_recovery_tests(void) -{ - VB2_DEBUG("Testing broken recovery mode...\n"); - - /* Power button short pressed = shutdown request */ - if (!DETACHABLE) { - reset_common_data(FOR_BROKEN_RECOVERY); - add_mock_keypress(VB_BUTTON_POWER_SHORT_PRESS); - mock_calls_until_shutdown = -1; - TEST_EQ(vb2_broken_recovery_menu(ctx), - VB2_REQUEST_SHUTDOWN, - "power button short pressed = shutdown"); - } - - /* Shortcuts that are always ignored in BROKEN */ - reset_common_data(FOR_BROKEN_RECOVERY); - add_mock_key(VB_KEY_CTRL('D'), 1); - add_mock_key(VB_KEY_CTRL('U'), 1); - add_mock_key(VB_KEY_CTRL('L'), 1); - add_mock_key(VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS, 1); - add_mock_key(VB_BUTTON_VOL_UP_LONG_PRESS, 1); - add_mock_key(VB_BUTTON_VOL_DOWN_LONG_PRESS, 1); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "Shortcuts ignored in BROKEN"); - TEST_EQ(mock_calls_until_shutdown, 0, " loop forever"); - TEST_EQ(mock_displayed_count, 1, " root screen only"); - - VB2_DEBUG("...done.\n"); -} - static void manual_recovery_tests(void) { VB2_DEBUG("Testing manual recovery mode...\n"); @@ -1120,15 +1090,6 @@ static void debug_info_tests(void) MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); DISPLAYED_NO_EXTRA(); - reset_common_data(FOR_BROKEN_RECOVERY); - add_mock_keypress('\t'); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "tab = debug info in broken recovery mode"); - DISPLAYED_PASS(); - DISPLAYED_EQ("debug info", VB2_SCREEN_DEBUG_INFO, MOCK_IGNORE, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - reset_common_data(FOR_MANUAL_RECOVERY); add_mock_keypress('\t'); TEST_EQ(vb2_manual_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, @@ -1484,119 +1445,6 @@ static void developer_screen_tests(void) VB2_DEBUG("...done.\n"); } -static void broken_recovery_screen_tests(void) -{ - /* Broken screen: disabled and hidden item mask */ - reset_common_data(FOR_BROKEN_RECOVERY); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "broken screen: no disabled and hidden item mask"); - DISPLAYED_EQ("broken screen", VB2_SCREEN_RECOVERY_BROKEN, - MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x0, MOCK_IGNORE); - - /* Broken screen */ - reset_common_data(FOR_BROKEN_RECOVERY); - /* #0: Language menu */ - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); - /* #1: Advanced options */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* End of menu */ - add_mock_keypress(VB_KEY_ESC); - extend_calls_until_shutdown(); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "broken screen"); - /* #0: Language menu */ - DISPLAYED_PASS(); - DISPLAYED_EQ("broken screen", VB2_SCREEN_RECOVERY_BROKEN, - MOCK_IGNORE, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#0: language menu", VB2_SCREEN_LANGUAGE_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #1: Advanced options */ - DISPLAYED_PASS(); - DISPLAYED_EQ("broken screen", VB2_SCREEN_RECOVERY_BROKEN, - MOCK_IGNORE, 1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#1: advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* End of menu */ - DISPLAYED_EQ("end of menu", VB2_SCREEN_RECOVERY_BROKEN, - MOCK_IGNORE, 1, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - /* Advanced options screen: disabled and hidden item mask */ - reset_common_data(FOR_BROKEN_RECOVERY); - add_mock_keypress(VB_KEY_ENTER); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "advanced options screen: hide to_dev item"); - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, MOCK_IGNORE, 0x0, 0x2, MOCK_IGNORE); - - /* Advanced options screen */ - reset_common_data(FOR_BROKEN_RECOVERY); - add_mock_keypress(VB_KEY_ENTER); - /* #0: Language menu */ - add_mock_keypress(VB_KEY_UP); - add_mock_keypress(VB_KEY_ENTER); - /* #1: (Hidden) */ - /* #2: Debug info */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #3: Firmware log */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* #4: Back */ - add_mock_keypress(VB_KEY_ESC); - add_mock_keypress(VB_KEY_DOWN); - add_mock_keypress(VB_KEY_ENTER); - /* End of menu */ - add_mock_keypress(VB_KEY_ENTER); - extend_calls_until_shutdown(); - TEST_EQ(vb2_broken_recovery_menu(ctx), VB2_REQUEST_SHUTDOWN, - "advanced options screen"); - DISPLAYED_PASS(); - DISPLAYED_PASS(); - /* #0: Language menu */ - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 0, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#0: language menu", VB2_SCREEN_LANGUAGE_SELECT, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #1: (Hidden) */ - /* #2: Debug info */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#2: debug info", VB2_SCREEN_DEBUG_INFO, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #3: Firmware log */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 3, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#3: firmware log", VB2_SCREEN_FIRMWARE_LOG, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* #4: Back */ - DISPLAYED_PASS(); - DISPLAYED_EQ("advanced options", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 4, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_EQ("#4: back", VB2_SCREEN_RECOVERY_BROKEN, - MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE, - MOCK_IGNORE); - /* End of menu */ - DISPLAYED_EQ("end of menu", VB2_SCREEN_ADVANCED_OPTIONS, - MOCK_IGNORE, 2, MOCK_IGNORE, MOCK_IGNORE, MOCK_IGNORE); - DISPLAYED_NO_EXTRA(); - - VB2_DEBUG("...done.\n"); -} - static void manual_recovery_screen_tests(void) { /* Recovery select screen: disabled and hidden item mask */ @@ -1876,7 +1724,6 @@ static void diagnostics_screen_tests(void) int main(void) { developer_tests(); - broken_recovery_tests(); manual_recovery_tests(); language_selection_tests(); debug_info_tests(); @@ -1884,7 +1731,6 @@ int main(void) /* Screen displayed */ developer_screen_tests(); - broken_recovery_screen_tests(); manual_recovery_screen_tests(); diagnostics_screen_tests(); diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c index 02b548a3..ae0e0064 100644 --- a/tests/vboot_api_kernel4_tests.c +++ b/tests/vboot_api_kernel4_tests.c @@ -157,7 +157,7 @@ vb2_error_t vb2_manual_recovery_menu(struct vb2_context *c) return vbboot_retval; } -vb2_error_t vb2_broken_recovery_menu(struct vb2_context *c) +vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *c) { rec_check(c); if (vbboot_retval == -4) |