sched_clock: prevent scd->clock from moving backwards
authorDave Kleikamp <shaggy@linux.vnet.ibm.com>
Thu, 9 Oct 2008 18:21:30 +0000 (13:21 -0500)
committerIngo Molnar <mingo@elte.hu>
Fri, 10 Oct 2008 09:17:04 +0000 (11:17 +0200)
commit5b7dba4ff834259a5623e03a565748704a8fe449
tree8fa9be3a308d1b5f2eb22d0a02dbe887a479ee3e
parenta5d8c3483a6e19aca95ef6a2c5890e33bfa5b293
sched_clock: prevent scd->clock from moving backwards

When sched_clock_cpu() couples the clocks between two cpus, it may
increment scd->clock beyond the GTOD tick window that __update_sched_clock()
uses to clamp the clock.  A later call to __update_sched_clock() may move
the clock back to scd->tick_gtod + TICK_NSEC, violating the clock's
monotonic property.

This patch ensures that scd->clock will not be set backward.

Signed-off-by: Dave Kleikamp <shaggy@linux.vnet.ibm.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/sched_clock.c