lib: Add Kconfig to toggle boot state debugging

Add the DEBUG_BOOT_STATE Kconfig value to enable boot state debugging.
Update include/bootstate.h and lib/hardwaremain.c to honor this value.
Add a dashed line which displays between the states.

Testing on Galileo:
* select DEBUG_BOOT_STATE in mainboard/intel/galileo/Kconfig
* Build and run on Galileo

Change-Id: I6e8a0085aa33c8a1394f31c030e67ab3d5bf7299
Signed-off-by: Lee Leahy <leroy.p.leahy@intel.com>
Reviewed-on: https://review.coreboot.org/13716
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Lee Leahy 2016-02-14 17:01:40 -08:00 committed by Leroy P Leahy
parent b43efa694e
commit 106053537c
3 changed files with 22 additions and 17 deletions

View File

@ -1149,3 +1149,10 @@ config CBFS_SIZE
This is the part of the ROM actually managed by CBFS. Set it to be This is the part of the ROM actually managed by CBFS. Set it to be
equal to the full rom size if that hasn't been overridden by the equal to the full rom size if that hasn't been overridden by the
chipset or mainboard. chipset or mainboard.
config DEBUG_BOOT_STATE
bool
default n
help
Control debugging of the boot state machine. When selected displays
the state boundaries in ramstage.

View File

@ -25,9 +25,6 @@
#include <main_decl.h> #include <main_decl.h>
#endif #endif
/* Control debugging of the boot state machine. */
#define BOOT_STATE_DEBUG 0
/* /*
* The boot state machine provides a mechanism for calls to be made through- * The boot state machine provides a mechanism for calls to be made through-
* out the main boot process. The boot process is separated into discrete * out the main boot process. The boot process is separated into discrete
@ -119,12 +116,12 @@ struct boot_state_callback {
void (*callback)(void *arg); void (*callback)(void *arg);
/* For use internal to the boot state machine. */ /* For use internal to the boot state machine. */
struct boot_state_callback *next; struct boot_state_callback *next;
#if BOOT_STATE_DEBUG #if IS_ENABLED(CONFIG_DEBUG_BOOT_STATE)
const char *location; const char *location;
#endif #endif
}; };
#if BOOT_STATE_DEBUG #if IS_ENABLED(CONFIG_DEBUG_BOOT_STATE)
#define BOOT_STATE_CALLBACK_LOC __FILE__ ":" STRINGIFY(__LINE__) #define BOOT_STATE_CALLBACK_LOC __FILE__ ":" STRINGIFY(__LINE__)
#define BOOT_STATE_CALLBACK_INIT_DEBUG .location = BOOT_STATE_CALLBACK_LOC, #define BOOT_STATE_CALLBACK_INIT_DEBUG .location = BOOT_STATE_CALLBACK_LOC,
#define INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_) \ #define INIT_BOOT_STATE_CALLBACK_DEBUG(bscb_) \

View File

@ -39,12 +39,6 @@
#include <timestamp.h> #include <timestamp.h>
#include <thread.h> #include <thread.h>
#if BOOT_STATE_DEBUG
#define BS_DEBUG_LVL BIOS_DEBUG
#else
#define BS_DEBUG_LVL BIOS_NEVER
#endif
static boot_state_t bs_pre_device(void *arg); static boot_state_t bs_pre_device(void *arg);
static boot_state_t bs_dev_init_chips(void *arg); static boot_state_t bs_dev_init_chips(void *arg);
static boot_state_t bs_dev_enumerate(void *arg); static boot_state_t bs_dev_enumerate(void *arg);
@ -296,12 +290,11 @@ static void bs_call_callbacks(struct boot_state *state,
phase->callbacks = bscb->next; phase->callbacks = bscb->next;
bscb->next = NULL; bscb->next = NULL;
#if BOOT_STATE_DEBUG #if IS_ENABLED(CONFIG_DEBUG_BOOT_STATE)
printk(BS_DEBUG_LVL, "BS: callback (%p) @ %s.\n", printk(BIOS_DEBUG, "BS: callback (%p) @ %s.\n",
bscb, bscb->location); bscb, bscb->location);
#endif #endif
bscb->callback(bscb->arg); bscb->callback(bscb->arg);
continue; continue;
} }
@ -341,7 +334,9 @@ static void bs_walk_state_machine(void)
break; break;
} }
printk(BS_DEBUG_LVL, "BS: Entering %s state.\n", state->name); if (IS_ENABLED(CONFIG_DEBUG_BOOT_STATE))
printk(BIOS_DEBUG, "BS: Entering %s state.\n",
state->name);
bs_run_timers(0); bs_run_timers(0);
@ -359,12 +354,18 @@ static void bs_walk_state_machine(void)
next_id = state->run_state(state->arg); next_id = state->run_state(state->arg);
printk(BS_DEBUG_LVL, "BS: Exiting %s state.\n", state->name); if (IS_ENABLED(CONFIG_DEBUG_BOOT_STATE))
printk(BIOS_DEBUG, "BS: Exiting %s state.\n",
state->name);
bs_sample_time(state); bs_sample_time(state);
bs_call_callbacks(state, current_phase.seq); bs_call_callbacks(state, current_phase.seq);
if (IS_ENABLED(CONFIG_DEBUG_BOOT_STATE))
printk(BIOS_DEBUG,
"----------------------------------------\n");
/* Update the current phase with new state id and sequence. */ /* Update the current phase with new state id and sequence. */
current_phase.state_id = next_id; current_phase.state_id = next_id;
current_phase.seq = BS_ON_ENTRY; current_phase.seq = BS_ON_ENTRY;