From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751580AbdI1SLD (ORCPT ); Thu, 28 Sep 2017 14:11:03 -0400 Received: from relay3.sgi.com ([192.48.152.1]:39671 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1750794AbdI1SLC (ORCPT ); Thu, 28 Sep 2017 14:11:02 -0400 X-Greylist: delayed 441 seconds by postgrey-1.27 at vger.kernel.org; Thu, 28 Sep 2017 14:11:02 EDT Message-Id: <20170928180339.275721471@stormcage.americas.sgi.com> References: <20170928180339.010141096@stormcage.americas.sgi.com> User-Agent: quilt/0.46-1 Date: Thu, 28 Sep 2017 13:03:41 -0500 From: To: Ingo Molnar , "H. Peter Anvin" , Thomas Gleixner Cc: Peter Zijlstra , Bin Gao , Prarit Bhargava , Dimitri Sivanich , Andrew Banman , Russ Anderson , linux-kernel@vger.kernel.org, x86@kernel.org Subject: [PATCH 2/4] x86/kernel: Skip TSC test and error messages if already unstable Content-Disposition: inline; filename=unstable-tsc-disable-check Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If the TSC has already been determined to be unstable, then checking TSC ADJUST values is a waste of time and generates unnecessary error messages. Signed-off-by: Mike Travis Reviewed-by: Dimitri Sivanich Reviewed-by: Russ Anderson --- arch/x86/kernel/tsc_sync.c | 8 ++++++++ 1 file changed, 8 insertions(+) --- linux.orig/arch/x86/kernel/tsc_sync.c +++ linux/arch/x86/kernel/tsc_sync.c @@ -38,6 +38,10 @@ void tsc_verify_tsc_adjust(bool resume) if (!boot_cpu_has(X86_FEATURE_TSC_ADJUST)) return; + /* Skip unnecessary error messages if TSC already unstable */ + if (check_tsc_unstable()) + return; + /* Rate limit the MSR check */ if (!resume && time_before(jiffies, adj->nextcheck)) return; @@ -89,6 +93,10 @@ bool tsc_store_and_check_tsc_adjust(bool if (!boot_cpu_has(X86_FEATURE_TSC_ADJUST)) return false; + /* Skip unnecessary error messages if TSC already unstable */ + if (check_tsc_unstable()) + return false; + rdmsrl(MSR_IA32_TSC_ADJUST, bootval); cur->bootval = bootval; cur->adjusted = bootval; --