Re: [PATCH] memorder: Refine technical prose for clarity and precision

"Paul E. McKenney" <[email protected]> Fri, 6 Mar 2026 08:37:26 -0800
Newsgroups org.kernel.vger.perfbook
Message-ID <de0e2797-8f98-45ea-91e6-9d4ae80567f1@paulmck-laptop>
On Fri, Mar 06, 2026 at 04:29:22PM +0800, Kunwu Chan wrote:
> Polish typography and grammar in memory-ordering text to improve
> precision, readability, and editorial consistency while preserving
> technical semantics.
> 
> Signed-off-by: Kunwu Chan <[email protected]>

Again, good eyes!  Queued and pushed, thank you very much!!!

							Thanx, Paul

> ---
>  memorder/memorder.tex | 20 ++++++++++----------
>  1 file changed, 10 insertions(+), 10 deletions(-)
> 
> diff --git a/memorder/memorder.tex b/memorder/memorder.tex
> index d1ebb93c..16a569d1 100644
> --- a/memorder/memorder.tex
> +++ b/memorder/memorder.tex
> @@ -15,7 +15,7 @@ These intuitions can be quite helpful when writing, analyzing, and
>  debugging not only sequential code, but also parallel code that makes
>  use of standard mutual-exclusion mechanisms such as locking.
>  Unfortunately, these intuitions break down completely in complex
> -concurrent code, such as that in  the Linux-kernel, which often uses
> +concurrent code, such as that in the Linux-kernel, which often uses
>  weakly ordered atomic operations and memory barriers.
>  One example of such code implements the standard mutual-exclusion
>  mechanisms themselves, while another example implements fast
> @@ -316,8 +316,8 @@ stored by a release, discussed in
>  then the code following that release will see all accesses preceding
>  the acquire.
>  More precisely, if CPU~0 does an acquire that loads the value stored by
> -CPU~1's release, than all the subsequent accesses executed by CPU~0 will
> -see the all of CPU~1's accesses prior to its release.
> +CPU~1's release, then all the subsequent accesses executed by CPU~0 will
> +see all of CPU~1's accesses prior to its release.
>  
>  Similarly, the accesses preceding that release access will be protected
>  from seeing the accesses following the acquire access.
> @@ -561,7 +561,7 @@ on
>  	This counter-temporal nature of load-to-store and store-to-store
>  	links necessitates strong ordering.
>  
> -	In constrast, store-to-load links are temporal, as illustrated by
> +	In contrast, store-to-load links are temporal, as illustrated by
>  	\cref{lst:memorder:Load-Buffering Data-Dependency Litmus Test,%
>  	lst:memorder:Load-Buffering Control-Dependency Litmus Test}.
>  	This temporal nature of store-to-load links permits use of
> @@ -882,7 +882,7 @@ record their stores in their respective store buffers.
>  	How can that possibly work???
>  }\QuickQuizAnswer{
>  	There is an underlying cache-coherence protocol that straightens
> -	things out, which are discussed in
> +	things out, which is discussed in
>  	\cref{sec:app:whymb:Cache-Coherence Protocols}.
>  	But if you think that a given variable having two values at
>  	the same time is surprising, just wait until you get to
> @@ -1040,7 +1040,7 @@ Although full barriers such as \co{smp_mb()} have extremely strong
>  ordering guarantees, their strength comes at a high price in terms
>  of foregone hardware and compiler optimizations.
>  A great many situations can be handled with much weaker ordering guarantees
> -that use much cheaper memory-ordering instructions, or, in some case, no
> +that use much cheaper memory-ordering instructions, or, in some cases, no
>  memory-ordering instructions at all.
>  
>  \begin{table*}
> @@ -1184,7 +1184,7 @@ are at most two threads involved.
>  
>  	The \co{*_dereference()} row captures the address and data
>  	dependency ordering provided by \co{rcu_dereference()} and friends.
> -	Again, these dependencies must been constructed carefully,
> +	Again, these dependencies must have been constructed carefully,
>  	as described in
>  	\cref{sec:memorder:Address- and Data-Dependency Difficulties}.
>  
> @@ -2459,7 +2459,7 @@ might reach \co{P2()} before \co{P0()}'s store does.
>  This leads to the question of why a real system constrained by the
>  usual laws of physics would ever trigger the \co{exists} clause of
>  \cref{lst:memorder:WRC Litmus Test With Dependencies (No Ordering)}.
> -The cartoonish diagram of a such a real system is shown in
> +The cartoonish diagram of such a real system is shown in
>  \cref{fig:memorder:Shared Store Buffers And Multi-Copy Atomicity}.
>  CPU~0 and CPU~1 share a store buffer, as do CPUs~2 and~3.
>  This means that CPU~1 can load a value out of the store buffer, thus
> @@ -3536,8 +3536,8 @@ can be satisfied:
>  
>  At this point, you should see something like
>  \cref{fig:memorder:PPCMEM Final R State}.
> -Note that the satisified \co{exists} clause is shown in blue near the
> -bottom, confirming that this counter-intuitive really can happen.
> +Note that the satisfied \co{exists} clause is shown in blue near the
> +bottom, confirming that this counter-intuitive result really can happen.
>  If you wish, you can click on ``Undo'' to explore other options or
>  click on ``Reset'' to start over.
>  It can be very helpful to carry out these steps in different orders
> -- 
> 2.25.1
>