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: perfbook@vger.kernel.org
Subject: Re: [PATCH] advsync: Fix litmus tests
Date: Fri, 25 Aug 2017 18:59:44 -0700	[thread overview]
Message-ID: <20170826015944.GV11320@linux.vnet.ibm.com> (raw)
In-Reply-To: <2f1687fb-136e-88e8-e678-9066be8b0448@gmail.com>

On Sat, Aug 26, 2017 at 09:07:33AM +0900, Akira Yokosawa wrote:
> >From 65f40cf041aa5506e62c25e4ab9fd63d1d34fdd7 Mon Sep 17 00:00:00 2001
> From: Akira Yokosawa <akiyks@gmail.com>
> Date: Sat, 26 Aug 2017 08:48:01 +0900
> Subject: [PATCH] advsync: Fix litmus tests
> 
> Adjust litmus-test syntax to be accepted by litmus7.
> 
> Signed-off-by: Akira Yokosawa <akiyks@gmail.com>
> ---
> Hi Paul,
> 
> This is my attempt to make litmus7 happy.
> herd7 says:
> 
> --
> $ herd7 -conf strong.cfg C-WWC+o+o-data-o+o-addr-o.litmus 
> Test C-WWC+o+o-data-o+o-addr-o Allowed
> States 5
> 1:r1=x; 2:r2=u; x=x;
> 1:r1=x; 2:r2=x; x=a;
> 1:r1=x; 2:r2=x; x=x;
> 1:r1=z; 2:r2=u; x=x;
> 1:r1=z; 2:r2=z; x=x;
> Ok
> Witnesses
> Positive: 1 Negative: 4
> Condition exists (1:r1=x /\ 2:r2=x /\ x=x)
> Observation C-WWC+o+o-data-o+o-addr-o Sometimes 1 4
> Hash=262fd275af47e8ed4fba69491478bb7d
> --
> 
> and
> 
> --
> $ herd7 -conf strong.cfg C-WWC+o+o-r+o-addr-o.litmus 
> Test C-WWC+o+o-r-o+o-addr-o Allowed
> States 4
> 1:r1=x; 2:r2=u; x=x;
> 1:r1=x; 2:r2=x; x=a;
> 1:r1=z; 2:r2=u; x=x;
> 1:r1=z; 2:r2=z; x=x;
> No
> Witnesses
> Positive: 0 Negative: 4
> Condition exists (1:r1=x /\ 2:r2=x /\ x=x)
> Observation C-WWC+o+o-r-o+o-addr-o Never 0 4
> Hash=607040ae8eb633fee308b55be24729e1
> --
> 
> Do these look reasonable?

They do, but I failed to push out a change, and thus had to hand-apply
them with some adjustment.  Could you please double-check them?  For
ease of repairing any errors, I split this into two commits.

Also, I made the memory-barriers section be its own chapter.  At some
point I should move the litmus tests as well, but am holding off until
we get these corrected.

							Thanx, Paul

>      Thanks, Akira
> --
>  .../advsync/herd/C-WWC+o+o-data-o+o-addr-o.litmus  | 22 ++++++++++---
>  .../advsync/herd/C-WWC+o+o-r+o-addr-o.litmus       | 24 ++++++++++----
>  advsync/memorybarriers.tex                         | 38 +++++++++++++++-------
>  3 files changed, 62 insertions(+), 22 deletions(-)
> 
> diff --git a/CodeSamples/advsync/herd/C-WWC+o+o-data-o+o-addr-o.litmus b/CodeSamples/advsync/herd/C-WWC+o+o-data-o+o-addr-o.litmus
> index e49712f..3e51168 100644
> --- a/CodeSamples/advsync/herd/C-WWC+o+o-data-o+o-addr-o.litmus
> +++ b/CodeSamples/advsync/herd/C-WWC+o+o-data-o+o-addr-o.litmus
> @@ -1,23 +1,35 @@
>  C C-WWC+o+o-data-o+o-addr-o
> 
>  {
> -x=z;
> -b=a;
> +int z = 0;
> +int *x = &z;
> +int u = 0;
> +int *y = &u;
> +int b = 0;
> +int *a = &b;
>  }
> 
> -void P0(int **x)
> +{
> +#include "api.h"
> +}
> +
> +P0(int **x)
>  {
>  	WRITE_ONCE(*x, x);
>  }
> 
> -void P1(int **x, int **y)
> +P1(int **x, int **y)
>  {
> +	int *r1;
> +
>  	r1 = READ_ONCE(*x);
>  	WRITE_ONCE(*y, r1);
>  }
> 
> -void P2(int **x, int **y)
> +P2(int **y, int **a)
>  {
> +	int *r2;
> +
>  	r2 = READ_ONCE(*y);
>  	WRITE_ONCE(*r2, a);
>  }
> diff --git a/CodeSamples/advsync/herd/C-WWC+o+o-r+o-addr-o.litmus b/CodeSamples/advsync/herd/C-WWC+o+o-r+o-addr-o.litmus
> index 5439868..7f47f7a 100644
> --- a/CodeSamples/advsync/herd/C-WWC+o+o-r+o-addr-o.litmus
> +++ b/CodeSamples/advsync/herd/C-WWC+o+o-r+o-addr-o.litmus
> @@ -1,23 +1,35 @@
> -C C-WWC+o+o-data-o+o-addr-o
> +C C-WWC+o+o-r-o+o-addr-o
> 
>  {
> -x=z;
> -b=a;
> +int z = 0;
> +int *x = &z;
> +int u = 0;
> +int *y = &u;
> +int b = 0;
> +int *a = &b;
>  }
> 
> -void P0(int **x)
> +{
> +#include "api.h"
> +}
> +
> +P0(int **x)
>  {
>  	WRITE_ONCE(*x, x);
>  }
> 
> -void P1(int **x, int **y)
> +P1(int **x, int **y)
>  {
> +	int *r1;
> +
>  	r1 = READ_ONCE(*x);
>  	smp_store_release(y, r1);
>  }
> 
> -void P2(int **x, int **y)
> +P2(int **y, int **a)
>  {
> +	int *r2;
> +
>  	r2 = READ_ONCE(*y);
>  	WRITE_ONCE(*r2, a);
>  }
> diff --git a/advsync/memorybarriers.tex b/advsync/memorybarriers.tex
> index fbcd22a..51236c8 100644
> --- a/advsync/memorybarriers.tex
> +++ b/advsync/memorybarriers.tex
> @@ -1311,23 +1311,31 @@ does need to deal with them.
>  C C-WWC+o+o-data-o+o-addr-o
> 
>  {
> -x=z;
> -b=a;
> +int z = 0;
> +int *x = &z;
> +int u = 0;
> +int *y = &u;
> +int b = 0;
> +int *a = &b;
>  }
> 
> -void P0(int **x)
> +P0(int **x)
>  {
>    WRITE_ONCE(*x, x);
>  }
> 
> -void P1(int **x, int **y)
> +P1(int **x, int **y)
>  {
> +  int *r1;
> +
>    r1 = READ_ONCE(*x);
>    WRITE_ONCE(*y, r1);
>  }
> 
> -void P2(int **x, int **y)
> +P2(int **y, int **a)
>  {
> +  int *r2;
> +
>    r2 = READ_ONCE(*y);
>    WRITE_ONCE(*r2, a);
>  }
> @@ -1344,26 +1352,34 @@ exists(1:r1=x /\ 2:r2=x /\ x=x)
>  \begin{listing}[tbp]
>  { \scriptsize
>  \begin{verbbox}[\LstLineNo]
> -C C-WWC+o+o-data-o+o-addr-o
> +C C-WWC+o+o-r-o+o-addr-o
> 
>  {
> -x=z;
> -b=a;
> +int z = 0;
> +int *x = &z;
> +int u = 0;
> +int *y = &u;
> +int b = 0;
> +int *a = &b;
>  }
> 
> -void P0(int **x)
> +P0(int **x)
>  {
>    WRITE_ONCE(*x, x);
>  }
> 
> -void P1(int **x, int **y)
> +P1(int **x, int **y)
>  {
> +  int *r1;
> +
>    r1 = READ_ONCE(*x);
>    smp_store_release(y, r1);
>  }
> 
> -void P2(int **x, int **y)
> +P2(int **y, int **a)
>  {
> +  int *r2;
> +
>    r2 = READ_ONCE(*y);
>    WRITE_ONCE(*r2, a);
>  }
> -- 
> 2.7.4
> 


  reply	other threads:[~2017-08-26  1:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-26  0:07 [PATCH] advsync: Fix litmus tests Akira Yokosawa
2017-08-26  1:59 ` Paul E. McKenney [this message]
2017-08-26  2:47   ` Akira Yokosawa
2017-08-26  4:35     ` 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=20170826015944.GV11320@linux.vnet.ibm.com \
    --to=paulmck@linux.vnet.ibm.com \
    --cc=akiyks@gmail.com \
    --cc=perfbook@vger.kernel.org \
    /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.