From 01363220f5d23ef68276db8974e46a502e43d01d Mon Sep 17 00:00:00 2001 From: Kyle McMartin Date: Mon, 26 Feb 2007 22:21:22 -0500 Subject: [PATCH] [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 --- arch/parisc/kernel/processor.c | 8 ++++++++ arch/parisc/kernel/smp.c | 4 ---- arch/parisc/kernel/time.c | 5 +++++ 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/arch/parisc/kernel/processor.c b/arch/parisc/kernel/processor.c index 7c056dcebf..dd5d0cb6b3 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 bb6e6a38e9..6ba9257fdb 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 9b14066d69..07a991aa9b 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) -- 2.39.5