From 890dc95ca90a643b59a2b67b634f70ea1f2ea3d6 Mon Sep 17 00:00:00 2001 From: Jan Beulich Date: Mon, 13 Feb 2017 15:21:24 +0100 Subject: [PATCH] x86/time: tsc_check_writability() may need to be run a second time While we shouldn't remove its current invocation, we need to re-run it for the case that the X86_FEATURE_TSC_RELIABLE feature flag has been cleared, in order to avoid using the TSC rendezvous function in case the TSC can't be written. Signed-off-by: Jan Beulich Reviewed-by: Andrew Cooper Reviewed-by: Joao Martins --- xen/arch/x86/time.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xen/arch/x86/time.c b/xen/arch/x86/time.c index 699dfb6604..803e154c99 100644 --- a/xen/arch/x86/time.c +++ b/xen/arch/x86/time.c @@ -1642,6 +1642,14 @@ static int __init verify_tsc_reliability(void) } } + /* + * Re-run the TSC writability check if it didn't run to completion, as + * X86_FEATURE_TSC_RELIABLE may have been cleared by now. This is needed + * for determining which rendezvous function to use (below). + */ + if ( !disable_tsc_sync ) + tsc_check_writability(); + /* * While with constant-rate TSCs the scale factor can be shared, when TSCs * are not marked as 'reliable', re-sync during rendezvous. -- 2.30.2