]> git.ipfire.org Git - people/stevee/ipfire-2.x.git/commitdiff
kernel: add hyper-v: mark tsc unstable patch
authorArne Fitzenreiter <arne_f@ipfire.org>
Wed, 17 Aug 2016 18:37:07 +0000 (20:37 +0200)
committerArne Fitzenreiter <arne_f@ipfire.org>
Wed, 17 Aug 2016 18:37:07 +0000 (20:37 +0200)
Signed-off-by: Arne Fitzenreiter <arne_f@ipfire.org>
lfs/linux
src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch [new file with mode: 0644]

index bf71776d84c35f75de9bf9cc9a4d520e77881f3b..cfea069319b0c9ed8e10e6d6dba1c4e666e7bd27 100644 (file)
--- a/lfs/linux
+++ b/lfs/linux
@@ -199,6 +199,7 @@ endif
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0023-hyperv-Fix-error-return-code-in-netvsc_init_buf.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0024-hyperv-Fix-a-bug-in-netvsc_send.patch
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux/0025-Drivers-hv-vmbus-Support-per-channel-driver-state.patch
+       cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch
 
        # fix empty symbol crc's
        cd $(DIR_APP) && patch -Np1 < $(DIR_SRC)/src/patches/linux-genksyms_fix_typeof_handling.patch
diff --git a/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch b/src/patches/linux-hyperv_Mark_the_Hyoer-V_TSC_as_unstable.patch
new file mode 100644 (file)
index 0000000..d12f46b
--- /dev/null
@@ -0,0 +1,47 @@
+From 88c9281a9fba67636ab26c1fd6afbc78a632374f Mon Sep 17 00:00:00 2001
+From: Vitaly Kuznetsov <vkuznets@redhat.com>
+Date: Wed, 19 Aug 2015 09:54:24 -0700
+Subject: 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 = {
+-- 
+cgit v0.12
+