[U-Boot] question about bootstage and timer_init in init_sequence_f

Patrick Delaunay patrick.delaunay73 at gmail.com
Fri Sep 9 18:27:19 CEST 2016


Hi,

I am trying to activate bootstage on ARMV7 architecture.
My platform use the generic armv7 timer defined in file
./arch/arm/cpu/armv7m/timer.c:

For me the get_timer function should not used before timer_init (which
initialize gd->arch.timer_rate_hz) at least for the ARMV7 timer.

But in the init sequence, the bootstage is called before timer_init and
this function use the timer function.

For me it is a error in the init sequence : mark_bootstage is called before
timer_init.

static init_fnc_t init_sequence_f[] = {
#ifdef CONFIG_SANDBOX
    setup_ram_buf,
#endif
    setup_mon_len,
#ifdef CONFIG_OF_CONTROL
    fdtdec_setup,
#endif
#ifdef CONFIG_TRACE
    trace_early_init,
#endif
    initf_malloc,
    initf_console_record,
#if defined(CONFIG_MPC85xx) || defined(CONFIG_MPC86xx)
    /* TODO: can this go into arch_cpu_init()? */
    probecpu,
#endif
#if defined(CONFIG_X86) && defined(CONFIG_HAVE_FSP)
    x86_fsp_init,
#endif
    arch_cpu_init,        /* basic arch cpu dependent setup */
    initf_dm,
    arch_cpu_init_dm,
*    mark_bootstage,        /* need timer, go after init dm */*
#if defined(CONFIG_BOARD_EARLY_INIT_F)
    board_early_init_f,
#endif
    /* TODO: can any of this go into arch_cpu_init()? */
#if defined(CONFIG_PPC) && !defined(CONFIG_8xx_CPUCLK_DEFAULT)
    get_clocks,        /* get CPU and bus clocks (etc.) */
#if defined(CONFIG_TQM8xxL) && !defined(CONFIG_TQM866M) \
        && !defined(CONFIG_TQM885D)
    adjust_sdram_tbs_8xx,
#endif
    /* TODO: can we rename this to timer_init()? */
    init_timebase,
#endif
#if defined(CONFIG_ARM) || defined(CONFIG_MIPS) || \
        defined(CONFIG_BLACKFIN) || defined(CONFIG_NDS32) || \
        defined(CONFIG_SPARC)
 *   timer_init,        /* initialize timer */*
#endif
.......

I want to propose a patch to move timer_init call just before mark_bootstage

It should be ok for ARMV7 but I don't sure for other platform impacted
- the other ARM platform or ARMV7 wich don't use generic timer
- MIPS BLACKFIN NDS32 or SPARC

and I don't sure of impact for other function called (board_early_init_f
for example)

can I propose my patch ? for all the platfrom or only for ARM ?
or
I need to move mark_bootstage after timer_init ?

PS: I can also solve the issue in timer armv7 but with less generic patch
if my proposal is too dangerous

Best regards

Patrick


More information about the U-Boot mailing list