common/board_r: Move blkcache_init call earlier in the boot sequence

blkcache_init manually relocates blkcache list pointers when
CONFIG_NEEDS_MANUAL_RELOC is enabled. However, it is called very late in
the boot sequence, which could be a problem if previous boot calls execute
blkcache operations with the non-relocated pointers. For example, mmc is
initialized earlier and might call blkcache_invalidate (in
mmc_select_hwpart()) when trying to load the environment from mmc via
env_load().

To fix this issue, move blkcache_init boot call earlier, before mmc gets
initialized.

Acked-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Tested-by: Angelo Dureghello <angelo.dureghello@timesys.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Signed-off-by: Ovidiu Panait <ovidiu.panait@windriver.com>
This commit is contained in:
Ovidiu Panait 2020-07-24 14:12:25 +03:00 committed by Tom Rini
parent 365af27f0d
commit 276b6c943a

View file

@ -714,6 +714,9 @@ static init_fnc_t init_sequence_r[] = {
initr_watchdog, initr_watchdog,
#endif #endif
INIT_FUNC_WATCHDOG_RESET INIT_FUNC_WATCHDOG_RESET
#if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE)
blkcache_init,
#endif
#ifdef CONFIG_NEEDS_MANUAL_RELOC #ifdef CONFIG_NEEDS_MANUAL_RELOC
initr_manual_reloc_cmdtable, initr_manual_reloc_cmdtable,
#endif #endif
@ -847,9 +850,6 @@ static init_fnc_t init_sequence_r[] = {
#endif #endif
#if defined(CONFIG_PRAM) #if defined(CONFIG_PRAM)
initr_mem, initr_mem,
#endif
#if defined(CONFIG_NEEDS_MANUAL_RELOC) && defined(CONFIG_BLOCK_CACHE)
blkcache_init,
#endif #endif
run_main_loop, run_main_loop,
}; };