diff options
author | Hsuan Ting Chen <roccochen@chromium.org> | 2020-10-14 17:27:38 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-11-06 11:19:16 +0000 |
commit | 08776c33ef38ccd7a681c4345fc407fae9e13131 (patch) | |
tree | dccb56b573de4fddceca50acdce0edf635887cc2 | |
parent | a2c23f951377365bc0636b4dee0935c2b384ce21 (diff) | |
download | vboot-08776c33ef38ccd7a681c4345fc407fae9e13131.tar.gz |
Reland "vboot: Enable diagnostics on Dirinboz"
This is a reland of 442c0b23870ce799140ac962ac2a24dfada81df6
Replace `strncasecmp()` with `strncmp()`
Original change's description:
> vboot: Enable diagnostics on Dirinboz
>
> Enable diagnostics on Dirinboz only.
> This CL should not be merged to ToT.
>
> BRANCH=zork
> BUG=b:170789297
> TEST=none
>
> Cq-Depend: chromium:2484207
> Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
> Change-Id: Iacdfbe292b721e430cd5bbc53b435611d0f7a0d0
> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2484206
> Tested-by: Martin Roth <martinroth@google.com>
> Reviewed-by: Hung-Te Lin <hungte@chromium.org>
> Reviewed-by: Martin Roth <martinroth@google.com>
> Commit-Queue: Martin Roth <martinroth@google.com>
Bug: b:170789297
Cq-Depend: chromium:2508096
Change-Id: I117b839793ae439d4a4e374c7ff2f6d801fdb8be
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/vboot_reference/+/2508098
Tested-by: Hsuan Ting Chen <roccochen@chromium.org>
Reviewed-by: Hung-Te Lin <hungte@chromium.org>
Commit-Queue: Hsuan Ting Chen <roccochen@chromium.org>
-rw-r--r-- | firmware/2lib/2kernel.c | 23 | ||||
-rw-r--r-- | firmware/2lib/2stub.c | 6 | ||||
-rw-r--r-- | firmware/2lib/include/2api.h | 7 |
3 files changed, 36 insertions, 0 deletions
diff --git a/firmware/2lib/2kernel.c b/firmware/2lib/2kernel.c index 7a827c3a..4debaa05 100644 --- a/firmware/2lib/2kernel.c +++ b/firmware/2lib/2kernel.c @@ -5,6 +5,8 @@ * Kernel selection, loading, verification, and booting. */ +#include <strings.h> + #include "2common.h" #include "2kernel.h" #include "2misc.h" @@ -121,6 +123,26 @@ int vb2api_is_developer_signed(struct vb2_context *ctx) return 0; } +/* Enable board-specific flags */ +static void board_modify_flags(uint32_t *flags) +{ + const char *board_name = vb2ex_get_mainboard_name(); + int i; + + /* Enable diagnostics only for Dirinboz */ + const char *list_enable_diagnostics[] = { + "Dirinboz", + }; + for (i = 0; i < ARRAY_SIZE(list_enable_diagnostics); i++) { + const char *enable_diagnostics = list_enable_diagnostics[i]; + if (strncmp(board_name, enable_diagnostics, + strlen(enable_diagnostics))) + continue; + VB2_DEBUG("Enable diagnostics for %s\n", board_name); + *flags &= ~VB2_SECDATA_KERNEL_FLAG_DIAGNOSTIC_UI_DISABLED; + } +} + vb2_error_t vb2api_kernel_phase1(struct vb2_context *ctx) { struct vb2_shared_data *sd = vb2_get_sd(ctx); @@ -150,6 +172,7 @@ vb2_error_t vb2api_kernel_phase1(struct vb2_context *ctx) flags |= VB2_SECDATA_KERNEL_FLAG_PHONE_RECOVERY_UI_DISABLED; flags |= VB2_SECDATA_KERNEL_FLAG_DIAGNOSTIC_UI_DISABLED; flags |= VB2_SECDATA_KERNEL_FLAG_HWCRYPTO_ALLOWED; + board_modify_flags(&flags); vb2_secdata_kernel_set(ctx, VB2_SECDATA_KERNEL_FLAGS, flags); } diff --git a/firmware/2lib/2stub.c b/firmware/2lib/2stub.c index dba852e1..a5e2f137 100644 --- a/firmware/2lib/2stub.c +++ b/firmware/2lib/2stub.c @@ -75,6 +75,12 @@ void vb2ex_abort(void) } __attribute__((weak)) +const char *vb2ex_get_mainboard_name(void) +{ + return ""; +} + +__attribute__((weak)) const char *vb2ex_get_debug_info(struct vb2_context *ctx) { return NULL; diff --git a/firmware/2lib/include/2api.h b/firmware/2lib/include/2api.h index 67b5074a..54f12901 100644 --- a/firmware/2lib/include/2api.h +++ b/firmware/2lib/include/2api.h @@ -1005,6 +1005,13 @@ void vb2ex_abort(void); */ vb2_error_t vb2ex_commit_data(struct vb2_context *ctx); +/** + * Get mainboard name. + * + * @return The pointer to the mainboard name string. NULL on error. + */ +const char *vb2ex_get_mainboard_name(void); + /*****************************************************************************/ /* TPM functionality */ |