x86: tsc: Add support for new S3_NONSTOP feature
[linux-block.git] / arch / x86 / kernel / tsc.c
index 4b9ea101fe3b2923744b5b0b5b61c15ff1c3f296..098b3cfda72ee152ab3ce5505ad5843b3778b699 100644 (file)
@@ -768,7 +768,8 @@ static cycle_t read_tsc(struct clocksource *cs)
 
 static void resume_tsc(struct clocksource *cs)
 {
-       clocksource_tsc.cycle_last = 0;
+       if (!boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3))
+               clocksource_tsc.cycle_last = 0;
 }
 
 static struct clocksource clocksource_tsc = {
@@ -939,6 +940,9 @@ static int __init init_tsc_clocksource(void)
                clocksource_tsc.flags &= ~CLOCK_SOURCE_IS_CONTINUOUS;
        }
 
+       if (boot_cpu_has(X86_FEATURE_NONSTOP_TSC_S3))
+               clocksource_tsc.flags |= CLOCK_SOURCE_SUSPEND_NONSTOP;
+
        /*
         * Trust the results of the earlier calibration on systems
         * exporting a reliable TSC.