From 37151225f4d791204a75173eec64ebfdaf2cbdec Mon Sep 17 00:00:00 2001 From: Daisuke Nojiri Date: Mon, 21 Oct 2019 10:07:48 -0700 Subject: EFS2: Implement Early Firmware Selection ver.2 EFS v1 allowed Chromeboxes to verify RW without AP. EFS v2 will bring the benefts to Chromebooks, which are: - Reduce RO dependency and presence. Allow more code to be updated in the fields. - Remove jumptag and workarounds needed for late sysjump. Major imporvements over v1 are: - No A/B slot required. - No signature in RW or public key in RO. - Rollback-attack protection. - Verifies only RW being used instead of whole RW section. For battery-equipped devices, additional benefts are: - Immediate boot on drained battery. - Support recovery mode regardless of battery condition. - Faster charge in S5/G3. EC-Cr50 communication is based on the shared UART (go/ec-cr50-comm). EFS2 is documented in go/ec-efs2. Signed-off-by: Daisuke Nojiri BUG=chromium:1045217,chromium:141143112 BRANCH=none TEST=Boot Helios in NORMAL/NO_BOOT/NO_BOOT_RECOVERY/RECOVERY mode. TEST=Wake up EC from hibernate. TEST=Make EC assert PACKET_MODE to wake up Cr50 from deepsleep. Change-Id: I98a4fe1ecc59d106810a75daec3c424f953ff880 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2015357 Reviewed-by: Daisuke Nojiri Commit-Queue: Daisuke Nojiri Tested-by: Daisuke Nojiri Auto-Submit: Daisuke Nojiri --- common/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'common/main.c') diff --git a/common/main.c b/common/main.c index 5bbe6f8a55..bc67ea62b7 100644 --- a/common/main.c +++ b/common/main.c @@ -195,12 +195,13 @@ test_mockable __keep int main(void) button_init(); #endif /* defined(CONFIG_DEDICATED_RECOVERY_BUTTON | CONFIG_VOLUME_BUTTONS) */ -#if defined(CONFIG_VBOOT_EFS) +#if defined(CONFIG_VBOOT_EFS) || defined(CONFIG_VBOOT_EFS2) /* * Execute PMIC reset in case we're here after watchdog reset to unwedge * AP. This has to be done here because vboot_main may jump to RW. */ - chipset_handle_reboot(); + if (IS_ENABLED(CONFIG_CHIPSET_HAS_PLATFORM_PMIC_RESET)) + chipset_handle_reboot(); /* * For RO, it behaves as follows: * In recovery, it enables PD communication and returns. -- cgit v1.2.1