From: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> ixp4xx_timer_setup is exported, and so can not be an __init function. Remove the __init marking as the build system is rightfully claiming this is an error in older kernels. This is fixed "properly" in commit 41929c9f628b ("clocksource/drivers/ixp4xx: Drop boardfile probe path") but that can not be backported to older kernels as the reworking of the IXP4xx codebase is not suitable for stable releases. Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> Cc: Daniel Lezcano <daniel.lezcano@xxxxxxxxxx> Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> --- drivers/clocksource/mmio.c | 2 +- drivers/clocksource/timer-ixp4xx.c | 10 ++++------ include/linux/platform_data/timer-ixp4xx.h | 5 ++--- 3 files changed, 7 insertions(+), 10 deletions(-) --- a/drivers/clocksource/mmio.c +++ b/drivers/clocksource/mmio.c @@ -46,7 +46,7 @@ u64 clocksource_mmio_readw_down(struct c * @bits: Number of valid bits * @read: One of clocksource_mmio_read*() above */ -int __init clocksource_mmio_init(void __iomem *base, const char *name, +int clocksource_mmio_init(void __iomem *base, const char *name, unsigned long hz, int rating, unsigned bits, u64 (*read)(struct clocksource *)) { --- a/drivers/clocksource/timer-ixp4xx.c +++ b/drivers/clocksource/timer-ixp4xx.c @@ -170,9 +170,8 @@ static int ixp4xx_resume(struct clock_ev * We use OS timer1 on the CPU for the timer tick and the timestamp * counter as a source of real clock ticks to account for missed jiffies. */ -static __init int ixp4xx_timer_register(void __iomem *base, - int timer_irq, - unsigned int timer_freq) +static int ixp4xx_timer_register(void __iomem *base, int timer_irq, + unsigned int timer_freq) { struct ixp4xx_timer *tmr; int ret; @@ -245,9 +244,8 @@ static __init int ixp4xx_timer_register( * @timer_irq: Linux IRQ number for the timer * @timer_freq: Fixed frequency of the timer */ -void __init ixp4xx_timer_setup(resource_size_t timerbase, - int timer_irq, - unsigned int timer_freq) +void ixp4xx_timer_setup(resource_size_t timerbase, int timer_irq, + unsigned int timer_freq) { void __iomem *base; --- a/include/linux/platform_data/timer-ixp4xx.h +++ b/include/linux/platform_data/timer-ixp4xx.h @@ -4,8 +4,7 @@ #include <linux/ioport.h> -void __init ixp4xx_timer_setup(resource_size_t timerbase, - int timer_irq, - unsigned int timer_freq); +void ixp4xx_timer_setup(resource_size_t timerbase, int timer_irq, + unsigned int timer_freq); #endif