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:
parent
42bcd13c75
commit
4003950881
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue