vboot: Set VBSD_EC_SOFTWARE_SYNC flag in vboot
With CL:1988245, vb2_context flag VB2_CONTEXT_EC_SYNC_SUPPORTED is set
in depthcharge. Set VBSD_EC_SOFTWARE_SYNC in shared data based on the
presence of VB2_CONTEXT_EC_SYNC_SUPPORTED.
BRANCH=none
BUG=chromium:1038259, chromium:1042135
TEST=FEATURES=test emerge-nami vboot_reference
Cq-Depend: chromium:1988245
Change-Id: Ia1dd57858234bbc43f25517f416b7506c1b7919a
Signed-off-by: Yu-Ping Wu <yupingso@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1988246
Reviewed-by: Joel Kitching <kitching@chromium.org>
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 3a616e4..ee8080f 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -243,8 +243,8 @@
* instead of flags. That would save on firmware image size because
* features that won't be used in an image could be compiled out.
*/
- if (shared->flags & VBSD_EC_SOFTWARE_SYNC)
- ctx->flags |= VB2_CONTEXT_EC_SYNC_SUPPORTED;
+ if (ctx->flags & VB2_CONTEXT_EC_SYNC_SUPPORTED)
+ shared->flags |= VBSD_EC_SOFTWARE_SYNC;
if (shared->flags & VBSD_NVDATA_V2)
ctx->flags |= VB2_CONTEXT_NVDATA_V2;
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index 71efb2c..aaafcc3 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -210,15 +210,15 @@
TEST_EQ(kernel_version, 0x10002, " version");
/*
- * If shared->flags doesn't ask for software sync, we won't notice
- * that error.
+ * If ctx->flags doesn't ask for software sync, we won't notice that
+ * error.
*/
ResetMocks();
test_slk(0, 0, "EC sync not done");
- /* Same if shared->flags asks for sync, but it's overridden by GBB */
+ /* Same if ctx->flags asks for sync, but it's overridden by GBB */
ResetMocks();
- shared->flags |= VBSD_EC_SOFTWARE_SYNC;
+ ctx->flags |= VB2_CONTEXT_EC_SYNC_SUPPORTED;
gbb.flags |= VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC;
test_slk(0, 0, "EC sync disabled by GBB");