sched: enable early use of sched_clock()
authorIngo Molnar <mingo@elte.hu>
Fri, 7 Dec 2007 18:02:47 +0000 (19:02 +0100)
committerIngo Molnar <mingo@elte.hu>
Fri, 7 Dec 2007 18:02:47 +0000 (19:02 +0100)
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>
kernel/sched.c

index 67d9d1799d864ef8e6680ce4c07deae68f5beb8a..c6e551de795be75247f25634d5d27a70740f1948 100644 (file)
@@ -488,7 +488,12 @@ unsigned long long cpu_clock(int cpu)
 
        local_irq_save(flags);
        rq = cpu_rq(cpu);
-       update_rq_clock(rq);
+       /*
+        * Only call sched_clock() if the scheduler has already been
+        * initialized (some code might call cpu_clock() very early):
+        */
+       if (rq->idle)
+               update_rq_clock(rq);
        now = rq->clock;
        local_irq_restore(flags);