All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] hyper-v: mark TSC as unstable
@ 2015-08-19 16:54 Vitaly Kuznetsov
  2015-08-21  7:45 ` [tip:x86/platform] x86/hyperv: Mark the Hyper-V " tip-bot for Vitaly Kuznetsov
  0 siblings, 1 reply; 4+ messages in thread
From: Vitaly Kuznetsov @ 2015-08-19 16:54 UTC (permalink / raw)
  To: devel
  Cc: x86, linux-kernel, K. Y. Srinivasan, Haiyang Zhang,
	Thomas Gleixner, Ingo Molnar, H. Peter Anvin

Hyper-V top-level functional specification states, that "algorithms should
be resilient to sudden jumps forward or backward in the TSC value", this
means that we should consider TSC as unstable. In some cases tsc tests are
able to detect the instability, it was detected in 543 out of 646 boots in
my testing:

 Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
 tsc: Marking TSC unstable due to check_tsc_sync_source failed

This is, however, just a heuristic. On Hyper-V platform there are two good
clocksources: MSR-based hyperv_clocksource and recently introduced TSC
page.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
---
 arch/x86/kernel/cpu/mshyperv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index aad4bd8..6fd023d 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -141,6 +141,7 @@ static void __init ms_hyperv_init_platform(void)
 	no_timer_check = 1;
 #endif
 
+	mark_tsc_unstable("running on Hyper-V");
 }
 
 const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {
-- 
2.4.3


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [tip:x86/platform] x86/hyperv: Mark the Hyper-V TSC as unstable
  2015-08-19 16:54 [PATCH] hyper-v: mark TSC as unstable Vitaly Kuznetsov
@ 2015-08-21  7:45 ` tip-bot for Vitaly Kuznetsov
  2015-08-21 14:34   ` Peter Zijlstra
  0 siblings, 1 reply; 4+ messages in thread
From: tip-bot for Vitaly Kuznetsov @ 2015-08-21  7:45 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: hpa, vkuznets, peterz, tglx, haiyangz, mingo, linux-kernel, kys,
	torvalds

Commit-ID:  88c9281a9fba67636ab26c1fd6afbc78a632374f
Gitweb:     http://git.kernel.org/tip/88c9281a9fba67636ab26c1fd6afbc78a632374f
Author:     Vitaly Kuznetsov <vkuznets@redhat.com>
AuthorDate: Wed, 19 Aug 2015 09:54:24 -0700
Committer:  Ingo Molnar <mingo@kernel.org>
CommitDate: Fri, 21 Aug 2015 08:44:38 +0200

x86/hyperv: Mark the Hyper-V TSC as unstable

The Hyper-V top-level functional specification states, that
"algorithms should be resilient to sudden jumps forward or
backward in the TSC value", this means that we should consider
TSC as unstable. In some cases tsc tests are able to detect the
instability, it was detected in 543 out of 646 boots in my
testing:

 Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
 tsc: Marking TSC unstable due to check_tsc_sync_source failed

This is, however, just a heuristic. On Hyper-V platform there
are two good clocksources: MSR-based hyperv_clocksource and
recently introduced TSC page.

Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Cc: Haiyang Zhang <haiyangz@microsoft.com>
Cc: K. Y. Srinivasan <kys@microsoft.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: devel@linuxdriverproject.org
Link: http://lkml.kernel.org/r/1440003264-9949-1-git-send-email-vkuznets@redhat.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
---
 arch/x86/kernel/cpu/mshyperv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c
index aad4bd8..6fd023d 100644
--- a/arch/x86/kernel/cpu/mshyperv.c
+++ b/arch/x86/kernel/cpu/mshyperv.c
@@ -141,6 +141,7 @@ static void __init ms_hyperv_init_platform(void)
 	no_timer_check = 1;
 #endif
 
+	mark_tsc_unstable("running on Hyper-V");
 }
 
 const __refconst struct hypervisor_x86 x86_hyper_ms_hyperv = {

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [tip:x86/platform] x86/hyperv: Mark the Hyper-V TSC as unstable
  2015-08-21  7:45 ` [tip:x86/platform] x86/hyperv: Mark the Hyper-V " tip-bot for Vitaly Kuznetsov
@ 2015-08-21 14:34   ` Peter Zijlstra
  2015-08-21 15:35     ` KY Srinivasan
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Zijlstra @ 2015-08-21 14:34 UTC (permalink / raw)
  To: mingo, haiyangz, tglx, hpa, vkuznets, kys, torvalds, linux-kernel
  Cc: linux-tip-commits

On Fri, Aug 21, 2015 at 12:45:50AM -0700, tip-bot for Vitaly Kuznetsov wrote:
> Commit-ID:  88c9281a9fba67636ab26c1fd6afbc78a632374f
> Gitweb:     http://git.kernel.org/tip/88c9281a9fba67636ab26c1fd6afbc78a632374f
> Author:     Vitaly Kuznetsov <vkuznets@redhat.com>
> AuthorDate: Wed, 19 Aug 2015 09:54:24 -0700
> Committer:  Ingo Molnar <mingo@kernel.org>
> CommitDate: Fri, 21 Aug 2015 08:44:38 +0200
> 
> x86/hyperv: Mark the Hyper-V TSC as unstable
> 
> The Hyper-V top-level functional specification states, that
> "algorithms should be resilient to sudden jumps forward or
> backward in the TSC value", this means that we should consider
> TSC as unstable. In some cases tsc tests are able to detect the
> instability, it was detected in 543 out of 646 boots in my
> testing:
> 
>  Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
>  tsc: Marking TSC unstable due to check_tsc_sync_source failed
> 
> This is, however, just a heuristic. On Hyper-V platform there
> are two good clocksources: MSR-based hyperv_clocksource and
> recently introduced TSC page.

*groan*.. and where are the paravirt ops like pv_time_ops for hyperv to
fix up this mess?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* RE: [tip:x86/platform] x86/hyperv: Mark the Hyper-V TSC as unstable
  2015-08-21 14:34   ` Peter Zijlstra
@ 2015-08-21 15:35     ` KY Srinivasan
  0 siblings, 0 replies; 4+ messages in thread
From: KY Srinivasan @ 2015-08-21 15:35 UTC (permalink / raw)
  To: Peter Zijlstra, mingo, Haiyang Zhang, tglx, hpa, vkuznets,
	torvalds, linux-kernel
  Cc: linux-tip-commits



> -----Original Message-----
> From: Peter Zijlstra [mailto:peterz@infradead.org]
> Sent: Friday, August 21, 2015 7:34 AM
> To: mingo@kernel.org; Haiyang Zhang <haiyangz@microsoft.com>;
> tglx@linutronix.de; hpa@zytor.com; vkuznets@redhat.com; KY Srinivasan
> <kys@microsoft.com>; torvalds@linux-foundation.org; linux-
> kernel@vger.kernel.org
> Cc: linux-tip-commits@vger.kernel.org
> Subject: Re: [tip:x86/platform] x86/hyperv: Mark the Hyper-V TSC as
> unstable
> 
> On Fri, Aug 21, 2015 at 12:45:50AM -0700, tip-bot for Vitaly Kuznetsov wrote:
> > Commit-ID:  88c9281a9fba67636ab26c1fd6afbc78a632374f
> > Gitweb:
> https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fgit.kern
> el.org%2ftip%2f88c9281a9fba67636ab26c1fd6afbc78a632374f&data=01%7c01
> %7ckys%40microsoft.com%7cca840f9ebba34958dc9a08d2aa35a6c4%7c72f988
> bf86f141af91ab2d7cd011db47%7c1&sdata=hzE233wXaLAYShWPE18SQJQvQe
> JguAdB6oj%2bF%2blx7Ok%3d
> > Author:     Vitaly Kuznetsov <vkuznets@redhat.com>
> > AuthorDate: Wed, 19 Aug 2015 09:54:24 -0700
> > Committer:  Ingo Molnar <mingo@kernel.org>
> > CommitDate: Fri, 21 Aug 2015 08:44:38 +0200
> >
> > x86/hyperv: Mark the Hyper-V TSC as unstable
> >
> > The Hyper-V top-level functional specification states, that
> > "algorithms should be resilient to sudden jumps forward or
> > backward in the TSC value", this means that we should consider
> > TSC as unstable. In some cases tsc tests are able to detect the
> > instability, it was detected in 543 out of 646 boots in my
> > testing:
> >
> >  Measured 6277 cycles TSC warp between CPUs, turning off TSC clock.
> >  tsc: Marking TSC unstable due to check_tsc_sync_source failed
> >
> > This is, however, just a heuristic. On Hyper-V platform there
> > are two good clocksources: MSR-based hyperv_clocksource and
> > recently introduced TSC page.
> 
> *groan*.. and where are the paravirt ops like pv_time_ops for hyperv to
> fix up this mess?

We register external clocksource and clockevents devices based on a hypervisor based time source and
timers to deal with this issue.

Regards,

K. Y

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-08-21 15:35 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-19 16:54 [PATCH] hyper-v: mark TSC as unstable Vitaly Kuznetsov
2015-08-21  7:45 ` [tip:x86/platform] x86/hyperv: Mark the Hyper-V " tip-bot for Vitaly Kuznetsov
2015-08-21 14:34   ` Peter Zijlstra
2015-08-21 15:35     ` KY Srinivasan

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.