diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2020-05-27 10:26:27 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-06-05 04:29:38 +0000 |
commit | dd15f8676d55ef1c78f78016ce6c6175d3806174 (patch) | |
tree | c7e39fca212acee742f8dd668953d4c6446ad471 /board/cr50/board.c | |
parent | 398315c41f2111135f2510e88d55ad3dbe83b5d6 (diff) | |
download | chrome-ec-dd15f8676d55ef1c78f78016ce6c6175d3806174.tar.gz |
ap_ro: add handling of the corrupted hash
This patch closes the AP RO verification loop on the Cr50 side.
If the check is triggered, the valid AP hash is found, and the RO
contents is found to not match the hash, the Cr50 will
- assert the EC reset;
- set a flag to prevent the code from deasserting EC reset;
- start a periodic hook to reassert EC reset in case the user hits
power+refresh.
This will prevent the Chrome OS device from booting.
A new CLI command is being added to display the verification state. In
developer images the new command would allow to clear the failure
state, when running prod images the only way out of the failure state
would be the powercycle.
BUG=b:153764696
TEST=verified that erasing or programming AP RO hash when board ID is
set is impossible.
Verified proper shutdown in case AP RO has is present and the AP
RO space is corrupted and recovery using the new cli command when
running a dev image.
Verified that 'ecrst off' properly reports the override.
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Change-Id: I1029114126a9a79f80385af7bc8d5467738e04ca
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2218676
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
Diffstat (limited to 'board/cr50/board.c')
-rw-r--r-- | board/cr50/board.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c index 6843673662..defb033d52 100644 --- a/board/cr50/board.c +++ b/board/cr50/board.c @@ -1175,6 +1175,12 @@ void assert_ec_rst(void) void deassert_ec_rst(void) { + if (ec_rst_override()) { + ccprintf("EC un-reset blocked, try powercycle or Cr50 reboot." + "\n"); + return; + } + wait_ec_rst(0); if (uart_bitbang_is_enabled()) |