diff options
author | Joel Kitching <kitching@google.com> | 2020-02-14 15:38:37 +0800 |
---|---|---|
committer | Joel Kitching <kitching@chromium.org> | 2020-02-18 05:54:31 +0000 |
commit | 462a2efd2fb2f0effcb56580f3e6e7c14a17d23a (patch) | |
tree | b2e1cb0bd93db1507fecebeba1c3623b92a801de | |
parent | 4f614777db430bcf50c3ee945bc4170bba8cdaa9 (diff) | |
download | vboot-462a2efd2fb2f0effcb56580f3e6e7c14a17d23a.tar.gz |
vboot: implement vb2api_get_recovery_reason
This API function should be used rather than directly
accessing vb2_shared_data.recovery_reason.
BUG=b:124141368, chromium:1038260, chromium:957880
TEST=make clean && make runtests
BRANCH=none
Change-Id: I92c8f9a654400be69885a691b39c4b9e4e2031c1
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2055662
Reviewed-by: Julius Werner <jwerner@chromium.org>
Commit-Queue: Joel Kitching <kitching@chromium.org>
Tested-by: Joel Kitching <kitching@chromium.org>
-rw-r--r-- | firmware/2lib/2misc.c | 5 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 10 | ||||
-rw-r--r-- | tests/vb2_misc_tests.c | 8 |
3 files changed, 23 insertions, 0 deletions
diff --git a/firmware/2lib/2misc.c b/firmware/2lib/2misc.c index b289f315..76062f89 100644 --- a/firmware/2lib/2misc.c +++ b/firmware/2lib/2misc.c @@ -443,3 +443,8 @@ int vb2api_need_reboot_for_display(struct vb2_context *ctx) } return 0; } + +uint32_t vb2api_get_recovery_reason(struct vb2_context *ctx) +{ + return vb2_get_sd(ctx)->recovery_reason; +} diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 2a87ab12..0ad10bd7 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -765,6 +765,16 @@ int vb2api_is_developer_signed(struct vb2_context *ctx); */ int vb2api_need_reboot_for_display(struct vb2_context *ctx); +/** + * Get the current recovery reason. + * + * See enum vb2_nv_recovery in 2recovery_reasons.h. + * + * @param ctx Vboot context + * @return Current recovery reason. + */ +uint32_t vb2api_get_recovery_reason(struct vb2_context *ctx); + /*****************************************************************************/ /* APIs provided by the caller to verified boot */ diff --git a/tests/vb2_misc_tests.c b/tests/vb2_misc_tests.c index ac7671e2..5e2cb89a 100644 --- a/tests/vb2_misc_tests.c +++ b/tests/vb2_misc_tests.c @@ -785,6 +785,13 @@ static void clear_recovery_tests(void) 4, " subcode shifted"); } +static void get_recovery_reason_tests(void) +{ + reset_common_data(); + sd->recovery_reason = 4; + TEST_EQ(vb2api_get_recovery_reason(ctx), 4, "correct recovery reason"); +} + int main(int argc, char* argv[]) { init_workbuf_tests(); @@ -797,6 +804,7 @@ int main(int argc, char* argv[]) select_slot_tests(); need_reboot_for_display_tests(); clear_recovery_tests(); + get_recovery_reason_tests(); return gTestSuccess ? 0 : 255; } |