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>
diff --git a/firmware/lib/vboot_api_kernel.c b/firmware/lib/vboot_api_kernel.c
index 85a8f4b..9e89620 100644
--- a/firmware/lib/vboot_api_kernel.c
+++ b/firmware/lib/vboot_api_kernel.c
@@ -253,6 +253,7 @@
 	 * 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 e3f19a8..60d87c6 100644
--- a/tests/vboot_api_kernel4_tests.c
+++ b/tests/vboot_api_kernel4_tests.c
@@ -262,12 +262,14 @@
 	/* 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");