From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751933AbdIUUWf (ORCPT ); Thu, 21 Sep 2017 16:22:35 -0400 Received: from relay1.sgi.com ([192.48.180.66]:54113 "EHLO relay.sgi.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751882AbdIUUWV (ORCPT ); Thu, 21 Sep 2017 16:22:21 -0400 Message-Id: <20170921201222.155976706@stormcage.americas.sgi.com> References: <20170921201221.869441567@stormcage.americas.sgi.com> User-Agent: quilt/0.46-1 Date: Thu, 21 Sep 2017 15:12:23 -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/3] 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 (840 for a 16 socket Skylake 28/2 core/ht system). Signed-off-by: Mike Travis Reviewed-by: Dimitri Sivanich Reviewed-by: Russ Anderson --- arch/x86/kernel/tsc_sync.c | 7 +++++++ 1 file changed, 7 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; @@ -61,6 +65,9 @@ void tsc_verify_tsc_adjust(bool resume) static void tsc_sanitize_first_cpu(struct tsc_adjust *cur, s64 bootval, unsigned int cpu, bool bootcpu) { + /* Skip unnecessary error messages if TSC already unstable */ + if (check_tsc_unstable()) + return; /* * First online CPU in a package stores the boot value in the * adjustment value. This value might change later via the sync --