Re: [PATCH] advsync: Fix store-buffering sequence table

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

 



On 2017/07/06 7:40 +0900, Akira Yokosawa wrote:
> On 2017/07/06 7:32, Paul E. McKenney wrote:
>> On Thu, Jul 06, 2017 at 07:15:24AM +0900, Akira Yokosawa wrote:
>>> On 2017/07/05 10:32:49 -0700, Paul E. McKenney wrote:
>>
>> [ . . . ]
>>
>>>>>> So I cannot go with "volatile", but let's see if I can do something
>>>>>> better than the gcc intrinsics.
>>>>>
>>>>> And if the litmus7 guys don't have anything for me, I can always write a
>>>>> script to do the conversions.  So either way, we will have kernel-style
>>>>> notation at some point.  ;-)
>>>>
>>>> And it turns out that the contents of a second "{}" in a litmus7 test
>>>> is pulled directly into the output code, so an easy change.  ;-)
>>>
>>> Good news!
>>>
>>> So __atomic_thread_fence() will also be replaced with smp_mb() in
>>> the litmus tests? That will reduce the width of the tables and eliminate
>>> the need for the hspece adjustments in one-column layout.
>>
>> Oops, I forgot to push!  Done now.
>>
>> And yes, there is now smp_mb() in the litmus tests and the tables.
> 
> I'll take a look later.
> As I mentioned earlier, __atomic_load_n() and __atomic_store_n() seem
> to have fairly large overheads (on x86). You might want to see the changes
> in the resulting statistics and reflect them in the text.

Hi Paul,

The definition of READ_ONCE() and WRITE_ONCE() given in the updated litmus
tests is inconsistent with kernel API. They are accepting pointers such
as x0 and x1.

In the article at LWN (https://lwn.net/Articles/720550/), litmus tests use the
same definition as kernel API. They take the value expression such as *x0 and *x1.

My preference is to accept pointers as arguments as is the way in C functions,
but the kernel community have chosen otherwise. We should be consist here.

So the definition should be:

---
#define READ_ONCE(x) __atomic_load_n(&(x), __ATOMIC_RELAXED)
#define WRITE_ONCE(x, v) __atomic_store_n(&(x), (v), __ATOMIC_RELAXED)
#define smp_mb() __atomic_thread_fence(__ATOMIC_SEQ_CST)
---

Or am I misreading?

                Thanks, akira

> 
>           Thanks, Akira
> 
>>
>> 							Thanx, Paul
>>
>>
> 
> 

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