diff options
author | Nicolas Boichat <drinkcat@chromium.org> | 2018-09-14 18:32:50 +0200 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-20 21:30:02 -0700 |
commit | 852a4f2f35602724ac8d784b721df5cdc57ac086 (patch) | |
tree | 5802d31fbce654a86609f17c665964c49ef49b7e /common/rollback.c | |
parent | 6cb09dc09f5e3891f6155fac9ae6779cb861d6d1 (diff) | |
download | chrome-ec-852a4f2f35602724ac8d784b721df5cdc57ac086.tar.gz |
rollback: Add host command to query rollback information
Rollback id will be useful to check that the secret has actually
been wiped. Min rollback version and RW rollback version might
be useful in the future.
BRANCH=nocturne
BUG=b:115733483
TEST=ectool --name=cros_fp rollbackinfo
=> Rollback block id: X
ectool --name=cros_fp reboot_ec; sleep 0.5; \
ectool --name=cros_fp rwsigaction abort && \
ectool --name=cros_fp addentropy reset && \
ectool --name=cros_fp reboot_ec
ectool --name=cros_fp rollbackinfo
=> Rollback block id: X+2
Change-Id: I039d26d302d3a12b0d41acca34aa28d4a2dd096d
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1226126
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Nicolas Norvez <norvez@chromium.org>
Diffstat (limited to 'common/rollback.c')
-rw-r--r-- | common/rollback.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/common/rollback.c b/common/rollback.c index cc5d27cb12..53d840ec46 100644 --- a/common/rollback.c +++ b/common/rollback.c @@ -459,3 +459,26 @@ static int command_rollback_info(int argc, char **argv) DECLARE_SAFE_CONSOLE_COMMAND(rollbackinfo, command_rollback_info, NULL, "Print rollback info"); + +static int host_command_rollback_info(struct host_cmd_handler_args *args) +{ + struct ec_response_rollback_info *r = args->response; + int min_region; + struct rollback_data data; + + min_region = get_latest_rollback(&data); + + if (min_region < 0) + return EC_RES_UNAVAILABLE; + + r->id = data.id; + r->rollback_min_version = data.rollback_min_version; + r->rw_rollback_version = system_get_rollback_version(SYSTEM_IMAGE_RW); + + args->response_size = sizeof(*r); + + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_ROLLBACK_INFO, + host_command_rollback_info, + EC_VER_MASK(0)); |