diff options
author | Jakub Czapiga <jacz@semihalf.com> | 2023-09-08 13:19:00 +0000 |
---|---|---|
committer | Martin L Roth <gaumless@gmail.com> | 2023-09-18 15:42:31 +0000 |
commit | b2163ea84b683d6dc4630125b9921a5c681ed434 (patch) | |
tree | 14d3c06e3be256aa22d60a2e04244eb1114e3822 /payloads/libpayload/libc/lp_vboot.c | |
parent | 971c9442f6d240b0d6af78674fced4001fc50f57 (diff) | |
download | coreboot-b2163ea84b683d6dc4630125b9921a5c681ed434.tar.gz coreboot-b2163ea84b683d6dc4630125b9921a5c681ed434.tar.bz2 coreboot-b2163ea84b683d6dc4630125b9921a5c681ed434.zip |
libpayload: Add vboot and reboot utility functions
Patch adds:
- vboot_fail_and_reboot() for vboot failures handling.
- reboot() weak implementation for payloads to implement, used
by vboot_fail_and_reboot().
- vboot_recovery_mode_enabled() to check if recovery mode flag is set in
vboot context. Implemented for future libcbfs implementation
of VBOOT_CBFS_INTEGRATION in libpayload.
BUG=b:197114807
TEST=none
Change-Id: I53d1955573d54bc56d05f7780c18dcc8ac1fd399
Signed-off-by: Jakub Czapiga <jacz@semihalf.com>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/77725
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Yu-Ping Wu <yupingso@google.com>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Eric Lai <eric_lai@quanta.corp-partner.google.com>
Diffstat (limited to 'payloads/libpayload/libc/lp_vboot.c')
-rw-r--r-- | payloads/libpayload/libc/lp_vboot.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/payloads/libpayload/libc/lp_vboot.c b/payloads/libpayload/libc/lp_vboot.c index b7717c7e7894..eddd317ba0fe 100644 --- a/payloads/libpayload/libc/lp_vboot.c +++ b/payloads/libpayload/libc/lp_vboot.c @@ -26,3 +26,18 @@ struct vb2_context *vboot_get_context(void) return ctx; } + +void vboot_fail_and_reboot(struct vb2_context *ctx, uint8_t reason, uint8_t subcode) +{ + if (reason) + vb2api_fail(ctx, reason, subcode); + + printf("vboot: reboot requested (reason: %#x, subcode %#x)", reason, subcode); + vb2ex_commit_data(ctx); + reboot(); +} + +int vboot_recovery_mode_enabled(void) +{ + return !!(vboot_get_context()->flags & VB2_CONTEXT_RECOVERY_MODE); +} |