[U-Boot] [PATCH 1/2] x86: baytrail: Fix boot hang with a debug build

It was observed that when -DDEBUG is used to generate a debug build, U-Boot does not boot on MinnowMax board. A workaround is to disable CONFIG_DEBUG_UART. The real issue is that in order to have the debug uart to work, BayTrail SoC needs to be configured so that its internal uart is available to be used as the debug uart.
Signed-off-by: Bin Meng bmeng.cn@gmail.com ---
arch/x86/cpu/baytrail/Kconfig | 4 ++++ arch/x86/cpu/baytrail/early_uart.c | 5 +++++ 2 files changed, 9 insertions(+)
diff --git a/arch/x86/cpu/baytrail/Kconfig b/arch/x86/cpu/baytrail/Kconfig index 1c8ac37..6c85186 100644 --- a/arch/x86/cpu/baytrail/Kconfig +++ b/arch/x86/cpu/baytrail/Kconfig @@ -17,4 +17,8 @@ config INTERNAL_UART reason, it is recommended that the UART port be used for debug purposes only, eg: U-Boot console.
+config DEBUG_UART + bool + select DEBUG_UART_BOARD_INIT + endif diff --git a/arch/x86/cpu/baytrail/early_uart.c b/arch/x86/cpu/baytrail/early_uart.c index 471d592..afab21f 100644 --- a/arch/x86/cpu/baytrail/early_uart.c +++ b/arch/x86/cpu/baytrail/early_uart.c @@ -80,3 +80,8 @@ int setup_internal_uart(int enable)
return 0; } + +void board_debug_uart_init(void) +{ + setup_internal_uart(1); +}

First of all, it's inappropriate to call setup_internal_uart() in a generic API fsp_init(), as CONFIG_INTERNAL_UART is an option that is only available on BayTrail platform. Secondly even for BayTrail, there is no need to call setup_internal_uart() at all, as Intel FSP will do this for us.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
---
arch/x86/lib/fsp/fsp_support.c | 4 ---- 1 file changed, 4 deletions(-)
diff --git a/arch/x86/lib/fsp/fsp_support.c b/arch/x86/lib/fsp/fsp_support.c index a480361..ab8340c 100644 --- a/arch/x86/lib/fsp/fsp_support.c +++ b/arch/x86/lib/fsp/fsp_support.c @@ -110,10 +110,6 @@ void fsp_init(u32 stack_top, u32 boot_mode, void *nvs_buf) struct upd_region *fsp_upd; #endif
-#ifdef CONFIG_INTERNAL_UART - setup_internal_uart(1); -#endif - fsp_hdr = find_fsp_header(); if (fsp_hdr == NULL) { /* No valid FSP info header was found */

On 01.06.2017 12:41, Bin Meng wrote:
First of all, it's inappropriate to call setup_internal_uart() in a generic API fsp_init(), as CONFIG_INTERNAL_UART is an option that is only available on BayTrail platform. Secondly even for BayTrail, there is no need to call setup_internal_uart() at all, as Intel FSP will do this for us.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan

On 1 June 2017 at 04:41, Bin Meng bmeng.cn@gmail.com wrote:
First of all, it's inappropriate to call setup_internal_uart() in a generic API fsp_init(), as CONFIG_INTERNAL_UART is an option that is only available on BayTrail platform. Secondly even for BayTrail, there is no need to call setup_internal_uart() at all, as Intel FSP will do this for us.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
arch/x86/lib/fsp/fsp_support.c | 4 ---- 1 file changed, 4 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org

On Fri, Jun 2, 2017 at 10:56 AM, Simon Glass sjg@chromium.org wrote:
On 1 June 2017 at 04:41, Bin Meng bmeng.cn@gmail.com wrote:
First of all, it's inappropriate to call setup_internal_uart() in a generic API fsp_init(), as CONFIG_INTERNAL_UART is an option that is only available on BayTrail platform. Secondly even for BayTrail, there is no need to call setup_internal_uart() at all, as Intel FSP will do this for us.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
arch/x86/lib/fsp/fsp_support.c | 4 ---- 1 file changed, 4 deletions(-)
Reviewed-by: Simon Glass sjg@chromium.org
applied to u-boot-x86, thanks!

On 01.06.2017 12:41, Bin Meng wrote:
It was observed that when -DDEBUG is used to generate a debug build, U-Boot does not boot on MinnowMax board. A workaround is to disable CONFIG_DEBUG_UART. The real issue is that in order to have the debug uart to work, BayTrail SoC needs to be configured so that its internal uart is available to be used as the debug uart.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
Reviewed-by: Stefan Roese sr@denx.de
Thanks, Stefan

On 1 June 2017 at 04:41, Bin Meng bmeng.cn@gmail.com wrote:
It was observed that when -DDEBUG is used to generate a debug build, U-Boot does not boot on MinnowMax board. A workaround is to disable CONFIG_DEBUG_UART. The real issue is that in order to have the debug uart to work, BayTrail SoC needs to be configured so that its internal uart is available to be used as the debug uart.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
arch/x86/cpu/baytrail/Kconfig | 4 ++++ arch/x86/cpu/baytrail/early_uart.c | 5 +++++ 2 files changed, 9 insertions(+)
Great!
Reviewed-by: Simon Glass sjg@chromium.org

On Fri, Jun 2, 2017 at 10:55 AM, Simon Glass sjg@chromium.org wrote:
On 1 June 2017 at 04:41, Bin Meng bmeng.cn@gmail.com wrote:
It was observed that when -DDEBUG is used to generate a debug build, U-Boot does not boot on MinnowMax board. A workaround is to disable CONFIG_DEBUG_UART. The real issue is that in order to have the debug uart to work, BayTrail SoC needs to be configured so that its internal uart is available to be used as the debug uart.
Signed-off-by: Bin Meng bmeng.cn@gmail.com
arch/x86/cpu/baytrail/Kconfig | 4 ++++ arch/x86/cpu/baytrail/early_uart.c | 5 +++++ 2 files changed, 9 insertions(+)
Great!
Reviewed-by: Simon Glass sjg@chromium.org
applied to u-boot-x86, thanks!
participants (3)
-
Bin Meng
-
Simon Glass
-
Stefan Roese