From 0cd90809921d188fa27a49d527f4ccb76f8a165c Mon Sep 17 00:00:00 2001 From: Steven Rostedt Date: Mon, 7 Jul 2008 14:16:51 -0400 Subject: [PATCH] --- yaml --- r: 100253 b: refs/heads/master c: f7cce27f5605b9e137b829a47949cb2d3c7e1cab h: refs/heads/master i: 100251: 62c2d3adfc9aeee9e1268dba530592e37da7f285 v: v3 --- [refs] | 2 +- trunk/kernel/sched_clock.c | 11 +++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index d16c043ad3c9..31c692640d1c 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 62c43dd9864dbd52ff158922d1d08c75f20335af +refs/heads/master: f7cce27f5605b9e137b829a47949cb2d3c7e1cab diff --git a/trunk/kernel/sched_clock.c b/trunk/kernel/sched_clock.c index e383bc7df6dd..42b81fa38cbd 100644 --- a/trunk/kernel/sched_clock.c +++ b/trunk/kernel/sched_clock.c @@ -96,14 +96,21 @@ static void __update_sched_clock(struct sched_clock_data *scd, u64 now) s64 delta = now - scd->prev_raw; WARN_ON_ONCE(!irqs_disabled()); - min_clock = scd->tick_gtod + delta_jiffies * TICK_NSEC; + + min_clock = scd->tick_gtod + + (delta_jiffies ? delta_jiffies - 1 : 0) * TICK_NSEC; if (unlikely(delta < 0)) { clock++; goto out; } - max_clock = min_clock + TICK_NSEC; + /* + * The clock must stay within a jiffie of the gtod. + * But since we may be at the start of a jiffy or the end of one + * we add another jiffy buffer. + */ + max_clock = scd->tick_gtod + (2 + delta_jiffies) * TICK_NSEC; if (unlikely(clock + delta > max_clock)) { if (clock < max_clock)