cbmem_console: Improve 'cbmem -1' behavior for truncated pre-CBMEM logs

The 'cbmem -1' flag that cuts off console output before the last boot
will ignore content from earlier stages if it was truncated due to lack
of pre-CBMEM console space. This patch makes the "log truncated" message
more specific and adds it as an additional cut-off marker to 'cbmem -1'
to counteract that problem.

Also raise the log level of the coreboot banner one step to BIOS_NOTICE
to make it more likely to be included in the output for 'cbmem -1' to
find. (I believe NOTICE is reasonable but I wouldn't want to go as far
as WARN which should be reserved for actual problems. Of course this is
not ideal, but then again, our whole log-level system really isn't... it
would be better if we could make it always print a banner to the CBMEM
console without affecting the UART at the same time, but that would
require a larger amount of work.)

Change-Id: I58288593dfa757e14f4a9da4ffa7e27b0b66feb9
Reported-by: https://ticket.coreboot.org/issues/117
Signed-off-by: Julius Werner <jwerner@chromium.org>
Reviewed-on: https://review.coreboot.org/19720
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
This commit is contained in:
Julius Werner 2017-05-16 13:54:18 -07:00
parent 57e15e609e
commit d906bb68c3
3 changed files with 7 additions and 4 deletions

View File

@ -71,6 +71,6 @@ asmlinkage void console_init(void)
console_hw_init(); console_hw_init();
printk(BIOS_INFO, "\n\ncoreboot-%s%s %s " ENV_STRING " starting...\n", printk(BIOS_NOTICE, "\n\ncoreboot-%s%s %s " ENV_STRING " starting...\n",
coreboot_version, coreboot_extra_version, coreboot_build); coreboot_version, coreboot_extra_version, coreboot_build);
} }

View File

@ -156,8 +156,8 @@ static void copy_console_buffer(struct cbmem_console *src_cons_p)
return; return;
if (src_cons_p->cursor & OVERFLOW) { if (src_cons_p->cursor & OVERFLOW) {
const char overflow_warning[] = "\n*** Pre-CBMEM console " const char overflow_warning[] = "\n*** Pre-CBMEM " ENV_STRING
"overflowed, log truncated ***\n"; " console overflowed, log truncated! ***\n";
for (c = 0; c < sizeof(overflow_warning) - 1; c++) for (c = 0; c < sizeof(overflow_warning) - 1; c++)
cbmemc_tx_byte(overflow_warning[c]); cbmemc_tx_byte(overflow_warning[c]);
for (c = src_cons_p->cursor & CURSOR_MASK; for (c = src_cons_p->cursor & CURSOR_MASK;

View File

@ -670,9 +670,12 @@ static void dump_console(int one_boot_only)
cursor = 0; cursor = 0;
if (one_boot_only) { if (one_boot_only) {
#define BANNER_REGEX(stage) "\n\ncoreboot-[^\n]* " stage " starting\\.\\.\\.\n" #define BANNER_REGEX(stage) "\n\ncoreboot-[^\n]* " stage " starting\\.\\.\\.\n"
#define OVERFLOW_REGEX(stage) "\n*** Pre-CBMEM " stage " console overflowed"
const char *regex[] = { BANNER_REGEX("bootblock"), const char *regex[] = { BANNER_REGEX("bootblock"),
BANNER_REGEX("romstage"), BANNER_REGEX("romstage"),
BANNER_REGEX("ramstage")}; OVERFLOW_REGEX("romstage"),
BANNER_REGEX("ramstage"),
OVERFLOW_REGEX("ramstage") };
int i; int i;
for (i = 0; !cursor && i < ARRAY_SIZE(regex); i++) { for (i = 0; !cursor && i < ARRAY_SIZE(regex); i++) {