From: Philipp Tomsich Date: Mon, 11 Sep 2017 20:04:11 +0000 (+0200) Subject: dm: timer: handle being called before dm_root is ready X-Git-Tag: v2017.11-rc1~87^2~31 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=af823151641b1a9a8eae8c3b111f5fa27e6873ac;p=oweals%2Fu-boot.git dm: timer: handle being called before dm_root is ready When used with bootstage recording, dm_timer_init may be called surprisingly early: i.e. before dm_root is ready. To deal with this case, we explicitly check for this condition and return -EAGAIN to the caller (refer to drivers/timer/rockchip_timer.c for a case where this is needed/used). Signed-off-by: Philipp Tomsich Reviewed-by: Simon Glass Acked-by: Philipp Tomsich --- diff --git a/drivers/timer/timer-uclass.c b/drivers/timer/timer-uclass.c index 62d6f0b29a..45397b230f 100644 --- a/drivers/timer/timer-uclass.c +++ b/drivers/timer/timer-uclass.c @@ -92,6 +92,13 @@ int notrace dm_timer_init(void) if (gd->timer) return 0; + /* + * Directly access gd->dm_root to suppress error messages, if the + * virtual root driver does not yet exist. + */ + if (gd->dm_root == NULL) + return -EAGAIN; + #if !CONFIG_IS_ENABLED(OF_PLATDATA) /* Check for a chosen timer to be used for tick */ node = ofnode_get_chosen_node("tick-timer");