From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751028AbbFMS0V (ORCPT ); Sat, 13 Jun 2015 14:26:21 -0400 Received: from mail-la0-f52.google.com ([209.85.215.52]:33852 "EHLO mail-la0-f52.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750870AbbFMS0L (ORCPT ); Sat, 13 Jun 2015 14:26:11 -0400 MIME-Version: 1.0 In-Reply-To: <20150613085758.GB3796@pd.tnic> References: <20150613085758.GB3796@pd.tnic> From: Andy Lutomirski Date: Sat, 13 Jun 2015 11:25:49 -0700 Message-ID: Subject: Re: [PATCH v2 13/17] x86/tsc: Rename native_read_tsc() to rdtsc_unordered() To: Borislav Petkov Cc: Andy Lutomirski , X86 ML , Peter Zijlstra , John Stultz , "linux-kernel@vger.kernel.org" , Len Brown , Huang Rui , Denys Vlasenko Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, Jun 13, 2015 at 1:57 AM, Borislav Petkov wrote: > On Fri, Jun 12, 2015 at 04:44:53PM -0700, Andy Lutomirski wrote: >> Now that there is no paravirt TSC, the "native" is inappropriate. >> The fact that rdtsc is not ordered can catch people by surprise, so >> call it rdtsc_unordered(). >> >> Signed-off-by: Andy Lutomirski > > ... > >> @@ -109,7 +109,16 @@ notrace static inline int native_write_msr_safe(unsigned int msr, >> extern int rdmsr_safe_regs(u32 regs[8]); >> extern int wrmsr_safe_regs(u32 regs[8]); >> >> -static __always_inline unsigned long long native_read_tsc(void) >> +/** >> + * rdtsc_unordered() - returns the current TSC without ordering constraints >> + * >> + * rdtsc_unordered() returns the result of RDTSC as a 64-bit integer. The >> + * only ordering constraint it supplies is the ordering implied by >> + * "asm volatile": it will put the RDTSC in the place you expect. The >> + * CPU can and will speculatively execute that RDTSC, though, so the >> + * results can be non-monotonic if compared on different CPUs. >> + */ >> +static __always_inline unsigned long long rdtsc_unordered(void) > > I like the rdtsc_ordered() thing because it wraps the barrier and people > cannot just forget it. But let's call this not rdtsc_unordered() but > simply > > rdtsc() > > The "_unordered" suffix is unnecessary IMO since this function is a > simple wrapper around the hw insn and we do that naming scheme with all > such wrappers. I could go either way here. rdtsc() is weird because people seem to forget about the barrier. Maybe I'm being unnecessarily paranoid. --Andy > > -- > Regards/Gruss, > Boris. > > ECO tip #101: Trim your mails when you reply. > -- -- Andy Lutomirski AMA Capital Management, LLC