diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-01-11 11:23:04 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2011-01-11 11:23:04 -0500 |
commit | 211baa7016894c02fc18693e21ca479cd08ac0c0 (patch) | |
tree | 0fea398c6288b46542fc1640adff697f9b1e07a5 /arch/arm/kernel/time.c | |
parent | 1aa023b8fda8096caf41c20427a0ef396d88eb0f (diff) |
ARM: sched_clock: allow init_sched_clock() to be called early
sched_clock is supposed to be initialized early - in the recently added
init_early platform hook. However, in doing so we end up calling
mod_timer() before the timer lists are initialized, resulting in an
oops.
Split the initialization in two - the part which the platform calls
early which starts things off. The addition of the timer can be
delayed until after we have more of the kernel initialized - when the
normal time sources are initialized.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/kernel/time.c')
-rw-r--r-- | arch/arm/kernel/time.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/arch/arm/kernel/time.c b/arch/arm/kernel/time.c index f1e2eb19a67d..3d76bf233734 100644 --- a/arch/arm/kernel/time.c +++ b/arch/arm/kernel/time.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <asm/leds.h> | 30 | #include <asm/leds.h> |
31 | #include <asm/thread_info.h> | 31 | #include <asm/thread_info.h> |
32 | #include <asm/sched_clock.h> | ||
32 | #include <asm/stacktrace.h> | 33 | #include <asm/stacktrace.h> |
33 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/time.h> | 35 | #include <asm/mach/time.h> |
@@ -163,5 +164,8 @@ void __init time_init(void) | |||
163 | { | 164 | { |
164 | system_timer = machine_desc->timer; | 165 | system_timer = machine_desc->timer; |
165 | system_timer->init(); | 166 | system_timer->init(); |
167 | #ifdef CONFIG_HAVE_SCHED_CLOCK | ||
168 | sched_clock_postinit(); | ||
169 | #endif | ||
166 | } | 170 | } |
167 | 171 | ||