diff options
author | Tim Wawrzynczak <twawrzynczak@chromium.org> | 2019-11-01 09:58:28 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-11-14 23:13:40 +0000 |
commit | 8c417c9303d9d8db1485c1945fd37f64139923f8 (patch) | |
tree | 4f25787ab20cd7c29e21914bc7b0abac070ffa87 | |
parent | 7211e470ec3c566a4f2bb087a73973dac42ca39f (diff) | |
download | vboot-8c417c9303d9d8db1485c1945fd37f64139923f8.tar.gz |
EC sync: Drop support for "PD" software sync.
All devices which have a PD chip running CrOS EC code have already shipped,
and there is no intention to go back to using an "EC" for a TCPC anymore.
BUG=b:143762298,chromium:1017093
BRANCH=none
TEST=make runtests
Change-Id: I177c00581089de59e4f35608b97ef5432e8b492b
Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1895712
Tested-by: Joel Kitching <kitching@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Joel Kitching <kitching@chromium.org>
(cherry picked from commit b35c2d1012625593c5a4a8be67ca6368aa3304df)
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/1918264
Reviewed-by: Shelley Chen <shchen@chromium.org>
Commit-Queue: Shelley Chen <shchen@chromium.org>
Tested-by: Shelley Chen <shchen@chromium.org>
-rw-r--r-- | Makefile | 4 | ||||
-rw-r--r-- | firmware/2lib/2ec_sync.c | 46 | ||||
-rw-r--r-- | firmware/2lib/include/2gbb_flags.h | 4 | ||||
-rw-r--r-- | firmware/2lib/include/2struct.h | 17 | ||||
-rw-r--r-- | firmware/include/vboot_api.h | 2 | ||||
-rwxr-xr-x | scripts/image_signing/gbb_flags_common.sh | 4 | ||||
-rw-r--r-- | tests/vb2_ec_sync_tests.c | 4 |
7 files changed, 30 insertions, 51 deletions
@@ -179,10 +179,6 @@ ifneq (${FORCE_LOGGING_ON},) CFLAGS += -DFORCE_LOGGING_ON=${FORCE_LOGGING_ON} endif -ifneq (${PD_SYNC},) -CFLAGS += -DPD_SYNC -endif - ifneq (${TPM2_MODE},) CFLAGS += -DTPM2_MODE endif diff --git a/firmware/2lib/2ec_sync.c b/firmware/2lib/2ec_sync.c index 5857fc87..cf57a12b 100644 --- a/firmware/2lib/2ec_sync.c +++ b/firmware/2lib/2ec_sync.c @@ -15,21 +15,18 @@ #include "vboot_display.h" #include "vboot_kernel.h" -#define VB2_SD_FLAG_ECSYNC_RW \ - (VB2_SD_FLAG_ECSYNC_EC_RW | VB2_SD_FLAG_ECSYNC_PD_RW) +#define VB2_SD_FLAG_ECSYNC_RW VB2_SD_FLAG_ECSYNC_EC_RW #define VB2_SD_FLAG_ECSYNC_ANY \ (VB2_SD_FLAG_ECSYNC_EC_RO | VB2_SD_FLAG_ECSYNC_RW) -#define VB2_SD_FLAG_ECSYNC_IN_RW \ - (VB2_SD_FLAG_ECSYNC_EC_IN_RW | VB2_SD_FLAG_ECSYNC_PD_IN_RW) +#define VB2_SD_FLAG_ECSYNC_IN_RW VB2_SD_FLAG_ECSYNC_EC_IN_RW #define IN_RW(devidx) \ - ((devidx) ? VB2_SD_FLAG_ECSYNC_PD_IN_RW : VB2_SD_FLAG_ECSYNC_EC_IN_RW) + ((devidx) ? 0 : VB2_SD_FLAG_ECSYNC_EC_IN_RW) #define WHICH_EC(devidx, select) \ ((select) == VB_SELECT_FIRMWARE_READONLY ? VB2_SD_FLAG_ECSYNC_EC_RO : \ - ((devidx) ? VB2_SD_FLAG_ECSYNC_PD_RW : VB2_SD_FLAG_ECSYNC_EC_RW)) + ((devidx) ? 0 : VB2_SD_FLAG_ECSYNC_EC_RW)) -/* PD doesn't support RW A/B */ #define RW_AB(devidx) ((devidx) ? 0 : VB2_CONTEXT_EC_EFS) static void request_recovery(struct vb2_context *ctx, uint32_t recovery_request) @@ -200,7 +197,7 @@ static vb2_error_t update_ec(struct vb2_context *ctx, int devidx, * Set IN_RW flag for a EC * * @param ctx Vboot2 context - * @param devidx Which device (EC=0, PD=1) + * @param devidx Which device (EC=0) */ static vb2_error_t check_ec_active(struct vb2_context *ctx, int devidx) { @@ -233,7 +230,7 @@ static vb2_error_t check_ec_active(struct vb2_context *ctx, int devidx) * Sync, jump, and protect one EC device * * @param ctx Vboot2 context - * @param devidx Which device (EC=0, PD=1) + * @param devidx Which device (EC=0) * @return VB2_SUCCESS, or non-zero if error. */ static vb2_error_t sync_one_ec(struct vb2_context *ctx, int devidx) @@ -280,7 +277,7 @@ static vb2_error_t sync_one_ec(struct vb2_context *ctx, int devidx) } } - /* Might need to update EC-RO (but not PD-RO) */ + /* Might need to update EC-RO */ if (sd->flags & VB2_SD_FLAG_ECSYNC_EC_RO) { VB2_DEBUG("RO Software Sync\n"); @@ -347,30 +344,16 @@ vb2_error_t ec_sync_phase1(struct vb2_context *ctx) if (gbb->flags & VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC) return VB2_SUCCESS; -#ifdef PD_SYNC - const int do_pd_sync = !(gbb->flags & - VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC); -#else - const int do_pd_sync = 0; -#endif - /* Set IN_RW flags */ if (check_ec_active(ctx, 0)) return VBERROR_EC_REBOOT_TO_RO_REQUIRED; - if (do_pd_sync && check_ec_active(ctx, 1)) - return VBERROR_EC_REBOOT_TO_RO_REQUIRED; /* Check if we need to update RW. Failures trigger recovery mode. */ if (check_ec_hash(ctx, 0, VB_SELECT_FIRMWARE_EC_ACTIVE)) return VBERROR_EC_REBOOT_TO_RO_REQUIRED; - if (do_pd_sync && check_ec_hash(ctx, 1, VB_SELECT_FIRMWARE_EC_ACTIVE)) - return VBERROR_EC_REBOOT_TO_RO_REQUIRED; + /* * See if we need to update EC-RO (devidx=0). - * - * If we want to extend this in the future to update PD-RO, we'll use a - * different NV flag so we can track EC-RO and PD-RO updates - * separately. */ if (vb2_nv_get(ctx, VB2_NV_TRY_RO_SYNC) && check_ec_hash(ctx, 0, VB_SELECT_FIRMWARE_READONLY)) { @@ -430,10 +413,11 @@ vb2_error_t ec_sync_check_aux_fw(struct vb2_context *ctx, /* If we're not updating the EC, skip aux fw syncs as well */ if (!ec_sync_allowed(ctx) || - (gbb->flags & VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { + (gbb->flags & VB2_GBB_FLAG_DISABLE_AUXFW_SOFTWARE_SYNC)) { *severity = VB_AUX_FW_NO_UPDATE; return VB2_SUCCESS; } + return VbExCheckAuxFw(severity); } @@ -461,16 +445,6 @@ vb2_error_t ec_sync_phase2(struct vb2_context *ctx) if (retval != VB2_SUCCESS) return retval; -#ifdef PD_SYNC - /* Handle updates and jumps for PD */ - struct vb2_gbb_header *gbb = vb2_get_gbb(ctx); - if (!(gbb->flags & VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC)) { - retval = sync_one_ec(ctx, 1); - if (retval != VB2_SUCCESS) - return retval; - } -#endif - return VB2_SUCCESS; } diff --git a/firmware/2lib/include/2gbb_flags.h b/firmware/2lib/include/2gbb_flags.h index 600ac89e..1bca85fb 100644 --- a/firmware/2lib/include/2gbb_flags.h +++ b/firmware/2lib/include/2gbb_flags.h @@ -62,8 +62,8 @@ enum vb2_gbb_flag { /* Default to booting legacy OS when dev screen times out */ VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY = 1 << 10, - /* Disable PD software sync */ - VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC = 1 << 11, + /* Disable auxiliary firmware (auxfw) software sync */ + VB2_GBB_FLAG_DISABLE_AUXFW_SOFTWARE_SYNC = 1 << 11, /* Disable shutdown on lid closed */ VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN = 1 << 12, diff --git a/firmware/2lib/include/2struct.h b/firmware/2lib/include/2struct.h index a7bd481b..a9fb000c 100644 --- a/firmware/2lib/include/2struct.h +++ b/firmware/2lib/include/2struct.h @@ -37,14 +37,23 @@ enum vb2_shared_data_flags { /* Kernel keyblock was verified by signature (not just hash) */ VB2_SD_FLAG_KERNEL_SIGNED = (1 << 2), - /* Software sync needs to update EC-RO, EC-RW, or PD-RW respectively */ + /* Software sync needs to update EC-RO or EC-RW */ VB2_SD_FLAG_ECSYNC_EC_RO = (1 << 3), VB2_SD_FLAG_ECSYNC_EC_RW = (1 << 4), - VB2_SD_FLAG_ECSYNC_PD_RW = (1 << 5), - /* Software sync says EC / PD running RW */ + /* + * VB2_SD_FLAG_ECSYNC_PD_RW (1 << 5) is deprecated. Vboot no + * longer supports updating "PD" devices running CrOS EC code. + */ + + /* Software sync says EC running RW */ VB2_SD_FLAG_ECSYNC_EC_IN_RW = (1 << 6), - VB2_SD_FLAG_ECSYNC_PD_IN_RW = (1 << 7), + + /* + * VB2_SD_FLAG_ECSYNC_PD_IN_RW (1 << 7) is deprecated. Vboot + * no longer supports updating "PD" devices running CrOS EC + * code. + */ /* Display is available on this boot */ VB2_SD_FLAG_DISPLAY_AVAILABLE = (1 << 8), diff --git a/firmware/include/vboot_api.h b/firmware/include/vboot_api.h index d07852a5..b0b08f52 100644 --- a/firmware/include/vboot_api.h +++ b/firmware/include/vboot_api.h @@ -672,7 +672,7 @@ vb2_error_t VbExEcDisableJump(int devidx); /** * Read the SHA-256 hash of the selected EC image. * - * @param devidx Device index. 0: EC, 1: PD. + * @param devidx Device index. 0: EC * @param select Image to get hash of. RO or RW. * @param hash Pointer to the hash. * @param hash_size Pointer to the hash size. diff --git a/scripts/image_signing/gbb_flags_common.sh b/scripts/image_signing/gbb_flags_common.sh index 2b0e58de..62429a57 100755 --- a/scripts/image_signing/gbb_flags_common.sh +++ b/scripts/image_signing/gbb_flags_common.sh @@ -30,7 +30,7 @@ GBBFLAGS_LIST=" VB2_GBB_FLAG_FAFT_KEY_OVERIDE 0x00000100 VB2_GBB_FLAG_DISABLE_EC_SOFTWARE_SYNC 0x00000200 VB2_GBB_FLAG_DEFAULT_DEV_BOOT_LEGACY 0x00000400 - VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC 0x00000800 + VB2_GBB_FLAG_DISABLE_AUXFW_SOFTWARE_SYNC 0x00000800 VB2_GBB_FLAG_DISABLE_LID_SHUTDOWN 0x00001000 VB2_GBB_FLAG_FORCE_MANUAL_RECOVERY 0x00004000 VB2_GBB_FLAG_DISABLE_FWMP 0x00008000 @@ -40,7 +40,7 @@ GBBFLAGS_LIST=" GBBFLAGS_DESCRIPTION_SUFFIX=" To get a developer-friendly device, try 0x11 (short_delay + boot_usb). For factory-related tests (always DEV), try 0x39. - For early development (disable EC/PD software sync), try 0xa39. + For early development (disable EC/auxfw software sync), try 0xa39. " GBBFLAGS_DESCRIPTION="${GBBFLAGS_DESCRIPTION_PREFIX}${GBBFLAGS_LIST}" GBBFLAGS_DESCRIPTION="${GBBFLAGS_DESCRIPTION}${GBBFLAGS_DESCRIPTION_SUFFIX}" diff --git a/tests/vb2_ec_sync_tests.c b/tests/vb2_ec_sync_tests.c index 91083035..ecc00f37 100644 --- a/tests/vb2_ec_sync_tests.c +++ b/tests/vb2_ec_sync_tests.c @@ -442,10 +442,10 @@ static void VbSoftwareSyncTest(void) TEST_EQ(ec_aux_fw_protected, 1, " aux fw protected"); ResetMocks(); - gbb.flags |= VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC; + gbb.flags |= VB2_GBB_FLAG_DISABLE_AUXFW_SOFTWARE_SYNC; ec_aux_fw_mock_severity = VB_AUX_FW_FAST_UPDATE; test_ssync(VB2_SUCCESS, 0, - "VB2_GBB_FLAG_DISABLE_PD_SOFTWARE_SYNC" + "VB2_GBB_FLAG_DISABLE_AUXFW_SOFTWARE_SYNC" " disables auxiliary FW update request"); TEST_EQ(ec_aux_fw_update_req, 0, " aux fw update disabled"); TEST_EQ(ec_aux_fw_protected, 1, " aux fw protected"); |