From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755677AbbGFPqG (ORCPT ); Mon, 6 Jul 2015 11:46:06 -0400 Received: from terminus.zytor.com ([198.137.202.10]:49543 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751095AbbGFPqA (ORCPT ); Mon, 6 Jul 2015 11:46:00 -0400 Date: Mon, 6 Jul 2015 08:44:48 -0700 From: tip-bot for Andy Lutomirski Message-ID: Cc: lenb@kernel.org, peterz@infradead.org, linux-kernel@vger.kernel.org, john.stultz@linaro.org, dvlasenk@redhat.com, ralf@linux-mips.org, luto@kernel.org, torvalds@linux-foundation.org, ray.huang@amd.com, bp@alien8.de, mingo@kernel.org, hpa@zytor.com, bp@suse.de, luto@amacapital.net, tglx@linutronix.de, kvm@vger.kernel.org, brgerst@gmail.com Reply-To: mingo@kernel.org, bp@alien8.de, hpa@zytor.com, bp@suse.de, luto@amacapital.net, kvm@vger.kernel.org, tglx@linutronix.de, brgerst@gmail.com, lenb@kernel.org, peterz@infradead.org, john.stultz@linaro.org, linux-kernel@vger.kernel.org, dvlasenk@redhat.com, luto@kernel.org, ralf@linux-mips.org, ray.huang@amd.com, torvalds@linux-foundation.org In-Reply-To: References: To: linux-tip-commits@vger.kernel.org Subject: [tip:x86/asm] x86/asm/tsc: Use rdtsc_ordered() in read_tsc() instead of get_cycles() Git-Commit-ID: 27c634054a3155e1d9a02f0e362e4f4ff8d28ee7 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: 27c634054a3155e1d9a02f0e362e4f4ff8d28ee7 Gitweb: http://git.kernel.org/tip/27c634054a3155e1d9a02f0e362e4f4ff8d28ee7 Author: Andy Lutomirski AuthorDate: Thu, 25 Jun 2015 18:44:10 +0200 Committer: Ingo Molnar CommitDate: Mon, 6 Jul 2015 15:23:29 +0200 x86/asm/tsc: Use rdtsc_ordered() in read_tsc() instead of get_cycles() There are two logical changes here. First, this removes a check for cpu_has_tsc. That check is unnecessary, as we don't register the TSC as a clocksource on systems that have no TSC. Second, it adds a barrier, thus preventing observable non-monotonicity. I suspect that the missing barrier was never a problem in practice because system calls themselves were heavy enough barriers to prevent user code from observing time warps due to speculation. (Without the corresponding barrier in the vDSO, however, non-monotonicity is easy to detect.) Signed-off-by: Andy Lutomirski Signed-off-by: Borislav Petkov Cc: Andy Lutomirski Cc: Borislav Petkov Cc: Brian Gerst Cc: Denys Vlasenko Cc: H. Peter Anvin Cc: Huang Rui Cc: John Stultz Cc: Len Brown Cc: Linus Torvalds Cc: Peter Zijlstra Cc: Ralf Baechle Cc: Thomas Gleixner Cc: kvm ML Link: http://lkml.kernel.org/r/c6ff621a053127a65b70f175443578db7a0711be.1434501121.git.luto@kernel.org Signed-off-by: Ingo Molnar --- arch/x86/kernel/tsc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/arch/x86/kernel/tsc.c b/arch/x86/kernel/tsc.c index 21d6e04..451bade0 100644 --- a/arch/x86/kernel/tsc.c +++ b/arch/x86/kernel/tsc.c @@ -961,7 +961,7 @@ static struct clocksource clocksource_tsc; */ static cycle_t read_tsc(struct clocksource *cs) { - return (cycle_t)get_cycles(); + return (cycle_t)rdtsc_ordered(); } /*