Messages in this thread Patch in this message |  | | | Date | Sun, 7 Sep 2008 00:40:16 +0200 | | From | Ingo Molnar <> | | Subject | Re: [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;
/*
|  |