summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsuan Ting Chen <roccochen@chromium.org>2020-10-14 17:27:38 +0800
committerCommit Bot <commit-bot@chromium.org>2020-11-06 11:19:16 +0000
commit08776c33ef38ccd7a681c4345fc407fae9e13131 (patch)
treedccb56b573de4fddceca50acdce0edf635887cc2
parenta2c23f951377365bc0636b4dee0935c2b384ce21 (diff)
downloadvboot-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.c23
-rw-r--r--firmware/2lib/2stub.c6
-rw-r--r--firmware/2lib/include/2api.h7
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 */