Messages in this thread Patch in this message |  | | Date | Sat, 6 Sep 2008 22:58:02 +0200 (CEST) | | From | Thomas Gleixner <> | | Subject | Re: [RFC patch 0/4] TSC calibration improvements |
| |
On Sat, 6 Sep 2008, Linus Torvalds wrote:
> > > On Sat, 6 Sep 2008, Thomas Gleixner wrote: > > > > Just checked. The -tip version still has the expect-- in the for() > > which might lead to stupid results depending on the gcc madness level. > > Umm. What? You're on some odd drugs.
Just straight forward german beer :)
diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 6dab90f..3bfe083 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -310,8 +310,8 @@ static unsigned long quick_pit_calibrate(void) unsigned char expect = 0xfe; t1 = get_cycles(); for (i = 0; i < QUICK_PIT_ITERATIONS; i++, expect--) { if (!pit_expect_msb(expect)) goto failed; } t2 = get_cycles();
/* * Make sure we can rely on the second TSC timestamp: */ if (!pit_expect_msb(--expect)) goto failed; Where is a guarantee, that excpect is not decremented before we break out of the loop ?
the "expect--" can be done _BEFORE_ the i < QUICK_PIT_ITERATIONS evaluation. Not likely, but ...
This version works always
t1 = get_cycles(); for (i = 0; i < QUICK_PIT_ITERATIONS; i++) { if (!pit_expect_msb(expect--)) goto failed; } t2 = get_cycles(); /* * Make sure we can rely on the second TSC timestamp: */ if (!pit_expect_msb(expect)) goto failed; Thanks,
tglx
|  |