[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1221503179.7154.2.camel@lappy.programming.kicks-ass.net>
Date: Mon, 15 Sep 2008 20:26:19 +0200
From: Peter Zijlstra <a.p.zijlstra@...llo.nl>
To: Ingo Molnar <mingo@...e.hu>, David Howells <dhowells@...hat.com>
Cc: linux-kernel <linux-kernel@...r.kernel.org>
Subject: [PATCH] sched_clock: fix jiffie fallback clock
David pointed out that the default sched_clock() fallback is broken in that it
wraps too soon. Fix this by using the 64 bit jiffie value so that we're large
enough to overflow properly.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@...llo.nl>
CC: David Howells <dhowells@...hat.com>
---
arch/x86/kernel/tsc.c | 6 ++----
kernel/sched_clock.c | 2 +-
2 files changed, 3 insertions(+), 5 deletions(-)
Index: linux-2.6/arch/x86/kernel/tsc.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/tsc.c 2008-09-15 18:41:26.000000000 +0200
+++ linux-2.6/arch/x86/kernel/tsc.c 2008-09-15 18:41:33.000000000 +0200
@@ -46,10 +46,8 @@ u64 native_sched_clock(void)
* very important for it to be as fast as the platform
* can achive it. )
*/
- if (unlikely(tsc_disabled)) {
- /* No locking but a rare wrong value is not a big deal: */
- return (jiffies_64 - INITIAL_JIFFIES) * (1000000000 / HZ);
- }
+ if (unlikely(tsc_disabled))
+ return (get_jiffies_64() - INITIAL_JIFFIES) * (NSEC_PER_SEC/HZ);
/* read the Time Stamp Counter: */
rdtscll(this_offset);
Index: linux-2.6/kernel/sched_clock.c
===================================================================
--- linux-2.6.orig/kernel/sched_clock.c 2008-09-15 18:41:26.000000000 +0200
+++ linux-2.6/kernel/sched_clock.c 2008-09-15 18:41:33.000000000 +0200
@@ -38,7 +38,7 @@
*/
unsigned long long __attribute__((weak)) sched_clock(void)
{
- return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ);
+ return (get_jiffies_64() - INITIAL_JIFFIES) * (NSEC_PER_SEC/HZ);
}
static __read_mostly int sched_clock_running;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists