On 07/15/2025, Daniel Lezcano wrote: > The function register_current_timer_delay() when compiling on ARM32 > fails with a section mismatch. That is resulting from the module > conversion where the function exynos4_clocksource_init() is called > from mct_init_dt(). This one had its __init annotation removed to for > the module loading. > > Fix this by adding the __init_or_module annotation for the functions: > - mct_init_dt() > - mct_init_spi() > - mct_init_dt() > > Compiled on ARM32 + MODULES=no, ARM64 + MODULES=yes, ARM64 + > MODULES=no > > Signed-off-by: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> Reviewed-by: Will McVicker <willmcvicker@xxxxxxxxxx> > --- > drivers/clocksource/exynos_mct.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/clocksource/exynos_mct.c b/drivers/clocksource/exynos_mct.c > index 5075ebe052a7..80d263ee046d 100644 > --- a/drivers/clocksource/exynos_mct.c > +++ b/drivers/clocksource/exynos_mct.c > @@ -657,7 +657,7 @@ static int exynos4_timer_interrupts(struct device_node *np, > return err; > } > > -static int mct_init_dt(struct device_node *np, unsigned int int_type) > +static __init_or_module int mct_init_dt(struct device_node *np, unsigned int int_type) > { > bool frc_shared = of_property_read_bool(np, "samsung,frc-shared"); > u32 local_idx[MCT_NR_LOCAL] = {0}; > @@ -705,12 +705,12 @@ static int mct_init_dt(struct device_node *np, unsigned int int_type) > return exynos4_clockevent_init(); > } > > -static int mct_init_spi(struct device_node *np) > +static __init_or_module int mct_init_spi(struct device_node *np) > { > return mct_init_dt(np, MCT_INT_SPI); > } > > -static int mct_init_ppi(struct device_node *np) > +static __init_or_module int mct_init_ppi(struct device_node *np) > { > return mct_init_dt(np, MCT_INT_PPI); > } > -- > 2.43.0 > Thanks Daniel for catching this! Sorry I missed it. Regards, Will