Subject: Delays, clocks, timers, hrtimers, etc

From: [email-masked] (Stephen Boyd)
Date: Wed, 11 Feb 2015 10:45:15 -0800

On 02/11, Mason wrote:
> Mason wrote:
> 
> 
> Also, you wrote "I don't see any problem with the TWD dropping the
> dependency on SMP." Would something as simple as this be acceptable?
> (Most probably NOT; there are a lot of smp* occurrences in smp_twd.c
> even the file name.) What is the rationale for the dependency?
> 
> 
> diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
> index a34698d..47b02c8 100644
> --- a/arch/arm/Kconfig
> +++ b/arch/arm/Kconfig
> @@ -1565,7 +1565,6 @@ config HAVE_ARM_ARCH_TIMER
>  config HAVE_ARM_TWD
>         bool
> -       depends on SMP
>         select CLKSRC_OF if OF
>         help
>           This options enables support for the ARM timer and watchdog unit
> 

Hmm it looks like we would also need to add this to the patch. It
looks like a holdover from when the local timer APIs were around.
Back then twd_local_timer_common_register() would fail if
is_smp() was false or setup_max_cpus was 0. Now it will just
register a clockevent that may or may not be used depending on
what other clockevents are in the system and the ratings of those
other clockevents.

----8<----
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c
index 172c6a05d27f..e8f6d241881f 100644
--- a/arch/arm/kernel/smp_twd.c
+++ b/arch/arm/kernel/smp_twd.c
@@ -23,7 +23,6 @@
 #include <linux/of_irq.h>
 #include <linux/of_address.h>
 
-#include <asm/smp_plat.h>
 #include <asm/smp_twd.h>
 
 /* set up by the platform code */
@@ -388,9 +387,6 @@ static void __init twd_local_timer_of_register(struct device_node *np)
 {
 	int err;
 
-	if (!is_smp() || !setup_max_cpus)
-		return;
-
 	twd_ppi = irq_of_parse_and_map(np, 0);
 	if (!twd_ppi) {
 		err = -EINVAL;

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project