When booting a SMP build kernel with nosmp on kernel cmdline, the
following fat warning will be hit.
------------[ cut here ]------------
WARNING: at arch/arm/kernel/smp_twd.c:345
twd_local_timer_of_register+0x7c/0x90()
twd_local_timer_of_register failed (-6)
Modules linked in:
Backtrace:
[<
80011f14>] (dump_backtrace+0x0/0x10c) from [<
8044dd30>]
(dump_stack+0x18/0x1c)
r7:
805e9f58 r6:
805ba84c r5:
80539331 r4:
00000159
[<
8044dd18>] (dump_stack+0x0/0x1c) from [<
80020fbc>]
(warn_slowpath_common+0x54/0x6c)
[<
80020f68>] (warn_slowpath_common+0x0/0x6c) from [<
80021078>]
(warn_slowpath_fmt+0x38/0x40)
r9:
412fc09a r8:
8fffffff r7:
ffffffff r6:
00000001 r5:
80633b8c
r4:
80b32da8
[<
80021040>] (warn_slowpath_fmt+0x0/0x40) from [<
805ba84]
(twd_local_timer_of_register+0x7c/0x90)
r3:
fffffffa r2:
8053934b
[<
805ba7d0>] (twd_local_timer_of_register+0x0/0x90) from [<
805c0bec>]
(imx6q_timer_init+0x18/0x4c)
r5:
80633800 r4:
8053b701
[<
805c0bd4>] (imx6q_timer_init+0x0/0x4c) from [<
805ba4e8>]
(time_init+0x28/0x38)
r5:
80633800 r4:
805dc0f4
[<
805ba4c0>] (time_init+0x0/0x38) from [<
805b6854>]
(start_kernel+0x1a0/0x310)
[<
805b66b4>] (start_kernel+0x0/0x310) from [<
10008044>] (0x10008044)
r8:
1000406a r7:
805f3f8c r6:
805dc0c4 r5:
805f0518 r4:
10c5387d
---[ end trace
1b75b31a2719ed1c ]---
Check (!is_smp() || !setup_max_cpus) in twd_local_timer_of_register()
to make it be a no-op for the conditions, thus avoid above warning.
Reported-by: Dirk Behme <dirk.behme@de.bosch.com>
Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
#include <linux/of_irq.h>
#include <linux/of_address.h>
+#include <asm/smp_plat.h>
#include <asm/smp_twd.h>
#include <asm/localtimer.h>
struct device_node *np;
int err;
+ if (!is_smp() || !setup_max_cpus)
+ return;
+
np = of_find_matching_node(NULL, twd_of_match);
if (!np)
return;