summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Kitching <kitching@google.com>2020-01-10 01:50:45 +0800
committerCommit Bot <commit-bot@chromium.org>2020-01-10 19:50:51 +0000
commit7d9ddea16d8face9fd56199bcdda0aa34c556071 (patch)
tree9726d8ef77190eed56a89915130b68deb76036d1
parentffcc2c5daa9032a21b80daf13fba2fc4ab5f8fd1 (diff)
downloadvboot-7d9ddea16d8face9fd56199bcdda0aa34c556071.tar.gz
vboot: use vboot 2 flags for checking rec/dev mode
Use vboot 2 flags for checking whether dev mode is enabled, and whether manual recovery was requested. VBSD_BOOT_DEV_SWITCH_ON --> VB2_SD_FLAG_DEV_MODE_ENABLED VBSD_BOOT_REC_SWITCH_ON --> VB2_SD_FLAG_MANUAL_RECOVERY BUG=b:124141368, chromium:1038260 TEST=make clean && make runtests BRANCH=none Change-Id: Idb439f658391f46170704a0fd614853054e1c64d Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1992852 Tested-by: Joel Kitching <kitching@chromium.org> Reviewed-by: Yu-Ping Wu <yupingso@chromium.org> Commit-Queue: Joel Kitching <kitching@chromium.org>
-rw-r--r--firmware/2lib/2misc.c2
-rw-r--r--firmware/lib/vboot_api_kernel.c2
-rw-r--r--firmware/lib/vboot_ui.c9
-rw-r--r--firmware/lib/vboot_ui_menu.c6
-rw-r--r--tests/vboot_api_kernel2_tests.c42
-rw-r--r--tests/vboot_api_kernel4_tests.c4
-rw-r--r--tests/vboot_detach_menu_tests.c16
7 files changed, 39 insertions, 42 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c
index 1cd96929..bab4b211 100644
--- a/firmware/2lib/2misc.c
+++ b/firmware/2lib/2misc.c
@@ -417,7 +417,7 @@ int vb2_allow_recovery(struct vb2_context *ctx)
return 0;
/* Now we confidently check the recovery switch state at boot */
- return !!(vb2_get_sd(ctx)->vbsd->flags & VBSD_BOOT_REC_SWITCH_ON);
+ return !!(vb2_get_sd(ctx)->flags & VB2_SD_FLAG_MANUAL_RECOVERY);
}
int vb2api_need_reboot_for_display(struct vb2_context *ctx)
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 46c268a8..85bc2b2f 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -233,7 +233,7 @@ static vb2_error_t vb2_kernel_setup(struct vb2_context *ctx,
/* Translate vboot1 flags back to vboot2 */
if (shared->recovery_reason)
ctx->flags |= VB2_CONTEXT_RECOVERY_MODE;
- if (shared->flags & VBSD_BOOT_DEV_SWITCH_ON)
+ if (vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED)
ctx->flags |= VB2_CONTEXT_DEVELOPER_MODE;
/*
diff --git a/firmware/lib/vboot_ui.c b/firmware/lib/vboot_ui.c
index c48478d8..d584ac8b 100644
--- a/firmware/lib/vboot_ui.c
+++ b/firmware/lib/vboot_ui.c
@@ -504,7 +504,6 @@ static vb2_error_t vb2_developer_ui(struct vb2_context *ctx)
{
struct vb2_shared_data *sd = vb2_get_sd(ctx);
struct vb2_gbb_header *gbb = vb2_get_gbb(ctx);
- VbSharedDataHeader *shared = sd->vbsd;
uint32_t disable_dev_boot = 0;
uint32_t use_usb = 0;
@@ -599,10 +598,10 @@ static vb2_error_t vb2_developer_ui(struct vb2_context *ctx)
VBOOT_FALLTHROUGH;
case ' ':
/* See if we should disable virtual dev-mode switch. */
- VB2_DEBUG("shared->flags=%#x\n", shared->flags);
+ VB2_DEBUG("sd->flags=%#x\n", sd->flags);
/* Sanity check, should never fail. */
- VB2_ASSERT(shared->flags & VBSD_BOOT_DEV_SWITCH_ON);
+ VB2_ASSERT(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED);
/* Stop the countdown while we go ask... */
if (gbb->flags & VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON) {
@@ -844,8 +843,8 @@ static vb2_error_t recovery_ui(struct vb2_context *ctx)
* - user forced recovery mode
*/
if (key == VB_KEY_CTRL('D') &&
- !(shared->flags & VBSD_BOOT_DEV_SWITCH_ON) &&
- (shared->flags & VBSD_BOOT_REC_SWITCH_ON)) {
+ !(sd->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) &&
+ (sd->flags & VB2_SD_FLAG_MANUAL_RECOVERY)) {
if (!(shared->flags & VBSD_BOOT_REC_SWITCH_VIRTUAL) &&
VbExGetSwitches(
VB_SWITCH_FLAG_PHYS_PRESENCE_PRESSED)) {
diff --git a/firmware/lib/vboot_ui_menu.c b/firmware/lib/vboot_ui_menu.c
index f74f6d50..31ab3c16 100644
--- a/firmware/lib/vboot_ui_menu.c
+++ b/firmware/lib/vboot_ui_menu.c
@@ -260,7 +260,7 @@ static vb2_error_t enter_to_dev_menu(struct vb2_context *ctx)
{
const char dev_already_on[] =
"WARNING: TODEV rejected, developer mode is already on.\n";
- if (vb2_get_sd(ctx)->vbsd->flags & VBSD_BOOT_DEV_SWITCH_ON) {
+ if (vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) {
vb2_flash_screen(ctx);
vb2_error_notify(dev_already_on, NULL, VB_BEEP_NOT_ALLOWED);
return VBERROR_KEEP_LOOPING;
@@ -352,10 +352,8 @@ static vb2_error_t altfw_action(struct vb2_context *ctx)
/* Action that enables developer mode and reboots. */
static vb2_error_t to_dev_action(struct vb2_context *ctx)
{
- uint32_t vbsd_flags = vb2_get_sd(ctx)->vbsd->flags;
-
/* Sanity check, should never happen. */
- if ((vbsd_flags & VBSD_BOOT_DEV_SWITCH_ON) ||
+ if ((vb2_get_sd(ctx)->flags & VB2_SD_FLAG_DEV_MODE_ENABLED) ||
!vb2_allow_recovery(ctx))
return VBERROR_KEEP_LOOPING;
diff --git a/tests/vboot_api_kernel2_tests.c b/tests/vboot_api_kernel2_tests.c
index 712fa707..0b2b97be 100644
--- a/tests/vboot_api_kernel2_tests.c
+++ b/tests/vboot_api_kernel2_tests.c
@@ -621,7 +621,7 @@ static void VbBootDevTest(void)
/* Space asks to disable virtual dev switch */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = ' ';
mock_keypress[1] = VB_KEY_ENTER;
TEST_EQ(VbBootDeveloper(ctx), VBERROR_REBOOT_REQUIRED,
@@ -637,7 +637,7 @@ static void VbBootDevTest(void)
/* Space-space doesn't disable it */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = ' ';
mock_keypress[1] = ' ';
mock_keypress[2] = VB_KEY_ESC;
@@ -652,7 +652,7 @@ static void VbBootDevTest(void)
/* Enter doesn't by default */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = VB_KEY_ENTER;
mock_keypress[1] = VB_KEY_ENTER;
vbtlk_expect_fixed = 1;
@@ -660,7 +660,7 @@ static void VbBootDevTest(void)
/* Enter does if GBB flag set */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
gbb.flags |= VB2_GBB_FLAG_ENTER_TRIGGERS_TONORM;
mock_keypress[0] = VB_KEY_ENTER;
mock_keypress[1] = VB_KEY_ENTER;
@@ -669,7 +669,7 @@ static void VbBootDevTest(void)
/* Tonorm ignored if GBB forces dev switch on */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
mock_keypress[0] = ' ';
mock_keypress[1] = VB_KEY_ENTER;
@@ -679,7 +679,7 @@ static void VbBootDevTest(void)
/* Shutdown requested at tonorm screen */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = ' ';
MockGpioAfter(3, GPIO_SHUTDOWN);
TEST_EQ(VbBootDeveloper(ctx),
@@ -692,7 +692,7 @@ static void VbBootDevTest(void)
/* Shutdown requested by keyboard at tonorm screen */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
TEST_EQ(VbBootDeveloper(ctx),
VBERROR_SHUTDOWN_REQUESTED,
@@ -1069,7 +1069,7 @@ static void VbBootDevTest(void)
/* Shutdown requested when dev disabled */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
MockGpioAfter(1, GPIO_SHUTDOWN);
TEST_EQ(VbBootDeveloper(ctx),
@@ -1080,7 +1080,7 @@ static void VbBootDevTest(void)
/* Shutdown requested by keyboard when dev disabled */
ResetMocks();
- shared->flags = VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_DEV_MODE_ENABLED;
fwmp->flags |= VB2_SECDATA_FWMP_DEV_DISABLE_BOOT;
mock_keypress[0] = VB_BUTTON_POWER_SHORT_PRESS;
TEST_EQ(VbBootDeveloper(ctx),
@@ -1102,7 +1102,7 @@ static void VbBootRecTestGpio(uint32_t first, uint32_t second, uint32_t third,
uint32_t confirm, const char *msg)
{
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
trust_ec = 1;
mock_keypress[0] = VB_KEY_CTRL('D');
@@ -1161,7 +1161,7 @@ static void VbBootRecTest(void)
mock_gpio[2].count = 10;
mock_gpio[3].gpio_flags = 0;
mock_gpio[3].count = 100;
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
trust_ec = 1;
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
vbtlk_expect_removable = 1;
@@ -1189,7 +1189,7 @@ static void VbBootRecTest(void)
MockGpioAfter(10, GPIO_SHUTDOWN);
mock_num_disks[0] = 1;
mock_num_disks[1] = 1;
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
TEST_EQ(VbBootRecovery(ctx),
VBERROR_SHUTDOWN_REQUESTED,
"Broken (dev)");
@@ -1213,7 +1213,7 @@ static void VbBootRecTest(void)
MockGpioAfter(10, GPIO_SHUTDOWN);
mock_num_disks[0] = 1;
mock_num_disks[1] = 1;
- shared->flags |= VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY;
TEST_EQ(VbBootRecovery(ctx),
VBERROR_SHUTDOWN_REQUESTED,
"No remove in rec");
@@ -1243,7 +1243,7 @@ static void VbBootRecTest(void)
/* Ctrl+D ignored for many reasons... */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
MockGpioAfter(10, GPIO_SHUTDOWN);
mock_keypress[0] = VB_KEY_CTRL('D');
trust_ec = 0;
@@ -1255,7 +1255,7 @@ static void VbBootRecTest(void)
" todev screen");
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON | VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY | VB2_SD_FLAG_DEV_MODE_ENABLED;
trust_ec = 1;
MockGpioAfter(10, GPIO_SHUTDOWN);
mock_keypress[0] = VB_KEY_CTRL('D');
@@ -1282,7 +1282,7 @@ static void VbBootRecTest(void)
/* Ctrl+D ignored because the physical presence switch is still pressed
and we don't like that. */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
trust_ec = 1;
mock_keypress[0] = VB_KEY_CTRL('D');
mock_gpio[0].gpio_flags = GPIO_PRESENCE;
@@ -1298,7 +1298,7 @@ static void VbBootRecTest(void)
/* Ctrl+D then space means don't enable */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
MockGpioAfter(2, GPIO_SHUTDOWN);
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
trust_ec = 1;
@@ -1318,7 +1318,7 @@ static void VbBootRecTest(void)
/* Ctrl+D then enter means enable */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
MockGpioAfter(10, GPIO_SHUTDOWN);
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
trust_ec = 1;
@@ -1414,7 +1414,7 @@ static void VbBootRecTest(void)
/* Handle TPM error in enabling dev mode */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
MockGpioAfter(10, GPIO_SHUTDOWN);
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
trust_ec = 1;
@@ -1429,7 +1429,7 @@ static void VbBootRecTest(void)
/* Test Diagnostic Mode via Ctrl-C - display available */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
trust_ec = 1;
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
MockGpioAfter(10, GPIO_SHUTDOWN);
@@ -1452,7 +1452,7 @@ static void VbBootRecTest(void)
/* Test Diagnostic Mode via F12 - display disabled */
ResetMocks();
- shared->flags = VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags = VB2_SD_FLAG_MANUAL_RECOVERY;
sd->flags &= ~VB2_SD_FLAG_DISPLAY_AVAILABLE;
trust_ec = 1;
vbtlk_retval = VB2_ERROR_LK_NO_DISK_FOUND;
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index 80c8099a..71efb2cb 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -284,12 +284,12 @@ static void VbSlkTest(void)
/* Boot dev */
ResetMocks();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
vbboot_retval = -2;
test_slk(VB2_ERROR_MOCK, 0, "Dev boot bad");
ResetMocks();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
new_version = 0x20003;
test_slk(0, 0, "Dev doesn't roll forward");
TEST_EQ(kernel_version, 0x10002, " version");
diff --git a/tests/vboot_detach_menu_tests.c b/tests/vboot_detach_menu_tests.c
index c2ed73a4..705c874e 100644
--- a/tests/vboot_detach_menu_tests.c
+++ b/tests/vboot_detach_menu_tests.c
@@ -114,14 +114,14 @@ static void ResetMocks(void)
static void ResetMocksForDeveloper(void)
{
ResetMocks();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
shutdown_request_calls_left = -1;
}
static void ResetMocksForManualRecovery(void)
{
ResetMocks();
- shared->flags |= VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_MANUAL_RECOVERY;
trust_ec = 1;
}
@@ -503,7 +503,7 @@ static void VbBootDevTest(void)
/* Disable developer mode */
ResetMocksForDeveloper();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
mock_keypress[2] = VB_BUTTON_POWER_SHORT_PRESS;
@@ -528,7 +528,7 @@ static void VbBootDevTest(void)
/* Tonorm ignored if GBB forces dev switch on */
ResetMocksForDeveloper();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
gbb.flags |= VB2_GBB_FLAG_FORCE_DEV_SWITCH_ON;
mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
@@ -555,7 +555,7 @@ static void VbBootDevTest(void)
/* Shutdown requested at tonorm screen */
ResetMocksForDeveloper();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
mock_keypress[0] = VB_BUTTON_VOL_UP_SHORT_PRESS;
mock_keypress[1] = VB_BUTTON_POWER_SHORT_PRESS;
shutdown_request_calls_left = 2;
@@ -1343,7 +1343,7 @@ static void VbBootRecTest(void)
vbtlk_retval[1] = VB2_ERROR_LK_NO_DISK_FOUND -
VB_DISK_FLAG_REMOVABLE;
vbtlk_retval[2] = VB2_SUCCESS - VB_DISK_FLAG_REMOVABLE;
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
TEST_EQ(VbBootRecoveryMenu(ctx), VBERROR_SHUTDOWN_REQUESTED,
"Shutdown requested in BROKEN with dev switch");
TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery");
@@ -1387,7 +1387,7 @@ static void VbBootRecTest(void)
ResetMocksForManualRecovery();
vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
VB_DISK_FLAG_REMOVABLE;
- shared->flags &= ~VBSD_BOOT_REC_SWITCH_ON;
+ sd->flags &= ~VB2_SD_FLAG_MANUAL_RECOVERY;
TEST_EQ(VbBootRecoveryMenu(ctx), VBERROR_SHUTDOWN_REQUESTED,
"Go to BROKEN if recovery not manually requested");
TEST_EQ(vb2_nv_get(ctx, VB2_NV_RECOVERY_REQUEST), 0, " no recovery");
@@ -1763,7 +1763,7 @@ static void VbBootRecTest(void)
/* Cannot enable dev mode if already enabled. */
ResetMocksForManualRecovery();
- shared->flags |= VBSD_BOOT_DEV_SWITCH_ON;
+ sd->flags |= VB2_SD_FLAG_DEV_MODE_ENABLED;
vbtlk_retval[0] = VB2_ERROR_LK_NO_DISK_FOUND -
VB_DISK_FLAG_REMOVABLE;
i = 0;