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:
parent
b43efa694e
commit
106053537c
|
@ -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.
|
||||||
|
|
|
@ -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_) \
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in New Issue