Prev: wm8940: fix resource reclaim in wm8940_register error path
Next: [PATCH v2 0/3] adding vrtc driver for x86/mrst platform
From: feng.tang on 15 Jul 2010 04:10 From: Feng Tang <feng.tang(a)intel.com> xtime doesn't need to be inited early, move it to a subsys_initcall, as most of its consumers come from userspace. It will also give enough time for some MMIO based wallclock devices to init Signed-off-by: Feng Tang <feng.tang(a)intel.com> Cc: Thomas Gleixner <tglx(a)linutronix.de> Cc: John Stultz <johnstul(a)us.ibm.com> --- kernel/time/timekeeping.c | 28 +++++++++++++++++++++------- 1 files changed, 21 insertions(+), 7 deletions(-) diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index caf8d4d..0803a76 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -520,26 +520,37 @@ void __attribute__((weak)) read_boot_clock(struct timespec *ts) } /* - * timekeeping_init - Initializes the clocksource and common timekeeping values + * timekeeping_init - Initializes the clocksource */ void __init timekeeping_init(void) { struct clocksource *clock; unsigned long flags; - struct timespec now, boot; - - read_persistent_clock(&now); - read_boot_clock(&boot); write_seqlock_irqsave(&xtime_lock, flags); - ntp_init(); - clock = clocksource_default_clock(); if (clock->enable) clock->enable(clock); timekeeper_setup_internals(clock); + ntp_init(); + write_sequnlock_irqrestore(&xtime_lock, flags); +} + +/* + * timekeeping_late_init - Initaizes the common timekeeping values + */ +static int __init timekeeping_late_init(void) +{ + unsigned long flags; + struct timespec now, boot; + + read_persistent_clock(&now); + read_boot_clock(&boot); + + write_seqlock_irqsave(&xtime_lock, flags); + xtime.tv_sec = now.tv_sec; xtime.tv_nsec = now.tv_nsec; raw_time.tv_sec = 0; @@ -553,7 +564,10 @@ void __init timekeeping_init(void) total_sleep_time.tv_sec = 0; total_sleep_time.tv_nsec = 0; write_sequnlock_irqrestore(&xtime_lock, flags); + + return 0; } +subsys_initcall(timekeeping_late_init); /* time in seconds when suspend began */ static struct timespec timekeeping_suspend_time; -- 1.7.0.4 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo(a)vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/ |