summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaul E Rangel <rrangel@chromium.org>2022-01-11 12:54:36 -0700
committerFelix Held <felix-coreboot@felixheld.de>2022-01-17 15:46:35 +0000
commit80a7f4e7b6abd956ea9e73387b47a2fd0e33f14b (patch)
tree435fb4be3474d64061739469b735329eece15644
parentbf993110b3386deb895b39c86993e8b5bf807ac0 (diff)
downloadcoreboot-80a7f4e7b6abd956ea9e73387b47a2fd0e33f14b.tar.gz
coreboot-80a7f4e7b6abd956ea9e73387b47a2fd0e33f14b.tar.bz2
coreboot-80a7f4e7b6abd956ea9e73387b47a2fd0e33f14b.zip
console: Add Kconfig to dump pre-bootblock cbmem contents
Pre-bootblock stages (i.e., VBOOT_STARTS_BEFORE_BOOTBLOCK) might not have the ability to log to the UART, so their console messages are inaccessible until the boot processes gets into the payload or OS. This makes it difficult to debug verstage. This feature will dump the pre-bootblock CBMEM console immediately after the bootblock console is initialized. I chose to do this in console_init instead of bootblock_soc_init because I wanted to have the pre-bootblock contents dumped before the coreboot bootblock starting message is printed. BUG=b:213828947 TEST=Boot guybrush with PSP verstage and verify verstage logs are dumped to the UART. Signed-off-by: Raul E Rangel <rrangel@chromium.org> Change-Id: I363c93ef3ee6c5c303a6a68f88a622e2aa62594c Reviewed-on: https://review.coreboot.org/c/coreboot/+/61012 Reviewed-by: Karthik Ramasubramanian <kramasub@google.com> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
-rw-r--r--src/console/Kconfig8
-rw-r--r--src/console/init.c4
2 files changed, 12 insertions, 0 deletions
diff --git a/src/console/Kconfig b/src/console/Kconfig
index 4c2e76868571..60b27c459471 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -255,6 +255,14 @@ config CONSOLE_CBMEM_DUMP_TO_UART
serial output in case serial console is disabled and the device
resets itself while trying to boot the payload.
+config CONSOLE_CBMEM_PRINT_PRE_BOOTBLOCK_CONTENTS
+ bool
+ help
+ Pre-bootblock stages (i.e., VBOOT_STARTS_BEFORE_BOOTBLOCK) might not
+ have the ability to log to the UART, so their console messages are
+ inaccessible until the boot processes gets into the payload or OS.
+ This feature will dump the pre-bootblock CBMEM console immediately
+ after the bootblock console is initialized.
endif
config CONSOLE_SPI_FLASH
diff --git a/src/console/init.c b/src/console/init.c
index eb6b637a6c6c..4f93997f953a 100644
--- a/src/console/init.c
+++ b/src/console/init.c
@@ -1,6 +1,7 @@
/* SPDX-License-Identifier: GPL-2.0-only */
#include <commonlib/helpers.h>
+#include <console/cbmem_console.h>
#include <console/console.h>
#include <console/uart.h>
#include <console/streams.h>
@@ -59,6 +60,9 @@ void console_init(void)
console_inited = 1;
+ if (ENV_BOOTBLOCK && CONFIG(CONSOLE_CBMEM_PRINT_PRE_BOOTBLOCK_CONTENTS))
+ cbmem_dump_console();
+
printk(BIOS_NOTICE, "\n\ncoreboot-%s%s %s " ENV_STRING " starting (log level: %i)...\n",
coreboot_version, coreboot_extra_version, coreboot_build,
get_log_level());