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> --- 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