aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/parisc/kernel/processor.c8
-rw-r--r--arch/parisc/kernel/smp.c4
-rw-r--r--arch/parisc/kernel/time.c5
3 files changed, 13 insertions, 4 deletions
diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c
index 7c056dcebf5..dd5d0cb6b34 100644
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -48,6 +48,8 @@ EXPORT_SYMBOL(boot_cpu_data);
struct cpuinfo_parisc cpu_data[NR_CPUS] __read_mostly;
+extern int update_cr16_clocksource(void); /* from time.c */
+
/*
** PARISC CPU driver - claim "device" and initialize CPU data structures.
**
@@ -198,6 +200,12 @@ static int __init processor_probe(struct parisc_device *dev)
}
#endif
+ /* If we've registered more than one cpu,
+ * we'll use the jiffies clocksource since cr16
+ * is not synchronized between CPUs.
+ */
+ update_cr16_clocksource();
+
return 0;
}
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index bb6e6a38e91..6ba9257fdb7 100644
--- a/arch/parisc/kernel/smp.c
+++ b/arch/parisc/kernel/smp.c
@@ -567,10 +567,6 @@ void __init smp_prepare_cpus(unsigned int max_cpus)
void smp_cpus_done(unsigned int cpu_max)
{
- extern int update_cr16_clocksource(void);
-
- update_cr16_clocksource();
-
return;
}
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 9b14066d693..07a991aa9b0 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -200,6 +200,11 @@ int update_cr16_clocksource(void)
return change;
}
+#else
+int update_cr16_clocksource(void)
+{
+ return 0; /* no change */
+}
#endif /*CONFIG_SMP*/
void __init start_cpu_itimer(void)