[U-Boot] [PATCH v2 1/3] board_r: move initr_watchdog to be called after initr_serial

Tom Rini trini at konsulko.com
Mon Jul 8 01:15:48 UTC 2019


On Thu, May 16, 2019 at 05:19:13PM +0800, Weijie Gao wrote:

> The initr_watchdog is currently placed before initr_serial. The
> initr_watchdog calls printf and printf finally calls ops->putc of a serial
> driver.
> 
> However, gd->cur_serial_dev points to a udevice allocated in board_f. The
> gd->cur_serial_dev->driver->ops->putc points the the code region before
> relocation.
> 
> Some serial drivers call WATCHDOG_RESET() in ops->putc. When DM is enabled
> for watchdog, watchdog_reset() is called. watchdog_reset() calls get_timer
> to get current timer.
> 
> On some platforms the timer driver is also a DM driver. initr_watchdog is
> placed right after initr_dm, which means the timer driver hasn't been
> initialized. So dm_timer_init() is called. To create a new udevice, calloc
> is called.
> 
> However start from ops->putc, u-boot execution flow is redirected into the
> memory region before relocation (board_f). In board_f, dlmalloc hasn't
> been initialized. The call to calloc will fail, and this will cause DM to
> print out an error message, and it will call printf again, causing
> recursive error outputs.
> 
> This patch places initr_watchdog after initr_serial to solve this issue.
> 
> Cc: Stefan Roese <sr at denx.de>
> Reviewed-by: Ryder Lee <ryder.lee at mediatek.com>
> Signed-off-by: Weijie Gao <weijie.gao at mediatek.com>
> Reviewed-by: Stefan Roese <sr at denx.de>
> Tested-by: Frank Wunderlich <frank-w at public-files.de>
> Tested-by: Suniel Mahesh <sunil.m at techveda.org>

Applied to u-boot/master, thanks!

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190707/e9beaa2b/attachment.sig>


More information about the U-Boot mailing list