Re: [PATCH] advsync: Fix two-CPU control-dependency example

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

 



On 2017/07/16 16:40:28 -0700, Paul E. McKenney wrote:
> On Sun, Jul 16, 2017 at 11:27:58PM +0900, Akira Yokosawa wrote:
>> >From 8996357b6bd21245ef6545fca0c282fb4a31349e Mon Sep 17 00:00:00 2001
>> From: Akira Yokosawa <akiyks@xxxxxxxxx>
>> Date: Sun, 16 Jul 2017 20:33:14 +0900
>> Subject: [PATCH] advsync: Fix two-CPU control-dependency example
>>
>> The two-CPU example always results in r1==0 && r2==0 when the
>> operator ">" is used in the "if" statement.
>> The point of this example is to use control dependency for ordering,
>> and the WRITE_ONCE() should always be executed.
>>
>> So the corresponding example in memory-barriers.txt was correct
>> before commit 5646f7acc95f in Linux kernel repository.
>>
>> Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx>
>> ---
>> Hi Paul,
>>
>> So sounds like you didn't like the previous patch in this thread.
>> I tried to convert the examples to litmus test format,
>> and found out the two-CPU example results in a single outcome.
>>
>> If you prefer these examples to be converted to litmus test format,
>> I can respin these patches and add the tests to CodeSamples.
>> But I need to know what names to use for the tests.
>> Do "C-SB+o-c-o+o-c-o" and "C-WWC+o-c-o+o-c-o+o" work?
>>
>> Or if these changes conflict with your ongoing work, I'll back off.
>>
>> FWIW I've not seen the three-CPU litmus test results in "sometimes",
>> even on PPC. 
> 
> Sorry, I was distracted with C++ standards-committee work, and got
> behind on my email.  No opinion at all on them yet.

I see.

> 
> If these two patches are either-or, I would take the one that matches
> memory-barriers.txt.  Please advise.  ;-)

The 1st one ("advsync: Fix control-dependency no-transitivity example")
is the catchup to memroy-barriers.txt.

As for the 2nd one, would it be better to fix memory-barriers.txt first
if the two-CPU example actually neesd the partial revert? 

> 
> This part of the file is likely to be overwritten at some point, but
> it would be good to remove confusion in the meantime.
> 
> On the PPC end of things, the hardware often has stronger ordering
> than does the architecture.  For example, Power hardware is reluctant
> to reorder later writes wiht earlier reads, despite the fact that
> the architecture allows this.  So it would be good to get some
> tests that actually show reordering on PPC.
> 
> Your names look good, and I would welcome help in converting things
> to litmus tests.  To that end, I have a github archive with lots
> of litmus tests, some manually generated and some automatically
> generated:
> 
> 	https://github.com/paulmckrcu/litmus
> 
> Which reminds me...  Do you have access to a Linux system on which
> you can install kernel modules?

If a virtual guest machine on x86, I should be able to. Does that
suffice?

           Thanks, Akira

>                                 There is a klitmus7 that does that.
> 
> 							Thanx, Paul
> 
>>       Thanks, Akira
>> --
>>  advsync/memorybarriers.tex | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/advsync/memorybarriers.tex b/advsync/memorybarriers.tex
>> index 894de6d..f0ca79d 100644
>> --- a/advsync/memorybarriers.tex
>> +++ b/advsync/memorybarriers.tex
>> @@ -3015,8 +3015,8 @@ of~\co{x} and~\co{y} both being zero:
>>  	\hline
>>  	\tco{r1 = READ_ONCE(x);} &
>>  		\tco{r2 = READ_ONCE(y);} \\
>> -	if (r1 > 0) &
>> -		if (r2 > 0) \\
>> +	if (r1 >= 0) &
>> +		if (r2 >= 0) \\
>>  	~~~\tco{WRITE_ONCE(y, 1);} &
>>  		~~~\tco{WRITE_ONCE(x, 1);} \\
>>  	\multicolumn{2}{l}{~} \\
>> -- 
>> 2.7.4
>>
>>
> 
> 

--
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