diff options
author | edisonhello <edisonhello@google.com> | 2021-08-16 15:51:23 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-09-14 08:03:07 +0000 |
commit | 50fa4408ada6b891ce77de2879ea0bd7f875787f (patch) | |
tree | 0aceb4197e2ffb27e6a574e8a6d43221100b70dd /firmware | |
parent | 5256851079ae8178557848090b701fc08eb5dbaa (diff) | |
download | vboot-50fa4408ada6b891ce77de2879ea0bd7f875787f.tar.gz |
vboot/ui: Remove manual recovery and related screen
This CL is a part of centralizing ui codes. The removed screens and unit
tests will be added in depthcharge.
Remove manual recovery menu and its action function.
Remove recovery select, recovery phone step *, recovery disk step *,
recovery invalid screens.
Add vb2ex_manual_recovery_ui declaration.
Remove unit tests of above screens, menu and actions.
BUG=b:172339016
TEST=Hayato booted into developer mode
TEST=Hayato showed manual recovery screen
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:3099529
Signed-off-by: edisonhello <edisonhello@google.com>
Change-Id: I330098200d45d094d4faab90b96355b5b19e3fea
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3116108
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Yu-Ping Wu <yupingso@chromium.org>
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/2lib/2stub.c | 6 | ||||
-rw-r--r-- | firmware/2lib/2ui.c | 38 | ||||
-rw-r--r-- | firmware/2lib/2ui_screens.c | 155 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 11 | ||||
-rw-r--r-- | firmware/2lib/include/2ui.h | 11 | ||||
-rw-r--r-- | firmware/lib/vboot_api_kernel.c | 2 |
6 files changed, 18 insertions, 205 deletions
diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c index 3a7a36d4..368915b1 100644 --- a/firmware/2lib/2stub.c +++ b/firmware/2lib/2stub.c @@ -262,3 +262,9 @@ vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx) { return VB2_SUCCESS; } + +__attribute__((weak)) +vb2_error_t vb2ex_manual_recovery_ui(struct vb2_context *ctx) +{ + return VB2_SUCCESS; +} diff --git a/firmware/2lib/2ui.c b/firmware/2lib/2ui.c index 3cd14f0f..db79eb72 100644 --- a/firmware/2lib/2ui.c +++ b/firmware/2lib/2ui.c @@ -451,44 +451,6 @@ vb2_error_t developer_action(struct vb2_ui_context *ui) } /*****************************************************************************/ -/* Manual recovery */ - -vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx) -{ - return vb2_ui_loop(ctx, VB2_SCREEN_RECOVERY_SELECT, - manual_recovery_action); -} - -vb2_error_t manual_recovery_action(struct vb2_ui_context *ui) -{ - /* See if we have a recovery kernel available yet. */ - vb2_error_t rv = VbTryLoadKernel(ui->ctx, VB_DISK_FLAG_REMOVABLE); - if (rv == VB2_SUCCESS) - return VB2_REQUEST_UI_EXIT; - - /* If disk validity state changed, switch to appropriate screen. */ - if (ui->recovery_rv != rv) { - VB2_DEBUG("Recovery VbTryLoadKernel %#x --> %#x\n", - ui->recovery_rv, rv); - ui->recovery_rv = rv; - return vb2_ui_screen_change(ui, - rv == VB2_ERROR_LK_NO_DISK_FOUND ? - VB2_SCREEN_RECOVERY_SELECT : - VB2_SCREEN_RECOVERY_INVALID); - } - - /* Manual recovery keyboard shortcuts */ - if (ui->key == VB_KEY_CTRL('D') || - (DETACHABLE && ui->key == VB_BUTTON_VOL_UP_DOWN_COMBO_PRESS)) - return vb2_ui_screen_change(ui, VB2_SCREEN_RECOVERY_TO_DEV); - - if (ui->key == '\t') - return vb2_ui_screen_change(ui, VB2_SCREEN_DEBUG_INFO); - - return VB2_SUCCESS; -} - -/*****************************************************************************/ /* Diagnostics */ vb2_error_t vb2_diagnostic_menu(struct vb2_context *ctx) diff --git a/firmware/2lib/2ui_screens.c b/firmware/2lib/2ui_screens.c index 999d90e6..51e428a4 100644 --- a/firmware/2lib/2ui_screens.c +++ b/firmware/2lib/2ui_screens.c @@ -395,76 +395,6 @@ static const struct vb2_screen_info firmware_log_screen = { }; /******************************************************************************/ -/* VB2_SCREEN_RECOVERY_SELECT */ - -#define RECOVERY_SELECT_ITEM_PHONE 1 -#define RECOVERY_SELECT_ITEM_EXTERNAL_DISK 2 -#define RECOVERY_SELECT_ITEM_DIAGNOSTICS 3 - -/* Set VB2_NV_DIAG_REQUEST and reboot. */ -static vb2_error_t launch_diagnostics_action(struct vb2_ui_context *ui) -{ - vb2api_request_diagnostics(ui->ctx); - return VB2_REQUEST_REBOOT; -} - -vb2_error_t recovery_select_init(struct vb2_ui_context *ui) -{ - ui->state->selected_item = RECOVERY_SELECT_ITEM_PHONE; - if (!vb2api_phone_recovery_ui_enabled(ui->ctx)) { - VB2_DEBUG("WARNING: Phone recovery not available\n"); - VB2_SET_BIT(ui->state->hidden_item_mask, - RECOVERY_SELECT_ITEM_PHONE); - ui->state->selected_item = RECOVERY_SELECT_ITEM_EXTERNAL_DISK; - } - - if (!vb2api_diagnostic_ui_enabled(ui->ctx)) - VB2_SET_BIT(ui->state->hidden_item_mask, - RECOVERY_SELECT_ITEM_DIAGNOSTICS); - - return VB2_SUCCESS; -} - -static const struct vb2_menu_item recovery_select_items[] = { - LANGUAGE_SELECT_ITEM, - [RECOVERY_SELECT_ITEM_PHONE] = { - .text = "Recovery using phone", - .target = VB2_SCREEN_RECOVERY_PHONE_STEP1, - }, - [RECOVERY_SELECT_ITEM_EXTERNAL_DISK] = { - .text = "Recovery using external disk", - .target = VB2_SCREEN_RECOVERY_DISK_STEP1, - }, - [RECOVERY_SELECT_ITEM_DIAGNOSTICS] = { - .text = "Launch diagnostics", - .action = launch_diagnostics_action, - }, - ADVANCED_OPTIONS_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_select_screen = { - .id = VB2_SCREEN_RECOVERY_SELECT, - .name = "Recovery method selection", - .init = recovery_select_init, - .menu = MENU_ITEMS(recovery_select_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_INVALID */ - -static const struct vb2_menu_item recovery_invalid_items[] = { - LANGUAGE_SELECT_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_invalid_screen = { - .id = VB2_SCREEN_RECOVERY_INVALID, - .name = "Invalid recovery inserted", - .menu = MENU_ITEMS(recovery_invalid_items), -}; - -/******************************************************************************/ /* VB2_SCREEN_RECOVERY_TO_DEV */ #define RECOVERY_TO_DEV_ITEM_CONFIRM 1 @@ -585,84 +515,6 @@ static const struct vb2_screen_info recovery_to_dev_screen = { }; /******************************************************************************/ -/* VB2_SCREEN_RECOVERY_PHONE_STEP1 */ - -static const struct vb2_menu_item recovery_phone_step1_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_PHONE_STEP2), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_phone_step1_screen = { - .id = VB2_SCREEN_RECOVERY_PHONE_STEP1, - .name = "Phone recovery step 1", - .menu = MENU_ITEMS(recovery_phone_step1_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_PHONE_STEP2 */ - -static const struct vb2_menu_item recovery_phone_step2_items[] = { - LANGUAGE_SELECT_ITEM, - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_phone_step2_screen = { - .id = VB2_SCREEN_RECOVERY_PHONE_STEP2, - .name = "Phone recovery step 2", - .menu = MENU_ITEMS(recovery_phone_step2_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP1 */ - -static const struct vb2_menu_item recovery_disk_step1_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_DISK_STEP2), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step1_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP1, - .name = "Disk recovery step 1", - .menu = MENU_ITEMS(recovery_disk_step1_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP2 */ - -static const struct vb2_menu_item recovery_disk_step2_items[] = { - LANGUAGE_SELECT_ITEM, - NEXT_ITEM(VB2_SCREEN_RECOVERY_DISK_STEP3), - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step2_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP2, - .name = "Disk recovery step 2", - .menu = MENU_ITEMS(recovery_disk_step2_items), -}; - -/******************************************************************************/ -/* VB2_SCREEN_RECOVERY_DISK_STEP3 */ - -static const struct vb2_menu_item recovery_disk_step3_items[] = { - LANGUAGE_SELECT_ITEM, - BACK_ITEM, - POWER_OFF_ITEM, -}; - -static const struct vb2_screen_info recovery_disk_step3_screen = { - .id = VB2_SCREEN_RECOVERY_DISK_STEP3, - .name = "Disk recovery step 3", - .menu = MENU_ITEMS(recovery_disk_step3_items), -}; - -/******************************************************************************/ /* VB2_SCREEN_DEVELOPER_MODE */ #define DEVELOPER_MODE_ITEM_RETURN_TO_SECURE 1 @@ -1365,14 +1217,7 @@ static const struct vb2_screen_info *screens[] = { &advanced_options_screen, &debug_info_screen, &firmware_log_screen, - &recovery_select_screen, - &recovery_invalid_screen, &recovery_to_dev_screen, - &recovery_phone_step1_screen, - &recovery_phone_step2_screen, - &recovery_disk_step1_screen, - &recovery_disk_step2_screen, - &recovery_disk_step3_screen, &developer_mode_screen, &developer_to_norm_screen, &developer_boot_external_screen, diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 273ff012..df8c8d1a 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1405,6 +1405,17 @@ vb2_error_t vb2ex_ec_battery_cutoff(void); */ vb2_error_t vb2ex_broken_screen_ui(struct vb2_context *ctx); +/** + * UI for a manual recovery-mode boot. + * + * Enter the recovery menu, which prompts the user to insert recovery media, + * navigate the step-by-step recovery, or enter developer mode if allowed. + * + * @param ctx Vboot context + * @return VB2_SUCCESS, or non-zero error code. + */ +vb2_error_t vb2ex_manual_recovery_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 4ae73fc0..2ed65e9d 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 manual recovery-mode boot. - * - * Enter the recovery menu, which prompts the user to insert recovery media, - * navigate the step-by-step recovery, or enter developer mode if allowed. - * - * @param ctx Vboot context - * @return VB2_SUCCESS, or non-zero error code. - */ -vb2_error_t vb2_manual_recovery_menu(struct vb2_context *ctx); - -/** * UI for a diagnostic tools boot. * * Enter the diagnostic tools menu, which provides debug information and diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c index 26d096d4..9978097d 100644 --- a/firmware/lib/vboot_api_kernel.c +++ b/firmware/lib/vboot_api_kernel.c @@ -195,7 +195,7 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx, /* Recovery boot. This has UI. */ if (vb2api_allow_recovery(ctx)) - VB2_TRY(vb2_manual_recovery_menu(ctx)); + VB2_TRY(vb2ex_manual_recovery_ui(ctx)); else VB2_TRY(vb2ex_broken_screen_ui(ctx)); } else if (vb2api_diagnostic_ui_enabled(ctx) && |