
Reset the serial flags so that the debug UART can be used (if enabled) in the small window where there is no serial device. This can avoid a hang in some cases.
Signed-off-by: Simon Glass sjg@chromium.org ---
common/board_r.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/common/board_r.c b/common/board_r.c index 3618acad437..5f3c3db476d 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -796,6 +796,15 @@ static init_fnc_t init_sequence_r[] = {
void board_init_r(gd_t *new_gd, ulong dest_addr) { + /* + * 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_FLG_LOG_READY); + /* * Set up the new global data pointer. So far only x86 does this * here.