log: Plumb logging into the init sequence
authorSimon Glass <sjg@chromium.org>
Mon, 4 Dec 2017 20:48:28 +0000 (13:48 -0700)
committerTom Rini <trini@konsulko.com>
Thu, 7 Dec 2017 20:17:00 +0000 (15:17 -0500)
Set up logging both before and after relocation.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
common/board_f.c
common/board_r.c
common/log.c
include/asm-generic/global_data.h

index 1e8bf63ec105140c500eca363adebdbda6d7ff1d..e46eceda7d0f24ee8261eec2febde7e4c2d65b96 100644 (file)
@@ -751,6 +751,7 @@ static const init_fnc_t init_sequence_f[] = {
        trace_early_init,
 #endif
        initf_malloc,
+       log_init,
        initf_bootstage,        /* uses its own timer, so does not need DM */
        initf_console_record,
 #if defined(CONFIG_HAVE_FSP)
@@ -932,8 +933,10 @@ void board_init_f_r(void)
         * The pre-relocation drivers may be using memory that has now gone
         * away. Mark serial as unavailable - this will fall back to the debug
         * UART if available.
+        *
+        * Do the same with log drivers since the memory may not be available.
         */
-       gd->flags &= ~GD_FLG_SERIAL_READY;
+       gd->flags &= ~(GD_FLG_SERIAL_READY | GD_FLG_LOG_READY);
 #ifdef CONFIG_TIMER
        gd->timer = NULL;
 #endif
index 89729d77360d50bdee20dc9f20e79bff20e3534d..09167c13cc88c987bb122c2212313f82d0c9245e 100644 (file)
@@ -691,6 +691,7 @@ static init_fnc_t init_sequence_r[] = {
 #endif
        initr_barrier,
        initr_malloc,
+       log_init,
        initr_bootstage,        /* Needs malloc() but has its own timer */
        initr_console_record,
 #ifdef CONFIG_SYS_NONCACHED_MEMORY
@@ -884,6 +885,7 @@ void board_init_r(gd_t *new_gd, ulong dest_addr)
 #if !defined(CONFIG_X86) && !defined(CONFIG_ARM) && !defined(CONFIG_ARM64)
        gd = new_gd;
 #endif
+       gd->flags &= ~GD_FLG_LOG_READY;
 
 #ifdef CONFIG_NEEDS_MANUAL_RELOC
        for (i = 0; i < ARRAY_SIZE(init_sequence_r); i++)
index 8f36c79c268a24aa1bb0488162b94d0f756d8c8f..45e46dd5209118fcffd0333c3a91bdbeb78bee6a 100644 (file)
@@ -238,6 +238,7 @@ int log_init(void)
                              (struct list_head *)&gd->log_head);
                drv++;
        }
+       gd->flags |= GD_FLG_LOG_READY;
        gd->default_log_level = LOGL_INFO;
 
        return 0;
index 77755dbb06889179118b7f5093705c6eafa70933..73e036d6fd4ac32c128143f74dd853d7c6f7bdd5 100644 (file)
@@ -146,5 +146,6 @@ typedef struct global_data {
 #define GD_FLG_RECORD          0x01000 /* Record console                  */
 #define GD_FLG_ENV_DEFAULT     0x02000 /* Default variable flag           */
 #define GD_FLG_SPL_EARLY_INIT  0x04000 /* Early SPL init is done          */
+#define GD_FLG_LOG_READY       0x08000 /* Log system is ready for use     */
 
 #endif /* __ASM_GENERIC_GBL_DATA_H */