All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
To: Akira Yokosawa <akiyks@gmail.com>
Cc: Alan Stern <stern@rowland.harvard.edu>,
	Andrea Parri <parri.andrea@gmail.com>,
	Kernel development list <linux-kernel@vger.kernel.org>,
	mingo@kernel.org, Will Deacon <will.deacon@arm.com>,
	peterz@infradead.org, boqun.feng@gmail.com, npiggin@gmail.com,
	dhowells@redhat.com, Jade Alglave <j.alglave@ucl.ac.uk>,
	Luc Maranget <luc.maranget@inria.fr>,
	Patrick Bellasi <patrick.bellasi@arm.com>
Subject: Re: [PATCH] tools/memory-model: update: remove rb-dep, smp_read_barrier_depends, and lockless_dereference
Date: Sun, 25 Feb 2018 14:33:14 -0800	[thread overview]
Message-ID: <20180225223313.GF2855@linux.vnet.ibm.com> (raw)
In-Reply-To: <b01f23b8-058c-a968-2b09-37f315e76681@gmail.com>

On Sun, Feb 25, 2018 at 07:47:23AM +0900, Akira Yokosawa wrote:
> On 2018/02/24 10:08:14 -0800, Paul E. McKenney wrote:
> > On Sat, Feb 24, 2018 at 11:49:20AM -0500, Alan Stern wrote:
> >> On Sat, 24 Feb 2018, Andrea Parri wrote:
> >>
> >>> On Fri, Feb 23, 2018 at 07:30:13PM -0800, Paul E. McKenney wrote:
> >>>> On Sat, Feb 24, 2018 at 12:22:24PM +0900, Akira Yokosawa wrote:
> >>>>> On 2018/02/22 07:29:02 +0900, Akira Yokosawa wrote:
> >>>>>> On 2018/02/22 2:15, Alan Stern wrote:
> >>>
> >>> [...]
> >>>
> >>>>>>>
> >>>>>>> Akira pointed out some typos in the original patch, and he noted that
> >>>>>>> cheatsheet.txt should be updated to indicate how unsuccessful RMW
> >>>>>>> operations relate to address dependencies.
> >>>>>>
> >>>>>> My point was to separate unannotated loads from READ_ONCE(), if the
> >>>>>> cheatsheet should concern such accesses as well.
> >>>>>> Unsuccessful RMW operations were brought up by Andrea.
> >>>>>>
> >>>>>
> >>>>> Paul, can you amend above paragraph in the change log to something like:
> >>>>>
> >>>>>     Akira pointed out some typos in the original patch, and he noted that
> >>>>>     cheatsheet.txt should be updated to indicate READ_ONCE() implies
> >>>>>     address dependency, which invited Andrea's observation that it should
> >>>>>     also be updated to indicate how unsuccessful RMW operations relate to
> >>>>>     address dependencies.
> >>>>>
> >>>>> , if Alan and Andrea are OK with the amendment.
> >>>>>
> >>>>> Also, please append my Acked-by.
> >>>>>
> >>>>> Acked-by: Akira Yokosawa <akiyks@gmail.com>
> >>>>
> >>>> I can still amend this, and have added your Acked-by.  If Alan and Andrea
> >>>> OK with your change, I will apply that also.
> >>>
> >>> LGTM. Thanks,
> >>
> >> Me too.
> > 
> > Very good, how about this for the new version?
> > 
> > 							Thanx, Paul
> > 
> > ------------------------------------------------------------------------
> > 
> > commit 21ede43970e50b7397420f17ed08bb02c187e2eb
> > Author: Alan Stern <stern@rowland.harvard.edu>
> > Date:   Wed Feb 21 12:15:56 2018 -0500
> > 
> >     tools/memory-model: Update: Remove rb-dep, smp_read_barrier_depends, and lockless_dereference
> >     
> >     Commit bf28ae562744 ("tools/memory-model: Remove rb-dep,
> >     smp_read_barrier_depends, and lockless_dereference") was accidentally
> >     merged too early, while it was still in RFC form.  This patch adds in
> >     the missing pieces.
> >     
> >     Akira pointed out some typos in the original patch, and he noted that
> >     cheatsheet.txt should indicate that READ_ONCE() now implies an address
> >     dependency.  Andrea suggested documenting the relationship betwwen
> >     unsuccessful RMW operations and address dependencies.
> 
> Looks good. But I've found a remaining typo in the patch. See below.
> 
> >     >     Andrea pointed out that the macro for rcu_dereference() in linux.def
> >     should now use the "once" annotation instead of "deref".  He also
> >     suggested that the comments should mention commit 5a8897cc7631
> >     ("locking/atomics/alpha: Add smp_read_barrier_depends() to
> >     _release()/_relaxed() atomics") as an important precursor, and he
> >     contributed commit cb13b424e986 ("locking/xchg/alpha: Add
> >     unconditional memory barrier to cmpxchg()"), another prerequisite.
> >     
> >     Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
> >     Suggested-by: Akira Yokosawa <akiyks@gmail.com>
> >     Suggested-by: Andrea Parri <parri.andrea@gmail.com>
> >     Fixes: bf28ae562744 ("tools/memory-model: Remove rb-dep, smp_read_barrier_depends, and lockless_dereference")
> >     Acked-by: Andrea Parri <parri.andrea@gmail.com>
> >     Acked-by: Akira Yokosawa <akiyks@gmail.com>
> >     Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
> > 
> > diff --git a/tools/memory-model/Documentation/cheatsheet.txt b/tools/memory-model/Documentation/cheatsheet.txt
> > index 04e458acd6d4..956b1ae4aafb 100644
> > --- a/tools/memory-model/Documentation/cheatsheet.txt
> > +++ b/tools/memory-model/Documentation/cheatsheet.txt
> > @@ -1,11 +1,11 @@
> >                                    Prior Operation     Subsequent Operation
> >                                    ---------------  ---------------------------
> >                                 C  Self  R  W  RWM  Self  R  W  DR  DW  RMW  SV
> > -                              __  ----  -  -  ---  ----  -  -  --  --  ---  --
> > +                              --  ----  -  -  ---  ----  -  -  --  --  ---  --
> >  
> >  Store, e.g., WRITE_ONCE()            Y                                       Y
> > -Load, e.g., READ_ONCE()              Y                              Y        Y
> > -Unsuccessful RMW operation           Y                              Y        Y
> > +Load, e.g., READ_ONCE()              Y                          Y   Y        Y
> > +Unsuccessful RMW operation           Y                          Y   Y        Y
> >  rcu_dereference()                    Y                          Y   Y        Y
> >  Successful *_acquire()               R                   Y  Y   Y   Y    Y   Y
> >  Successful *_release()         C        Y  Y    Y     W                      Y
> > diff --git a/tools/memory-model/Documentation/explanation.txt b/tools/memory-model/Documentation/explanation.txt
> > index dae8b8cb2ad3..889fabef7d83 100644
> > --- a/tools/memory-model/Documentation/explanation.txt
> > +++ b/tools/memory-model/Documentation/explanation.txt
> > @@ -826,7 +826,7 @@ A-cumulative; they only affect the propagation of stores that are
> >  executed on C before the fence (i.e., those which precede the fence in
> >  program order).
> >  
> > -read_lock(), rcu_read_unlock(), and synchronize_rcu() fences have
> > +read_read_lock(), rcu_read_unlock(), and synchronize_rcu() fences have
> 
>    rcu_read_lock()
> 
> Don't ask why I missed this in the first place...
> 
> Paul, can you fix this directly?

Done!

								Thanx, Paul

>         Thanks, Akira
>         
> >  other properties which we discuss later.
> >  
> >  
> > @@ -1138,7 +1138,7 @@ final effect is that even though the two loads really are executed in
> >  program order, it appears that they aren't.
> >  
> >  This could not have happened if the local cache had processed the
> > -incoming stores in FIFO order.  In constrast, other architectures
> > +incoming stores in FIFO order.  By contrast, other architectures
> >  maintain at least the appearance of FIFO order.
> >  
> >  In practice, this difficulty is solved by inserting a special fence
> > diff --git a/tools/memory-model/linux-kernel.def b/tools/memory-model/linux-kernel.def
> > index 5dfb9c7f3462..397e4e67e8c8 100644
> > --- a/tools/memory-model/linux-kernel.def
> > +++ b/tools/memory-model/linux-kernel.def
> > @@ -13,7 +13,7 @@ WRITE_ONCE(X,V) { __store{once}(X,V); }
> >  smp_store_release(X,V) { __store{release}(*X,V); }
> >  smp_load_acquire(X) __load{acquire}(*X)
> >  rcu_assign_pointer(X,V) { __store{release}(X,V); }
> > -rcu_dereference(X) __load{deref}(X)
> > +rcu_dereference(X) __load{once}(X)
> >  
> >  // Fences
> >  smp_mb() { __fence{mb} ; }
> > 
> 

  reply	other threads:[~2018-02-25 22:32 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-09 14:18 [PATCH RFC tools/lkmm] Miscellaneous fixes Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 01/10] tools/memory-model: Clarify the origin/scope of the tool name Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 02/10] MAINTAINERS: Add the Memory Consistency Model subsystem Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 03/10] MAINTAINERS: List file memory-barriers.txt within the LKMM entry Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 04/10] EXP litmus_tests: Add comments explaining tests' purposes Paul E. McKenney
2018-02-09 18:46   ` Alan Stern
2018-02-10  1:05     ` Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 05/10] README: Fix a couple of punctuation errors Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 06/10] EXP MAINTAINERS: Add the "LKMM" acronym Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 07/10] MAINTAINERS: Add Akira Yokosawa as an LKMM reviewer Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 08/10] EXP Remove understore from smp_mb__before_atomic() workings Paul E. McKenney
2018-02-15 22:30   ` Andrea Parri
2018-02-15 22:49     ` Paul E. McKenney
2018-02-15 23:19       ` Andrea Parri
2018-02-15 23:32         ` Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 09/10] EXP Remove underscore from smp_mb__after_atomic() workings Paul E. McKenney
2018-02-09 14:20 ` [PATCH RFC tip/lkmm 10/10] EXP Remove underscores from smp_mb__after_spinlock() workings Paul E. McKenney
2018-02-09 16:02 ` [PATCH RFC tools/lkmm] Miscellaneous fixes Akira Yokosawa
2018-02-09 16:06   ` [PATCH] tools/memory-model: Restore compat with herd7 7.47 ("-" -> "_") Akira Yokosawa
2018-02-09 23:46   ` [PATCH v2] tools/memory-model: Make " Akira Yokosawa
2018-02-10  1:07     ` Paul E. McKenney
2018-02-10  3:03       ` Akira Yokosawa
2018-02-11 11:51       ` Ingo Molnar
2018-02-13  1:38         ` Paul E. McKenney
2018-02-13  8:32           ` Ingo Molnar
2018-02-14 22:20       ` Akira Yokosawa
2018-02-14 22:52         ` Paul E. McKenney
2018-02-15 15:10           ` Alan Stern
2018-02-15 15:58             ` Trial of conflict resolution of Alan's patch Akira Yokosawa
2018-02-15 17:51               ` Alan Stern
2018-02-15 19:29                 ` Paul E. McKenney
2018-02-15 21:51                   ` Akira Yokosawa
2018-02-16 15:18                     ` Alan Stern
2018-02-16 15:47                       ` Andrea Parri
2018-02-16 16:53                         ` Paul E. McKenney
2018-02-16 22:22                           ` [PATCH] tools/memory-model: remove rb-dep, smp_read_barrier_depends, and lockless_dereference Alan Stern
2018-02-16 23:22                             ` Akira Yokosawa
2018-02-17  0:39                             ` Paul E. McKenney
2018-02-21 15:00                               ` Alan Stern
2018-02-21 16:06                                 ` Paul E. McKenney
2018-02-21 16:51                                   ` Ingo Molnar
2018-02-21 17:53                                     ` Paul E. McKenney
2018-02-21 17:15                                   ` [PATCH] tools/memory-model: update: " Alan Stern
2018-02-21 17:58                                     ` Andrea Parri
2018-02-21 18:14                                       ` Paul E. McKenney
2018-02-21 18:00                                     ` Paul E. McKenney
2018-02-21 22:29                                     ` Akira Yokosawa
2018-02-24  3:22                                       ` Akira Yokosawa
2018-02-24  3:30                                         ` Paul E. McKenney
2018-02-24 14:36                                           ` Andrea Parri
2018-02-24 16:49                                             ` Alan Stern
2018-02-24 18:08                                               ` Paul E. McKenney
2018-02-24 22:47                                                 ` Akira Yokosawa
2018-02-25 22:33                                                   ` Paul E. McKenney [this message]
2018-02-17  3:25                             ` [PATCH] tools/memory-model: " Andrea Parri
2018-02-17 15:14                               ` Andrea Parri
2018-02-19 17:14                                 ` Alan Stern
2018-02-19 17:43                                   ` Peter Zijlstra
2018-02-19 17:44                                   ` Peter Zijlstra
2018-02-20 14:48                                     ` Paul E. McKenney
2018-02-20 15:17                                       ` Andrea Parri
2018-02-20 16:11                                         ` Paul E. McKenney
2018-02-19 19:41                                   ` Paul E. McKenney
2018-02-19 20:28                                     ` Peter Zijlstra
2018-02-20 14:49                                       ` Paul E. McKenney
2018-02-20 15:11                                         ` Alan Stern
2018-02-20 16:10                                           ` Paul E. McKenney
2018-02-20  9:33                                   ` Andrea Parri
2018-02-20  9:51                                     ` Peter Zijlstra
2018-02-20 15:38                                     ` Alan Stern
2018-02-15 22:05                   ` Trial of conflict resolution of Alan's patch Andrea Parri
2018-02-15 22:41                     ` Paul E. McKenney
2018-02-18 15:46           ` [PATCH v2] tools/memory-model: Make compat with herd7 7.47 ("-" -> "_") Akira Yokosawa
2018-02-20 14:57             ` Paul E. McKenney

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180225223313.GF2855@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akiyks@gmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dhowells@redhat.com \
    --cc=j.alglave@ucl.ac.uk \
    --cc=linux-kernel@vger.kernel.org \
    --cc=luc.maranget@inria.fr \
    --cc=mingo@kernel.org \
    --cc=npiggin@gmail.com \
    --cc=parri.andrea@gmail.com \
    --cc=patrick.bellasi@arm.com \
    --cc=peterz@infradead.org \
    --cc=stern@rowland.harvard.edu \
    --cc=will.deacon@arm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.