Commit:     8180a550284bf2c8e13414082fc20b8983c2c401
Parent:     e82f64e5bb0648a13630d752c35be1e7bd8bab96
Author:     Thomas Gleixner <[EMAIL PROTECTED]>
AuthorDate: Sat Jul 21 17:10:07 2007 +0200
Committer:  Linus Torvalds <[EMAIL PROTECTED]>
CommitDate: Sat Jul 21 18:37:08 2007 -0700

    x86_64: hpet tsc calibration fix broken smi detection logic
    The current SMI detection logic in read_hpet_tsc() makes sure,
    that when a SMI happens between the read of the HPET counter and
    the read of the TSC, this wrong value is used for TSC calibration.
    This is not the intention of the function. The comparison must ensure,
    that we do _NOT_ use such a value.
    Fix the check to use calibration values where delta of the two TSC reads
    is smaller than a reasonable threshold.
    Signed-off-by: Thomas Gleixner <[EMAIL PROTECTED]>
    Signed-off-by: Chris Wright <[EMAIL PROTECTED]>
    Signed-off-by: Ingo Molnar <[EMAIL PROTECTED]>
    Signed-off-by: Andi Kleen <[EMAIL PROTECTED]>
    Signed-off-by: Linus Torvalds <[EMAIL PROTECTED]>
 arch/x86_64/kernel/hpet.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86_64/kernel/hpet.c b/arch/x86_64/kernel/hpet.c
index b828696..6b46040 100644
--- a/arch/x86_64/kernel/hpet.c
+++ b/arch/x86_64/kernel/hpet.c
@@ -190,7 +190,7 @@ int hpet_reenable(void)
 #define TICK_COUNT 100000000
-#define TICK_MIN   5000
+#define SMI_THRESHOLD 50000
 #define MAX_TRIES  5
@@ -205,7 +205,7 @@ static void __init read_hpet_tsc(int *hpet, int *tsc)
                tsc1 = get_cycles_sync();
                hpet1 = hpet_readl(HPET_COUNTER);
                tsc2 = get_cycles_sync();
-               if (tsc2 - tsc1 > TICK_MIN)
+               if ((tsc2 - tsc1) < SMI_THRESHOLD)
        *hpet = hpet1;
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to