console: rework log level to not be reliant on ROMSTAGE_CONST

The console log level variable doesn't really rely on ROMSTAGE_CONST
proper. Instead, the mutability of the variable is based on the current
implementation of ROMSTAGE_CONST (__PRE_RAM__). As such directly
use that logic for the code. In addition, refactor the code to let
the compiler and linker optimize out accesses instead of using
the pre-processor.

Change-Id: I44bcc409266ef52b9be29f75efde73a6707a53f4
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/19438
Tested-by: build bot (Jenkins)
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com>
Reviewed-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
This commit is contained in:
Aaron Durbin 2017-04-24 16:03:57 -05:00
parent 42bcd13c75
commit 4003950881
1 changed files with 35 additions and 7 deletions

View File

@ -22,20 +22,48 @@
#include <rules.h> #include <rules.h>
#include <version.h> #include <version.h>
/* While in romstage, console loglevel is built-time constant. */ /* Mutable console log level only allowed when RAM comes online. */
static ROMSTAGE_CONST int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL; #if defined(__PRE_RAM__)
#define CONSOLE_LEVEL_CONST 1
#else
#define CONSOLE_LEVEL_CONST 0
#endif
static int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
static inline int get_log_level(void)
{
if (CONSOLE_LEVEL_CONST)
return CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
return console_loglevel;
}
static inline void set_log_level(int new_level)
{
if (CONSOLE_LEVEL_CONST)
return;
console_loglevel = new_level;
}
static void init_log_level(void)
{
int debug_level = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
get_option(&debug_level, "debug_level");
set_log_level(debug_level);
}
int console_log_level(int msg_level) int console_log_level(int msg_level)
{ {
return (console_loglevel >= msg_level); return (get_log_level() >= msg_level);
} }
asmlinkage void console_init(void) asmlinkage void console_init(void)
{ {
#if !defined(__PRE_RAM__) init_log_level();
console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
get_option(&console_loglevel, "debug_level");
#endif
#if CONFIG_EARLY_PCI_BRIDGE && !defined(__SMM__) #if CONFIG_EARLY_PCI_BRIDGE && !defined(__SMM__)
pci_early_bridge_init(); pci_early_bridge_init();