arm: Move bootstage record for board_init_f() to after arch_cpu_init()
The timer may be inited in arch_cpu_init() so it is not safe to make a
bootstage mark before this is called. Arrange the code to fix this.
Note: The question was raised as to why we don't keep all archs in sync.
PowerPC doesn't have specific bootstage markers at present (although it
does use boot progress). I hope that the generic board series will solve
this problem in general, but in the meantime this is a real problem, and
only in ARM.
We now get a correct time for board_init_f:
Timer summary in microseconds:
Mark Elapsed Stage
0 0 reset
100,000 100,000 spl_start
848,530 748,530 board_init_f
907,301 58,771 board_init_r
910,478 3,177 board_init
Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
fe34f8dc8c
commit
2f8d8d6b3a
|
|
@ -232,8 +232,17 @@ int __power_init_board(void)
|
||||||
int power_init_board(void)
|
int power_init_board(void)
|
||||||
__attribute__((weak, alias("__power_init_board")));
|
__attribute__((weak, alias("__power_init_board")));
|
||||||
|
|
||||||
|
/* Record the board_init_f() bootstage (after arch_cpu_init()) */
|
||||||
|
static int mark_bootstage(void)
|
||||||
|
{
|
||||||
|
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_F, "board_init_f");
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
init_fnc_t *init_sequence[] = {
|
init_fnc_t *init_sequence[] = {
|
||||||
arch_cpu_init, /* basic arch cpu dependent setup */
|
arch_cpu_init, /* basic arch cpu dependent setup */
|
||||||
|
mark_bootstage,
|
||||||
#ifdef CONFIG_OF_CONTROL
|
#ifdef CONFIG_OF_CONTROL
|
||||||
fdtdec_check_fdt,
|
fdtdec_check_fdt,
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -277,8 +286,6 @@ void board_init_f(ulong bootflag)
|
||||||
void *new_fdt = NULL;
|
void *new_fdt = NULL;
|
||||||
size_t fdt_size = 0;
|
size_t fdt_size = 0;
|
||||||
|
|
||||||
bootstage_mark_name(BOOTSTAGE_ID_START_UBOOT_F, "board_init_f");
|
|
||||||
|
|
||||||
memset((void *)gd, 0, sizeof(gd_t));
|
memset((void *)gd, 0, sizeof(gd_t));
|
||||||
|
|
||||||
gd->mon_len = _bss_end_ofs;
|
gd->mon_len = _bss_end_ofs;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue