diff options
author | Mary Ruthven <mruthven@chromium.org> | 2022-07-28 09:42:48 -0500 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-08-25 02:45:15 +0000 |
commit | 07ba1c6481737c5a6f03ab5ad08c3334f3c9e1fd (patch) | |
tree | 6ecea43ba8c7c0a8ffcb5688101041dcbd9b9032 /board | |
parent | f096d17cf44eacb27f9ad6d06684465d87da9379 (diff) | |
download | chrome-ec-07ba1c6481737c5a6f03ab5ad08c3334f3c9e1fd.tar.gz |
apro: clear AP_RO_FAIL on combo0
There are a couple of known issues saving the AP RO verification hash in
cr50, so it's possible AP RO verification will fail even if the AP RO is
ok. Add support for releasing the EC from reset with PWRB + refresh
after AP RO verification fails. This just makes it easier to recover the
device. If the device is released from reset, the status is set to
AP_RO_FAIL_CLEARED and a APROF_FAIL_CLEARED flog event is logged.
This only releases EC reset if the device failed AP RO verification. Any
other verification status won't get cleared by the key combo.
BUG=b:240530668
TEST=trigger verification on a device with a bad hash. Verify the EC is
held in reset until PWRB + refresh is pressed.
make -C extra/usb_updater gsctool
Change-Id: I03a02501e7c91a41374816d82f48a5289f289c39
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3805820
Reviewed-by: Andrey Pronin <apronin@chromium.org>
Diffstat (limited to 'board')
-rw-r--r-- | board/cr50/board.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c index bc19800758..2ddc4ae2dd 100644 --- a/board/cr50/board.c +++ b/board/cr50/board.c @@ -2,6 +2,7 @@ * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ +#include "ap_ro_integrity_check.h" #include "board_id.h" #include "ccd_config.h" #include "clock.h" @@ -1240,6 +1241,10 @@ static void key_combo0_irq(void) hook_call_deferred(&board_reboot_ec_data, 0); } +#ifdef CONFIG_AP_RO_VERIFICATION + ap_ro_clear_ec_rst_override(); +#endif + CPRINTS("Recovery Requested"); } DECLARE_IRQ(GC_IRQNUM_RBOX0_INTR_BUTTON_COMBO0_RDY_INT, key_combo0_irq, 0); |