--- /dev/null
+From dbcfea91daaf046ac6a398cf79b272a1119148e6 Mon Sep 17 00:00:00 2001
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+Date: Thu, 30 Jun 2022 11:55:42 +0200
+Subject: clocksource/drivers/ixp4xx: remove __init from ixp4xx_timer_setup()
+
+From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+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@linaro.org>
+Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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
+@@ -161,9 +161,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;
+@@ -269,9 +268,8 @@ builtin_platform_driver(ixp4xx_timer_dri
+ * @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