Re: [PATCH] advsync: Adjust context to herd7 litmus test

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jun 27, 2017 at 12:04:14AM +0900, Akira Yokosawa wrote:
> >From 3db6dc5ae7f71c42f91742064ec38db750f3f25d Mon Sep 17 00:00:00 2001
> From: Akira Yokosawa <akiyks@xxxxxxxxx>
> Date: Mon, 26 Jun 2017 22:33:30 +0900
> Subject: [PATCH] advsync: Adjust context to herd7 litmus test
> 
> Commit 96ab6febd94c ("advsync: Convert memory-misordering table to
> herd7 litmus test") needs further adjustment.
> 
> Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx>

Queued and pushed, thank you!

Proofreading the surrounding paragraphs showed some room for improvement,
so I have queued the following patch.  Thoughts?

							Thanx, Paul

------------------------------------------------------------------------

commit fb481305ecb2185749586b85dddf38bff3ebd494
Author: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>
Date:   Mon Jun 26 09:49:21 2017 -0700

    advsync: Wordsmith memory-barriers intro
    
    Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx>

diff --git a/advsync/memorybarriers.tex b/advsync/memorybarriers.tex
index 4a2c334728d3..d758cfb70a8c 100644
--- a/advsync/memorybarriers.tex
+++ b/advsync/memorybarriers.tex
@@ -46,27 +46,24 @@ RCU.
 \end{figure}
 
 Unfortunately, these intuitions break down completely in face of
-code that makes direct use of explicit memory barriers for data structures
-in shared memory.
-For example, the litmus test in
+code that fails to use standard mechanisms.
+For example, the trivial-seeming litmus test in
 Figure~\ref{fig:advsync:Memory Misordering: Store-Buffering Litmus Test}
-appears to guarantee that the \co{exists} clause is never validated.
-After all, if \nbco{0:r2=0},\footnote{
+appears to guarantee that the \co{exists} clause is never satisfied.
+After all, if \nbco{0:r2=0}\footnote{
 	That is, Thread~\co{P0()}'s instance of local variable \co{r2}
 	equals zero.
 	See Section~\ref{sec:formal:Anatomy of a Litmus Test}
-	for documention of litmus-test structure.}
+	for documention of litmus-test nomenclature.}
 as shown in the \co{exists} clause, we might hope that Thread~\co{P0()}'s
 load from~\co{x1} must have happened before Thread~\co{P1()}'s store to~\co{x1},
 which might raise
 further hopes that Thread~\co{P1()}'s load from~\co{x0} must happen after
 Thread~\co{P0()}'s store to~\co{x0}, so that \nbco{1:r2=2},
-which should negate the \co{exits} clause.
-The example is symmetric, so similar hopeful reasoning might lead
+thus not satisfying the \co{exists} clause.
+The example is symmetric, so similar reasoning might lead
 us to hope that \nbco{1:r2=0} guarantees that \nbco{0:r2=2}.
-Unfortunately, the lack of memory barriers in
-Figure~\ref{fig:advsync:Memory Misordering: Store-Buffering Litmus Test}
-dashes these hopes.
+Unfortunately, the lack of memory barriers dashes these hopes.
 Both the compiler and the CPU are within their rights to reorder
 the statements within both Thread~\co{P0()} and Thread~\co{P1()},
 even on relatively strongly ordered systems such as x86.
@@ -77,8 +74,8 @@ which found that the counter-intuitive ordering happened
 314 times out of 100,000,000 trials on my x86 laptop.
 Oddly enough, the perfectly legal outcome where both loads return the
 value 2 occurred less frequently, in this case, only 167 times.
-The lesson here is clear: Counterintuitivity does not necessarily
-imply lower probability!
+The lesson here is clear: Increased counterintuitivity does not necessarily
+imply decreased probability!
 % Run on June 23, 2017:
 % litmus7 -r 1000 -carch X86 C-SB+o-o+o-o.litmus
 % Test C-SB+o-o+o-o Allowed

--
To unsubscribe from this list: send the line "unsubscribe perfbook" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux