From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756233AbcFHIRs (ORCPT ); Wed, 8 Jun 2016 04:17:48 -0400 Received: from mx2.suse.de ([195.135.220.15]:37115 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756018AbcFHIRp (ORCPT ); Wed, 8 Jun 2016 04:17:45 -0400 Date: Wed, 8 Jun 2016 10:17:39 +0200 From: Borislav Petkov To: Minfei Huang Cc: pbonzini@redhat.com, luto@kernel.org, hpa@zytor.com, mingo@redhat.com, tglx@linutronix.de, x86@kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 3/3 V2] pvclock: Get rid of __pvclock_read_cycles in function pvclock_read_flags Message-ID: <20160608081739.GD26187@pd.tnic> References: <1464329832-4638-3-git-send-email-mnghuan@gmail.com> <1464438463-8485-1-git-send-email-mnghuan@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <1464438463-8485-1-git-send-email-mnghuan@gmail.com> User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sat, May 28, 2016 at 08:27:43PM +0800, Minfei Huang wrote: > There is a generic function __pvclock_read_cycles to be used to get both > flags and cycles. For function pvclock_read_flags, it's useless to get > cycles value. To make this function be more effective, get this variable > flags directly in function. > > Signed-off-by: Minfei Huang > --- > v1: > - Get rid of __pvclock_read_cycles according to Andy's suggestion > --- > arch/x86/kernel/pvclock.c | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/arch/x86/kernel/pvclock.c b/arch/x86/kernel/pvclock.c > index 7f82fe0..06c58ce 100644 > --- a/arch/x86/kernel/pvclock.c > +++ b/arch/x86/kernel/pvclock.c > @@ -61,11 +61,14 @@ void pvclock_resume(void) > u8 pvclock_read_flags(struct pvclock_vcpu_time_info *src) > { > unsigned version; > - cycle_t ret; > u8 flags; > > do { > - version = __pvclock_read_cycles(src, &ret, &flags); > + version = src->version; > + /* Make the latest version visible */ > + smp_rmb(); > + > + flags = src->flags; > /* Make sure that the version double-check is last. */ What does that comment mean over the barrier? It should be over the "while" line IMO. > smp_rmb(); Why the two barriers back-to-back? Can't have one at the end for all? > } while ((src->version & 1) || version != src->version); -- Regards/Gruss, Boris. SUSE Linux GmbH, GF: Felix Imendörffer, Jane Smithard, Graham Norton, HRB 21284 (AG Nürnberg) --