aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorKyle McMartin <kyle@mako.i.cabal.ca>2007-02-26 22:21:22 -0500
committerKyle McMartin <kyle@mako.i.cabal.ca>2007-02-26 22:21:22 -0500
commit01363220f5d23ef68276db8974e46a502e43d01d (patch)
tree1cbb083b854f58036396252cc16dc7cd5ffc2363 /arch
parentfb55a0debee81280684b68713024d0c5e62e8aa5 (diff)
[PARISC] clocksource: Move update_cr16_clocksource later in boot
smp_cpus_done is too early for us... before we even do a device inventory! Move update_cr16_clocksource into the tail end of processor_probe() and stub it out on CONFIG_SMP=n builds. Verified that clocksource0 is properly updated to use jiffies on an SMP build. Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>
Diffstat (limited to 'arch')
-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 7c056dcebf55..dd5d0cb6b347 100644
--- a/arch/parisc/kernel/processor.c
+++ b/arch/parisc/kernel/processor.c
@@ -48,6 +48,8 @@ EXPORT_SYMBOL(boot_cpu_data);
48 48
49struct cpuinfo_parisc cpu_data[NR_CPUS] __read_mostly; 49struct cpuinfo_parisc cpu_data[NR_CPUS] __read_mostly;
50 50
51extern int update_cr16_clocksource(void); /* from time.c */
52
51/* 53/*
52** PARISC CPU driver - claim "device" and initialize CPU data structures. 54** PARISC CPU driver - claim "device" and initialize CPU data structures.
53** 55**
@@ -198,6 +200,12 @@ static int __init processor_probe(struct parisc_device *dev)
198 } 200 }
199#endif 201#endif
200 202
203 /* If we've registered more than one cpu,
204 * we'll use the jiffies clocksource since cr16
205 * is not synchronized between CPUs.
206 */
207 update_cr16_clocksource();
208
201 return 0; 209 return 0;
202} 210}
203 211
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c
index bb6e6a38e911..6ba9257fdb7f 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)
567 567
568void smp_cpus_done(unsigned int cpu_max) 568void smp_cpus_done(unsigned int cpu_max)
569{ 569{
570 extern int update_cr16_clocksource(void);
571
572 update_cr16_clocksource();
573
574 return; 570 return;
575} 571}
576 572
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c
index 9b14066d693c..07a991aa9b0c 100644
--- a/arch/parisc/kernel/time.c
+++ b/arch/parisc/kernel/time.c
@@ -200,6 +200,11 @@ int update_cr16_clocksource(void)
200 200
201 return change; 201 return change;
202} 202}
203#else
204int update_cr16_clocksource(void)
205{
206 return 0; /* no change */
207}
203#endif /*CONFIG_SMP*/ 208#endif /*CONFIG_SMP*/
204 209
205void __init start_cpu_itimer(void) 210void __init start_cpu_itimer(void)