summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoredisonhello <edisonhello@google.com>2021-07-29 18:10:25 +0800
committerCommit Bot <commit-bot@chromium.org>2021-09-14 08:03:05 +0000
commit5256851079ae8178557848090b701fc08eb5dbaa (patch)
treee3baa23b69f466dee700c289187b67650f030a2b
parent3d7ad1b873803a2be9dd358c6313aa59a2c9b3bc (diff)
downloadvboot-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.c6
-rw-r--r--firmware/2lib/2ui.c18
-rw-r--r--firmware/2lib/2ui_screens.c16
-rw-r--r--firmware/2lib/include/2api.h11
-rw-r--r--firmware/2lib/include/2ui.h11
-rw-r--r--firmware/2lib/include/2ui_private.h1
-rw-r--r--firmware/lib/vboot_api_kernel.c2
-rw-r--r--tests/vb2_ui_tests.c154
-rw-r--r--tests/vboot_api_kernel4_tests.c2
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)