|
@@ -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.
|