[PATCH] ARM: uniphier: only select TWD for SMP
Masahiro Yamada
yamada.masahiro at socionext.com
Mon May 18 17:52:13 PDT 2015
Hi Arnd,
2015-05-19 5:26 GMT+09:00 Arnd Bergmann <arnd at arndb.de>:
> On Tuesday 19 May 2015 02:18:53 Masahiro Yamada wrote:
>> Hi Arnd,
>>
>> 2015-05-19 0:55 GMT+09:00 Arnd Bergmann <arnd at arndb.de>:
>> > This makes uniphier behave like all the other platforms that
>> > support TWD, and only select this driver when SMP is enabled.
>> > Without this, we get a compile error on UP builds:
>> >
>> > arch/arm/kernel/smp_twd.c: In function 'twd_local_timer_of_register':
>> > arch/arm/kernel/smp_twd.c:391:20: error: 'setup_max_cpus' undeclared (first use in this function)
>> >
>> > Signed-off-by: Arnd Bergmann <arnd at arndb.de>
>> > ---
>> > I'd like to apply this directly to the next/soc branch
>> >
>> > diff --git a/arch/arm/mach-uniphier/Kconfig b/arch/arm/mach-uniphier/Kconfig
>> > index a017b1dd9c78..b640458fd757 100644
>> > --- a/arch/arm/mach-uniphier/Kconfig
>> > +++ b/arch/arm/mach-uniphier/Kconfig
>> > @@ -5,7 +5,7 @@ config ARCH_UNIPHIER
>> > select ARM_GLOBAL_TIMER
>> > select ARM_GIC
>> > select HAVE_ARM_SCU
>> > - select HAVE_ARM_TWD
>> > + select HAVE_ARM_TWD if SMP
>> > help
>> > Support for UniPhier SoC family developed by Socionext Inc.
>> > (formerly, System LSI Business Division of Panasonic Corporation)
>>
>>
>>
>> I am not familiar with smp_twd.c, but I think
>> the local timer and watchdog still exist in the ARM mpcore
>> even if it is a uni-processor implementation.
>>
>> That is why I simply selected HAVE_ARM_TWD.
>> Am I doing something wrong?
>
> I was wondering about this too. Everybody else has the 'if SMP' dependency
> here, and if I leave it out, I get the build error. We could probably
> fix that build error easily, but I don't know what the exact reason is
> we can't have use the code when there is only one CPU.
>
> This was introduced as part of 904464b91eca8 ("ARM: 7655/1: smp_twd: make
> twd_local_timer_of_register() no-op for nosmp"), before that, we would
> just try to use the driver, but fail in one of these calls:
>
> twd_evt = alloc_percpu(struct clock_event_device);
> err = request_percpu_irq(twd_ppi, twd_handler, "twd", twd_evt);
> err = register_cpu_notifier(&twd_timer_cpu_nb);
>
> which in turn causes a run-time warning. If we could fix that code
> to just work on non-SMP, we can probably use that driver on all
> machines that have the hardware.
>
>> Is it reasonable to have something depends on HAVE_ARM_TWD?
>>
>>
>> config SMP_ARM_TWD
>> depends on SMP && HAVE_ARM_TWD
>>
>>
>>
>> obj-$(SMP_ARM_TWD) += smp_twd.o
>>
>>
>>
>> I am not sure...
>
> This would probably work, but I'd like to understand the problem
> more thoroughly before we change the behavior.
>
> [adding Russell and Will to Cc, maybe they remember better why we
> do things the way we do here]
>
> Arnd
OK, then. Anyway, we should fix the build error asap.
Let's go with "if SMP" for now.
Acked-by: Masahiro Yamada <yamada.masahiro at socionext.com>
--
Best Regards
Masahiro Yamada
More information about the linux-arm-kernel
mailing list