summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2022-02-02 11:59:51 -0800
committerCommit Bot <commit-bot@chromium.org>2022-02-27 02:45:54 +0000
commit14b8a681131e81523f6dd9ffd5125026c737daed (patch)
treed22464dc92453f2f3a4f2754ae3b6de521184309
parent5a002dd61c28cef49145b92cc7be9f9278ce0481 (diff)
downloadvboot-14b8a681131e81523f6dd9ffd5125026c737daed.tar.gz
EC-EFS: Ignore NO_BOOT if EC sync isn't enabled
Currently, Depthcharge prevents the kernel from being loaded if NO_BOOT flag is set. This makes sense only when EC sync is enabled. This patch makes VbSelectAndLoadKernel ignore NO_BOOT flag if VB2_CONTEXT_EC_SYNC_SUPPORTED isn't set. BUG=b:216317864 BRANCH=None TEST=None Change-Id: Ic501f430754947dfa8a2243dcb12d31232b18b75 Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/3433028 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
-rw-r--r--firmware/lib/vboot_api_kernel.c1
-rw-r--r--tests/vboot_api_kernel4_tests.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 85a8f4b4..9e896208 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -253,6 +253,7 @@ vb2_error_t VbSelectAndLoadKernel(struct vb2_context *ctx,
* GBB flag disables software sync.
*/
if (!(gbb_flags & VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC)
+ && (ctx->flags & VB2_CONTEXT_EC_SYNC_SUPPORTED)
&& (ctx->flags & VB2_CONTEXT_NO_BOOT)) {
VB2_DEBUG("Blocking escape from NO_BOOT mode.\n");
vb2api_fail(ctx, VB2_RECOVERY_ESCAPE_NO_BOOT, 0);
diff --git a/tests/vboot_api_kernel4_tests.c b/tests/vboot_api_kernel4_tests.c
index e3f19a8c..60d87c60 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -262,12 +262,14 @@ static void select_and_load_kernel_tests(void)
/* Recovery - VB2_ERROR_ESCAPE_NO_BOOT */
reset_common_data();
ctx->flags |= VB2_CONTEXT_NO_BOOT;
+ ctx->flags |= VB2_CONTEXT_EC_SYNC_SUPPORTED;
test_slk(VB2_ERROR_ESCAPE_NO_BOOT,
VB2_RECOVERY_ESCAPE_NO_BOOT, "Recovery for NO_BOOT escape");
/* Boot normal - VB2_ERROR_ESCAPE_NO_BOOT */
reset_common_data();
ctx->flags |= VB2_CONTEXT_NO_BOOT;
+ ctx->flags |= VB2_CONTEXT_EC_SYNC_SUPPORTED;
gbb.flags |= VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC;
test_slk(VB2_SUCCESS, 0, "DISABLE_EC_SOFTWARE_SYNC ignores NO_BOOT");