summaryrefslogtreecommitdiff
path: root/common/board_f.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/board_f.c')
-rw-r--r--common/board_f.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/common/board_f.c b/common/board_f.c
index faa096479b3..7c26e235fc0 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -839,7 +839,6 @@ static const init_fnc_t init_sequence_f[] = {
initf_malloc,
log_init,
initf_bootstage, /* uses its own timer, so does not need DM */
- cyclic_init,
event_init,
#ifdef CONFIG_BLOBLIST
bloblist_init,
@@ -957,6 +956,16 @@ static const init_fnc_t init_sequence_f[] = {
do_elf_reloc_fixups,
#endif
clear_bss,
+ /*
+ * Deregister all cyclic functions before relocation, so that
+ * gd->cyclic_list does not contain any references to pre-relocation
+ * devices. Drivers will register their cyclic functions anew when the
+ * devices are probed again.
+ *
+ * This should happen as late as possible so that the window where a
+ * watchdog device is not serviced is as small as possible.
+ */
+ cyclic_unregister_all,
#if !defined(CONFIG_ARM) && !defined(CONFIG_SANDBOX) && \
!CONFIG_IS_ENABLED(X86_64)
jump_to_copy,