diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2019-11-11 13:59:59 -0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-13 18:23:42 +0000 |
commit | fa6119dc2cd69e711e9127241c2736e57706321c (patch) | |
tree | aa422da105258d71b0e1bc7ada9751fa5ac0f369 /board/cr50/board.c | |
parent | 420abd92d8a437cde30115405a3fa883c7a7bccd (diff) | |
download | chrome-ec-fa6119dc2cd69e711e9127241c2736e57706321c.tar.gz |
nvmem: do not waste time looking for legacy NVMEM space
It takes 14.5 ms to decrypt two 12K flash spaces into SRAM, then
calculate their hash to see if either one is is a valid NVMEM
space.
There is no need for this check when the 'other' Cr50 image is newer
than {3,4}.18.
BRANCH=Cr50, Cr50-mp
BUG=b:132665283
TEST=with added instrumentation verified that in case the other slot
is occupied by 0.0.22 image, the check takes 14.5 ms, when the
other slot is occupied by 0.4.23 image the check takes 8 us.
Change-Id: I0414ca3d7e90d343589a21e91319f35479632eff
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1967543
Reviewed-by: Keith Short <keithshort@chromium.org>
Diffstat (limited to 'board/cr50/board.c')
-rw-r--r-- | board/cr50/board.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/board/cr50/board.c b/board/cr50/board.c index ac1e640e47..4eeb21fc23 100644 --- a/board/cr50/board.c +++ b/board/cr50/board.c @@ -1718,3 +1718,16 @@ int board_in_prod_mode(void) { return in_prod_mode; } + +int board_nvmem_legacy_check_needed(void) +{ + enum system_image_copy_t other_rw; + const struct SignedHeader *h; + + other_rw = system_get_image_copy() == SYSTEM_IMAGE_RW ? + SYSTEM_IMAGE_RW_B : SYSTEM_IMAGE_RW; + + h = (const struct SignedHeader *)get_program_memory_addr(other_rw); + + return (h->major_ <= 2) || (h->minor_ <= 18); +} |