Re: Delays, clocks, timers, hrtimers, etc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Stephen Boyd 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;

Looking at the difference between OF and !OF registration functions
in smp_twd.c

!OF
  if (twd_base || twd_evt) return -EBUSY;
  assign twd_ppi and twd_base
  twd_local_timer_common_register(NULL)

OF
  if (!is_smp() || !setup_max_cpus) return; // TO BE DELETED
  assign twd_ppi and twd_base
  twd_local_timer_common_register(np)

I suppose OF guarantees that the init code is called only once?
(Hence the !OF guard code would be unnecessary.)

Regards.

--
To unsubscribe from this list: send the line "unsubscribe cpufreq" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Devel]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Forum]     [Linux SCSI]

  Powered by Linux