
On Tue, Oct 9, 2018 at 5:41 AM Simon Glass sjg@chromium.org wrote:
Hi,
On 7 October 2018 at 11:52, Simon Goldschmidt simon.k.r.goldschmidt@gmail.com wrote:
At least on socfpga gen5, _debug_uart_putc() can be called before debug_uart_init(), which leaves us stuck in an infinite loop in the ns16550 debug uart driver.
Can you fix that? That is a bug.
I already posted a patch for that but it was rejected: http://patchwork.ozlabs.org/patch/955765/
As patman automatically choses the CC addresses, you weren't on the CC list back then, since that patch covered different filfes.
Simon
Since this prevents debugging startup problems instead of helping, let's add a field to 'gd' that prevents calling the _debug_uart_putc() until debug_uart_init() has been called.
Signed-off-by: Simon Goldschmidt simon.k.r.goldschmidt@gmail.com
include/asm-generic/global_data.h | 3 +++ include/debug_uart.h | 19 ++++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-)
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index c83fc01b76..9de7f48476 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -122,6 +122,9 @@ typedef struct global_data { struct list_head log_head; /* List of struct log_device */ int log_fmt; /* Mask containing log format info */ #endif +#ifdef CONFIG_DEBUG_UART
int debug_uart_initialized; /* No print before debug_uart_init */
+#endif
There is no requirement that gd be set up before the debug UART is running. It certainly isn't on the few platforms I know about.
Regards, Simon