On 05.05.23 00:50, Simon Glass wrote: > The original function was only called once, before relocation. The new > one is called again after relocation. This was not the intent of the > original call. Fix this by renaming and updating the calling logic. > > With this, chromebook_link64 makes it through SPL. > > Fixes: 7fe32b3442f ("event: Convert arch_cpu_init_dm() to") > Fixes: 7fe32b3442f0 ("event: Convert arch_cpu_init_dm() to use events") > Reviewed-by: Bin Meng <bmeng...@gmail.com> > > Signed-off-by: Simon Glass <s...@chromium.org> > --- > > Changes in v3: > - Fix 'intend' typo > > arch/arm/mach-imx/imx8/cpu.c | 2 +- > arch/arm/mach-imx/imx8m/soc.c | 2 +- > arch/arm/mach-imx/imx8ulp/soc.c | 2 +- > arch/arm/mach-imx/imx9/soc.c | 2 +- > arch/arm/mach-omap2/am33xx/board.c | 2 +- > arch/arm/mach-omap2/hwinit-common.c | 2 +- > arch/mips/mach-pic32/cpu.c | 2 +- > arch/nios2/cpu/cpu.c | 2 +- > arch/riscv/cpu/cpu.c | 2 +- > arch/x86/cpu/baytrail/cpu.c | 2 +- > arch/x86/cpu/broadwell/cpu.c | 2 +- > arch/x86/cpu/ivybridge/cpu.c | 2 +- > arch/x86/cpu/quark/quark.c | 2 +- > arch/x86/lib/fsp2/fsp_init.c | 2 +- > doc/develop/event.rst | 6 +++--- > drivers/core/root.c | 4 ++-- > drivers/cpu/microblaze_cpu.c | 2 +- > include/event.h | 2 +- > 18 files changed, 21 insertions(+), 21 deletions(-) > > diff --git a/arch/arm/mach-imx/imx8/cpu.c b/arch/arm/mach-imx/imx8/cpu.c > index be1f4edded1..99772f68c32 100644 > --- a/arch/arm/mach-imx/imx8/cpu.c > +++ b/arch/arm/mach-imx/imx8/cpu.c > @@ -89,7 +89,7 @@ static int imx8_init_mu(void *ctx, struct event *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, imx8_init_mu); > +EVENT_SPY(EVT_DM_POST_INIT_F, imx8_init_mu); > > #if defined(CONFIG_ARCH_MISC_INIT) > int arch_misc_init(void) > diff --git a/arch/arm/mach-imx/imx8m/soc.c b/arch/arm/mach-imx/imx8m/soc.c > index 4705e6c1192..5a4f8358c9f 100644 > --- a/arch/arm/mach-imx/imx8m/soc.c > +++ b/arch/arm/mach-imx/imx8m/soc.c > @@ -549,7 +549,7 @@ static int imx8m_check_clock(void *ctx, struct event > *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, imx8m_check_clock); > +EVENT_SPY(EVT_DM_POST_INIT_F, imx8m_check_clock); > > static void imx8m_setup_snvs(void) > { > diff --git a/arch/arm/mach-imx/imx8ulp/soc.c b/arch/arm/mach-imx/imx8ulp/soc.c > index 8424332f429..81eae02b6a8 100644 > --- a/arch/arm/mach-imx/imx8ulp/soc.c > +++ b/arch/arm/mach-imx/imx8ulp/soc.c > @@ -808,7 +808,7 @@ static int imx8ulp_evt_dm_post_init(void *ctx, struct > event *event) > { > return imx8ulp_dm_post_init(); > } > -EVENT_SPY(EVT_DM_POST_INIT, imx8ulp_evt_dm_post_init); > +EVENT_SPY(EVT_DM_POST_INIT_F, imx8ulp_evt_dm_post_init); > > #if defined(CONFIG_SPL_BUILD) > __weak void __noreturn jump_to_image_no_args(struct spl_image_info > *spl_image) > diff --git a/arch/arm/mach-imx/imx9/soc.c b/arch/arm/mach-imx/imx9/soc.c > index a16e22ea6bb..252663a9eec 100644 > --- a/arch/arm/mach-imx/imx9/soc.c > +++ b/arch/arm/mach-imx/imx9/soc.c > @@ -262,7 +262,7 @@ int imx9_probe_mu(void *ctx, struct event *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, imx9_probe_mu); > +EVENT_SPY(EVT_DM_POST_INIT_F, imx9_probe_mu); > > int timer_init(void) > { > diff --git a/arch/arm/mach-omap2/am33xx/board.c > b/arch/arm/mach-omap2/am33xx/board.c > index a52d04d85c8..ecc0a592e99 100644 > --- a/arch/arm/mach-omap2/am33xx/board.c > +++ b/arch/arm/mach-omap2/am33xx/board.c > @@ -535,4 +535,4 @@ static int am33xx_dm_post_init(void *ctx, struct event > *event) > #endif > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, am33xx_dm_post_init); > +EVENT_SPY(EVT_DM_POST_INIT_F, am33xx_dm_post_init); > diff --git a/arch/arm/mach-omap2/hwinit-common.c > b/arch/arm/mach-omap2/hwinit-common.c > index c4a8eabc3eb..771533394bc 100644 > --- a/arch/arm/mach-omap2/hwinit-common.c > +++ b/arch/arm/mach-omap2/hwinit-common.c > @@ -246,7 +246,7 @@ static int omap2_system_init(void *ctx, struct event > *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, omap2_system_init); > +EVENT_SPY(EVT_DM_POST_INIT_F, omap2_system_init); > > /* > * Routine: wait_for_command_complete > diff --git a/arch/mips/mach-pic32/cpu.c b/arch/mips/mach-pic32/cpu.c > index de449e3c6a2..ec3c2505313 100644 > --- a/arch/mips/mach-pic32/cpu.c > +++ b/arch/mips/mach-pic32/cpu.c > @@ -102,7 +102,7 @@ static int pic32_flash_prefetch(void *ctx, struct event > *event) > prefetch_init(); > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, pic32_flash_prefetch); > +EVENT_SPY(EVT_DM_POST_INIT_F, pic32_flash_prefetch); > > /* Un-gate DDR2 modules (gated by default) */ > static void ddr2_pmd_ungate(void) > diff --git a/arch/nios2/cpu/cpu.c b/arch/nios2/cpu/cpu.c > index 85544503a5e..da167f4b29e 100644 > --- a/arch/nios2/cpu/cpu.c > +++ b/arch/nios2/cpu/cpu.c > @@ -80,7 +80,7 @@ static int nios_cpu_setup(void *ctx, struct event *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, nios_cpu_setup); > +EVENT_SPY(EVT_DM_POST_INIT_F, nios_cpu_setup); > > static int altera_nios2_get_desc(const struct udevice *dev, char *buf, > int size) > diff --git a/arch/riscv/cpu/cpu.c b/arch/riscv/cpu/cpu.c > index e1ed4ec01d0..ecfb1fb08c4 100644 > --- a/arch/riscv/cpu/cpu.c > +++ b/arch/riscv/cpu/cpu.c > @@ -145,7 +145,7 @@ int riscv_cpu_setup(void *ctx, struct event *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, riscv_cpu_setup); > +EVENT_SPY(EVT_DM_POST_INIT_F, riscv_cpu_setup); > > int arch_early_init_r(void) > { > diff --git a/arch/x86/cpu/baytrail/cpu.c b/arch/x86/cpu/baytrail/cpu.c > index 4fb6a485542..4a7b4f617f8 100644 > --- a/arch/x86/cpu/baytrail/cpu.c > +++ b/arch/x86/cpu/baytrail/cpu.c > @@ -64,7 +64,7 @@ static int baytrail_uart_init(void *ctx, struct event > *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, baytrail_uart_init); > +EVENT_SPY(EVT_DM_POST_INIT_F, baytrail_uart_init); > > static void set_max_freq(void) > { > diff --git a/arch/x86/cpu/broadwell/cpu.c b/arch/x86/cpu/broadwell/cpu.c > index 7877961451a..f30aebfe4c6 100644 > --- a/arch/x86/cpu/broadwell/cpu.c > +++ b/arch/x86/cpu/broadwell/cpu.c > @@ -40,7 +40,7 @@ static int broadwell_init_cpu(void *ctx, struct event > *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, broadwell_init_cpu); > +EVENT_SPY(EVT_DM_POST_INIT_F, broadwell_init_cpu); > > void set_max_freq(void) > { > diff --git a/arch/x86/cpu/ivybridge/cpu.c b/arch/x86/cpu/ivybridge/cpu.c > index cffc5d5b1d8..c988d7ff477 100644 > --- a/arch/x86/cpu/ivybridge/cpu.c > +++ b/arch/x86/cpu/ivybridge/cpu.c > @@ -86,7 +86,7 @@ static int ivybridge_cpu_init(void *ctx, struct event *ev) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, ivybridge_cpu_init); > +EVENT_SPY(EVT_DM_POST_INIT_F, ivybridge_cpu_init); > > #define PCH_EHCI0_TEMP_BAR0 0xe8000000 > #define PCH_EHCI1_TEMP_BAR0 0xe8000400 > diff --git a/arch/x86/cpu/quark/quark.c b/arch/x86/cpu/quark/quark.c > index 0a1fbb34d40..1be8e38cdf4 100644 > --- a/arch/x86/cpu/quark/quark.c > +++ b/arch/x86/cpu/quark/quark.c > @@ -263,7 +263,7 @@ static int quark_init_pcie(void *ctx, struct event *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, quark_init_pcie); > +EVENT_SPY(EVT_DM_POST_INIT_F, quark_init_pcie); > > int checkcpu(void) > { > diff --git a/arch/x86/lib/fsp2/fsp_init.c b/arch/x86/lib/fsp2/fsp_init.c > index b15926e8247..afec7d08d67 100644 > --- a/arch/x86/lib/fsp2/fsp_init.c > +++ b/arch/x86/lib/fsp2/fsp_init.c > @@ -42,7 +42,7 @@ int fsp_setup_pinctrl(void *ctx, struct event *event) > > return ret; > } > -EVENT_SPY(EVT_DM_POST_INIT, fsp_setup_pinctrl); > +EVENT_SPY(EVT_DM_POST_INIT_F, fsp_setup_pinctrl); > > #if !defined(CONFIG_TPL_BUILD) > binman_sym_declare(ulong, intel_fsp_m, image_pos); > diff --git a/doc/develop/event.rst b/doc/develop/event.rst > index 4ff59348371..4c34fffc63b 100644 > --- a/doc/develop/event.rst > +++ b/doc/develop/event.rst > @@ -11,7 +11,7 @@ block device is probed. > Rather than using weak functions and direct calls across subsystemss, it is > often easier to use an event. > > -An event consists of a type (e.g. EVT_DM_POST_INIT) and some optional data, > +An event consists of a type (e.g. EVT_DM_POST_INIT_F) and some optional data, > in `union event_data`. An event spy can be creasted to watch for events of a > particular type. When the event is created, it is sent to each spy in turn. > > @@ -26,9 +26,9 @@ To declare a spy, use something like this:: > /* do something */ > return 0; > } > - EVENT_SPY(EVT_DM_POST_INIT, snow_setup_cpus); > + EVENT_SPY(EVT_DM_POST_INIT_F, snow_setup_cpus); > > -Your function is called when EVT_DM_POST_INIT is emitted, i.e. after driver > +Your function is called when EVT_DM_POST_INIT_F is emitted, i.e. after driver > model is inited (in SPL, or in U-Boot proper before and after relocation). > > > diff --git a/drivers/core/root.c b/drivers/core/root.c > index c4fb48548bb..6775fb0b657 100644 > --- a/drivers/core/root.c > +++ b/drivers/core/root.c > @@ -436,8 +436,8 @@ int dm_init_and_scan(bool pre_reloc_only) > return ret; > } > } > - if (CONFIG_IS_ENABLED(DM_EVENT)) { > - ret = event_notify_null(EVT_DM_POST_INIT); > + if (CONFIG_IS_ENABLED(DM_EVENT) && !(gd->flags & GD_FLG_RELOC)) { > + ret = event_notify_null(EVT_DM_POST_INIT_F); > if (ret) > return log_msg_ret("ev", ret); > } > diff --git a/drivers/cpu/microblaze_cpu.c b/drivers/cpu/microblaze_cpu.c > index b9d07928223..c97a89fbd5c 100644 > --- a/drivers/cpu/microblaze_cpu.c > +++ b/drivers/cpu/microblaze_cpu.c > @@ -29,7 +29,7 @@ static int microblaze_cpu_probe_all(void *ctx, struct event > *event) > > return 0; > } > -EVENT_SPY(EVT_DM_POST_INIT, microblaze_cpu_probe_all); > +EVENT_SPY(EVT_DM_POST_INIT_F, microblaze_cpu_probe_all); > > static void microblaze_set_cpuinfo_pvr(struct microblaze_cpuinfo *ci) > { > diff --git a/include/event.h b/include/event.h > index e4580b68350..fe41080fa63 100644 > --- a/include/event.h > +++ b/include/event.h > @@ -22,7 +22,7 @@ enum event_t { > EVT_TEST, > > /* Events related to driver model */ > - EVT_DM_POST_INIT, > + EVT_DM_POST_INIT_F, > EVT_DM_PRE_PROBE, > EVT_DM_POST_PROBE, > EVT_DM_PRE_REMOVE,
This broke the VisonFive2: ... U-Boot 2023.07-rc2-00058-g55171aedda8 (Jun 04 2023 - 14:00:57 +0200) CPU: rv64imafdc_zba_zbb Model: StarFive VisionFive 2 v1.3B DRAM: 8 GiB initcall sequence 00000000fffe0b10 failed at call 00000000402160bc (err=-19) ### ERROR ### Please RESET the board ### Already known? Jan -- Siemens AG, Technology Competence Center Embedded Linux