aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched.c
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2007-12-07 13:02:47 -0500
committerIngo Molnar <mingo@elte.hu>2007-12-07 13:02:47 -0500
commit8ced5f69e4bc09adcc6442e090e2e64c197246cf (patch)
treed431ff185719579c6a786a97adf6def6a849751c /kernel/sched.c
parent5f9fa8a62d6a98f5cb2ee2e00b85bfe95e45888d (diff)
sched: enable early use of sched_clock()
some platforms have sched_clock() implementations that cannot be called very early during wakeup. If it's called it might hang or crash in hard to debug ways. So only call update_rq_clock() [which calls sched_clock()] if sched_init() has already been called. (rq->idle is NULL before the scheduler is initialized.) Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r--kernel/sched.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c
index 67d9d1799d86..c6e551de795b 100644
--- a/kernel/sched.c
+++ b/kernel/sched.c
@@ -488,7 +488,12 @@ unsigned long long cpu_clock(int cpu)
488 488
489 local_irq_save(flags); 489 local_irq_save(flags);
490 rq = cpu_rq(cpu); 490 rq = cpu_rq(cpu);
491 update_rq_clock(rq); 491 /*
492 * Only call sched_clock() if the scheduler has already been
493 * initialized (some code might call cpu_clock() very early):
494 */
495 if (rq->idle)
496 update_rq_clock(rq);
492 now = rq->clock; 497 now = rq->clock;
493 local_irq_restore(flags); 498 local_irq_restore(flags);
494 499