From df4dbb951c64c3a39babb532366e45adfc86d6b0 Mon Sep 17 00:00:00 2001 From: Feng Tang Date: Tue, 12 Mar 2013 11:56:47 +0800 Subject: [PATCH] --- yaml --- r: 366173 b: refs/heads/master c: 82f9c080b22a5b859ae2b50822dfb6b812898fdb h: refs/heads/master i: 366171: 24daab9a6bc1a0ea47db8dd8fe59ef7fc8731eba v: v3 --- [refs] | 2 +- trunk/arch/x86/kernel/tsc.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index d67731f3002e..ac4cdc7e7504 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5caf4636259ae3af0efbb9bfc4cd97874b547c7d +refs/heads/master: 82f9c080b22a5b859ae2b50822dfb6b812898fdb diff --git a/trunk/arch/x86/kernel/tsc.c b/trunk/arch/x86/kernel/tsc.c index 4b9ea101fe3b..098b3cfda72e 100644 --- a/trunk/arch/x86/kernel/tsc.c +++ b/trunk/arch/x86/kernel/tsc.c @@ -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.