sched: fix init_idle()'s use of sched_clock()
authorIngo Molnar <mingo@elte.hu>
Wed, 12 Nov 2008 19:05:50 +0000 (20:05 +0100)
committerIngo Molnar <mingo@elte.hu>
Wed, 12 Nov 2008 19:05:50 +0000 (20:05 +0100)
commit5cbd54ef470d880fc37fbe4b21eb514806d51e0d
treedb9a73e605e0a2e7cfa13bd9697a113b5f6649eb
parenta2d477778e82a60a0b7114cefdb70aa43af28782
sched: fix init_idle()'s use of sched_clock()

Maciej Rutecki reported:

> I have this bug during suspend to disk:
>
> [  188.592151] Enabling non-boot CPUs ...
> [  188.592151] SMP alternatives: switching to SMP code
> [  188.666058] BUG: using smp_processor_id() in preemptible
> [00000000]
> code: suspend_to_disk/2934
> [  188.666064] caller is native_sched_clock+0x2b/0x80

Which, as noted by Linus, was caused by me, via:

  7cbaef9c "sched: optimize sched_clock() a bit"

Move the rq locking a bit earlier in the initialization sequence,
that will make the sched_clock() call in init_idle() non-preemptible.

Reported-by: Maciej Rutecki <maciej.rutecki@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched.c