diff options
author | ChromeOS Developer <rspangler@chromium.org> | 2016-10-31 16:19:20 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2017-01-12 15:56:22 -0800 |
commit | 284bf5549a4df474534f288902db489902407830 (patch) | |
tree | 35a57427366db7dfdff622b439b0709371726005 /tests/ec_sync_tests.c | |
parent | d1408000508eb4d80e6d499da4530bb6251b3509 (diff) | |
download | vboot-284bf5549a4df474534f288902db489902407830.tar.gz |
firmware: Refactor and clean up ec_sync
Previously, the EC software sync process called VbDisplayScreen() from
several function calls deep. Refactor software sync so that the UI
decisions are at a higher level (in ec_sync_all.c) and isolated from
the low-level EC software sync functionality (in ec_sync.c).
This is one in a series of changes which are more clearly separating
out the UI, to make it easier to support multiple UI across a range of
devices.
BUG=chromium:611535
BRANCH=none
TEST=make runtests; build_packages --board=reef chromeos-firmware; boot reef
Change-Id: I40597abeb5b0cc8f5d8fc2098e4acbed4bf59bf6
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/411921
Reviewed-by: Shelley Chen <shchen@chromium.org>
Diffstat (limited to 'tests/ec_sync_tests.c')
-rw-r--r-- | tests/ec_sync_tests.c | 43 |
1 files changed, 9 insertions, 34 deletions
diff --git a/tests/ec_sync_tests.c b/tests/ec_sync_tests.c index dfdd27bc..b632fb6c 100644 --- a/tests/ec_sync_tests.c +++ b/tests/ec_sync_tests.c @@ -13,6 +13,7 @@ #include "2common.h" #include "2misc.h" #include "2nvstorage.h" +#include "ec_sync.h" #include "gbb_header.h" #include "host_common.h" #include "load_kernel_fw.h" @@ -54,6 +55,7 @@ static uint8_t update_hash; static int want_ec_hash_size; static struct vb2_context ctx; static uint8_t workbuf[VB2_KERNEL_WORKBUF_RECOMMENDED_SIZE]; +static struct vb2_shared_data *sd; static uint32_t screens_displayed[8]; static uint32_t screens_count = 0; @@ -69,16 +71,19 @@ static void ResetMocks(void) memset(&gbb, 0, sizeof(gbb)); gbb.major_version = GBB_MAJOR_VER; gbb.minor_version = GBB_MINOR_VER; - gbb.flags = 0; + gbb.flags = GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC; + cparams.gbb = &gbb; memset(&ctx, 0, sizeof(ctx)); ctx.workbuf = workbuf; ctx.workbuf_size = sizeof(workbuf); vb2_init_context(&ctx); vb2_nv_init(&ctx); + sd = vb2_get_sd(&ctx); memset(&shared_data, 0, sizeof(shared_data)); VbSharedDataInit(shared, sizeof(shared_data)); + shared->flags = VBSD_EC_SOFTWARE_SYNC; trust_ec = 0; mock_in_rw = 0; @@ -210,7 +215,7 @@ VbError_t VbDisplayScreen(struct vb2_context *ctx, VbCommonParams *cparams, static void test_ssync(VbError_t retval, int recovery_reason, const char *desc) { - TEST_EQ(VbEcSoftwareSync(&ctx, 0, &cparams), retval, desc); + TEST_EQ(ec_sync_all(&ctx, &cparams), retval, desc); TEST_EQ(vb2_nv_get(&ctx, VB2_NV_RECOVERY_REQUEST), recovery_reason, " recovery reason"); } @@ -221,12 +226,12 @@ static void VbSoftwareSyncTest(void) { /* Recovery cases */ ResetMocks(); - shared->recovery_reason = 123; + sd->recovery_reason = 123; test_ssync(0, 0, "In recovery, EC-RO"); TEST_EQ(ec_rw_protected, 0, " ec rw protected"); ResetMocks(); - shared->recovery_reason = 123; + sd->recovery_reason = 123; mock_in_rw = 1; test_ssync(VBERROR_EC_REBOOT_TO_RO_REQUIRED, 123, "Recovery needs EC-RO"); @@ -237,36 +242,6 @@ static void VbSoftwareSyncTest(void) test_ssync(VBERROR_EC_REBOOT_TO_RO_REQUIRED, VBNV_RECOVERY_EC_UNKNOWN_IMAGE, "Unknown EC image"); - ResetMocks(); - shared->flags |= VBSD_LF_USE_RO_NORMAL; - mock_in_rw = 1; - test_ssync(VBERROR_EC_REBOOT_TO_RO_REQUIRED, - 0, "AP-RO needs EC-RO"); - - ResetMocks(); - shared->flags |= VBSD_LF_USE_RO_NORMAL; - test_ssync(0, 0, "AP-RO, EC-RO"); - TEST_EQ(ec_rw_protected, 1, " ec rw protected"); - TEST_EQ(ec_run_image, 0, " ec run image"); - - ResetMocks(); - shared->flags |= VBSD_LF_USE_RO_NORMAL; - run_retval = VBERROR_SIMULATED; - test_ssync(VBERROR_EC_REBOOT_TO_RO_REQUIRED, - VBNV_RECOVERY_EC_SOFTWARE_SYNC, "Stay in RO fail"); - - ResetMocks(); - shared->flags |= VBSD_LF_USE_RO_NORMAL; - protect_retval = VBERROR_SIMULATED; - test_ssync(VBERROR_SIMULATED, - VBNV_RECOVERY_EC_PROTECT, "Protect error"); - - /* No longer check for shutdown requested */ - ResetMocks(); - shared->flags |= VBSD_LF_USE_RO_NORMAL; - shutdown_request_calls_left = 0; - test_ssync(0, 0, "AP-RO shutdown requested"); - /* Calculate hashes */ ResetMocks(); mock_ec_rw_hash_size = 0; |