diff mbox series

[U-Boot,v3,11/14] log: Plumb logging into the init sequence

Message ID 20171120223335.45852-12-sjg@chromium.org
State Changes Requested
Delegated to: Tom Rini
Headers show
Series log: Add a new logging feature | expand

Commit Message

Simon Glass Nov. 20, 2017, 10:33 p.m. UTC
Set up logging both before and after relocation.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
---

Changes in v3: None
Changes in v2: None

 common/board_f.c                  | 5 ++++-
 common/board_r.c                  | 2 ++
 common/log.c                      | 1 +
 include/asm-generic/global_data.h | 1 +
 4 files changed, 8 insertions(+), 1 deletion(-)

Comments

Lukasz Majewski Nov. 21, 2017, 10:01 a.m. UTC | #1
On Mon, 20 Nov 2017 15:33:32 -0700
Simon Glass <sjg@chromium.org> wrote:

> Set up logging both before and after relocation.
> 

Reviewed-by: Lukasz Majewski <lukma@denx.de>

> Signed-off-by: Simon Glass <sjg@chromium.org>
> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
> ---
> 
> Changes in v3: None
> Changes in v2: None
> 
>  common/board_f.c                  | 5 ++++-
>  common/board_r.c                  | 2 ++
>  common/log.c                      | 1 +
>  include/asm-generic/global_data.h | 1 +
>  4 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/common/board_f.c b/common/board_f.c
> index 1e8bf63ec10..e46eceda7d0 100644
> --- a/common/board_f.c
> +++ b/common/board_f.c
> @@ -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
> diff --git a/common/board_r.c b/common/board_r.c
> index 89729d77360..09167c13cc8 100644
> --- a/common/board_r.c
> +++ b/common/board_r.c
> @@ -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++)
> diff --git a/common/log.c b/common/log.c
> index a7d9a548f2a..c94a3c17592 100644
> --- a/common/log.c
> +++ b/common/log.c
> @@ -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;
> diff --git a/include/asm-generic/global_data.h
> b/include/asm-generic/global_data.h index 77755dbb068..73e036d6fd4
> 100644 --- a/include/asm-generic/global_data.h
> +++ b/include/asm-generic/global_data.h
> @@ -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 */



Best regards,

Lukasz Majewski

--

DENX Software Engineering GmbH,      Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
diff mbox series

Patch

diff --git a/common/board_f.c b/common/board_f.c
index 1e8bf63ec10..e46eceda7d0 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -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
diff --git a/common/board_r.c b/common/board_r.c
index 89729d77360..09167c13cc8 100644
--- a/common/board_r.c
+++ b/common/board_r.c
@@ -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++)
diff --git a/common/log.c b/common/log.c
index a7d9a548f2a..c94a3c17592 100644
--- a/common/log.c
+++ b/common/log.c
@@ -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;
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h
index 77755dbb068..73e036d6fd4 100644
--- a/include/asm-generic/global_data.h
+++ b/include/asm-generic/global_data.h
@@ -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 */