lkml.org 
[lkml]   [2008]   [Sep]   [6]   [last100]   RSS Feed
Views: [more markup]  [less markup]  [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
DateSun, 7 Sep 2008 00:40:16 +0200
FromIngo Molnar <>
SubjectRe: [RFC patch 0/4] TSC calibration improvements
* Linus Torvalds <torvalds@linux-foundation.org> wrote:

> "expect" is an unsigned char. There are absolutely _zero_ issues with 
> overflow, underflow, random phases of the moon, madness levels or 
> anything else. But yes, it does look like Ingo screwed up when adding 
> that final check, since expect was already decremented at the end of 
> the loop.
> 
> Ingo? Did you actually test it?

hm, yes, that's my brown paper bag fault, sorry.

I did that addition in tip/x86/tsc and posted it to you and i did test 
it immediately - and i noticed that i never saw the fast-calibration 
message i expected to see. I even pasted the boot log over irc yesterday 
and i still have it:

 *> [  0.000] TSC: PIT calibration deviates from PMTIMER: 738839 846296.
 *> [  0.000] TSC: Using PIT calibration value
 *> [  0.000] Detected 738.839 MHz processor.
 *> does not seem to trigger anywhere

i wanted to debug that problem straight after i worked down my 800+ 
mails post-vacation mbox :-/ Which state i reached about 2 hours ago so 
i'm now free - the fix is below.

i _think_ that the quality of calibration should now be pretty OK with 
latest -git. The clever fast calibration stuff could be .28 material. 

And/or we could change the 5x 50msec calibration to 3x 30msec right now, 
the precision is still plenty and the 90 msec is then replaced with your 
fast-calibrate method anyway on proper boxes. Hm?

	Ingo

------------------->
From 5df45515512436a808d3476a90e83f2efb022422 Mon Sep 17 00:00:00 2001
From: Ingo Molnar <mingo@elte.hu>
Date: Sat, 6 Sep 2008 23:55:40 +0200
Subject: [PATCH] x86, tsc calibration: fix
my brown paperbag day ...

Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
 arch/x86/kernel/tsc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c
index 6dab90f..4847a92 100644
--- a/arch/x86/kernel/tsc.c
+++ b/arch/x86/kernel/tsc.c
@@ -319,7 +319,7 @@ static unsigned long quick_pit_calibrate(void)
 		/*
 		 * Make sure we can rely on the second TSC timestamp:
 		 */
-		if (!pit_expect_msb(--expect))
+		if (!pit_expect_msb(expect))
 			goto failed;
 
 		/*

\
 
 \ /
  Last update: 2008-09-07 00:43    [from the cache]
©2003-2008