summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2013-08-12 23:29:57 +0300
committerKyösti Mälkki <kyosti.malkki@gmail.com>2013-08-16 05:39:47 +0200
commit361cd8153d3426f2ba4f65ccb396e8e20e738068 (patch)
tree571eb1d0fbead579b2fb47cab6cd3aff40d72ceb
parent7037840ece7ed221990a8e683293408b81a4cfd1 (diff)
downloadcoreboot-361cd8153d3426f2ba4f65ccb396e8e20e738068.tar.xz
console: Squelch console output from AP CPUs in romstage
Add Kconfig option SQUELCH_EARLY_SMP and have it enabled by default. Console drivers have unpredictable results if multiple threads attempt to share same resources without spinlock. Serial UARTs have not had huge problems, only distorted output, but those relying on cache-as-ram (CBMEM and usbdebug) may require this. Change-Id: I7f406fdea7b6dc6a341c4da2fab56f7b7ff568b4 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/3854 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Aaron Durbin <adurbin@google.com>
-rw-r--r--src/arch/x86/lib/romstage_console.c9
-rw-r--r--src/console/Kconfig12
2 files changed, 20 insertions, 1 deletions
diff --git a/src/arch/x86/lib/romstage_console.c b/src/arch/x86/lib/romstage_console.c
index 2e743adc17..1c3141ccb8 100644
--- a/src/arch/x86/lib/romstage_console.c
+++ b/src/arch/x86/lib/romstage_console.c
@@ -31,7 +31,9 @@
#if CONFIG_SPKMODEM
#include <console/spkmodem.h>
#endif
-
+#if CONFIG_SQUELCH_EARLY_SMP
+#include <cpu/x86/lapic.h>
+#endif
void console_tx_byte(unsigned char byte)
{
@@ -86,6 +88,11 @@ int do_printk(int msg_level, const char *fmt, ...)
return 0;
}
+#if CONFIG_SQUELCH_EARLY_SMP
+ if (!boot_cpu())
+ return 0;
+#endif
+
va_start(args, fmt);
i = vtxprintf(console_tx_byte, fmt, args);
va_end(args);
diff --git a/src/console/Kconfig b/src/console/Kconfig
index 1d050f7113..c5e5f28449 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -14,6 +14,18 @@ config EARLY_CONSOLE
help
Use console during early (pre-RAM) boot stages
+config SQUELCH_EARLY_SMP
+ bool "Squelch AP CPUs from early console."
+ default y
+ depends on EARLY_CONSOLE
+ help
+ When selected only the BSP CPU will output to early console.
+
+ Console drivers have unpredictable behaviour if multiple threads
+ attempt to share the same resources without a spinlock.
+
+ If unsure, say Y.
+
config CONSOLE_SERIAL
bool "Serial port console output"
default y