All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] membarrier.2: Update membarrier manpage for 5.10
@ 2020-11-03 19:04 Peter Oskolkov
  2020-11-03 21:01 ` Alejandro Colomar
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Oskolkov @ 2020-11-03 19:04 UTC (permalink / raw)
  To: mtk.manpages, Mathieu Desnoyers
  Cc: Alejandro Colomar, linux-man, Paul E . McKenney, Peter Zijlstra,
	Boqun Feng, Paul Turner, Chris Kennelly, Peter Oskolkov,
	Peter Oskolkov

Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
(part of 5.10 release) changed sys_membarrier prototype/parameters
and added two new commands. This manpages patch reflects these
changes, by mostly copying comments from the kernel patch
into the manpage (I was also the author of the kernel change).
---
 man2/membarrier.2 | 41 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/man2/membarrier.2 b/man2/membarrier.2
index 3064b2d2e..c95e97cb6 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
 .PP
 .B #include <linux/membarrier.h>
 .PP
-.BI "int membarrier(int " cmd ", int " flags ");"
+.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );"
 .fi
 .PP
 .IR Note :
@@ -165,6 +165,29 @@ core command prior to using it.
 Register the process's intent to use
 .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
 .TP
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Ensure the caller thread, upon return from system call, that all its
+running thread siblings have any currently running rseq critical sections
+restarted if
+.I flags
+parameter is 0; if
+.I flags
+parameter is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+then this operation is performed only on CPU indicated by
+.I cpu_id .
+This guarantee is provided only for threads in
+the same process as the calling thread.
+.IP
+RSEQ membarrier is only available in the "private expedited" form.
+.IP
+A process must register its intent to use the private expedited rseq
+command prior to using it.
+.TP
+.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Register the process's intent to use
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
+.TP
 .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
 This is an alias for
 .BR MEMBARRIER_CMD_GLOBAL
@@ -172,7 +195,21 @@ that exists for header backward compatibility.
 .PP
 The
 .I flags
-argument is currently unused and must be specified as 0.
+argument must be specified as 0 unless the command is
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
+in which case
+.I flags
+can be either 0 or
+.BR MEMBARRIER_CMD_FLAG_CPU .
+.PP
+The
+.I cpu_id
+argument is ignored unless
+.I flags
+is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+in which case it must specify the CPU targeted by this membarrier
+command.
 .PP
 All memory accesses performed in program order from each targeted thread
 are guaranteed to be ordered with respect to
-- 
2.29.1.341.ge80a0c044ae-goog


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] membarrier.2: Update membarrier manpage for 5.10
  2020-11-03 19:04 [PATCH] membarrier.2: Update membarrier manpage for 5.10 Peter Oskolkov
@ 2020-11-03 21:01 ` Alejandro Colomar
  2020-11-03 21:13   ` [PATCH 2/1] membarrier.2: Update EXAMPLES for new membarrier() API Alejandro Colomar
  2020-11-04  9:39   ` [PATCH] membarrier.2: Update membarrier manpage for 5.10 Alejandro Colomar
  0 siblings, 2 replies; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-03 21:01 UTC (permalink / raw)
  To: Peter Oskolkov, mtk.manpages
  Cc: Mathieu Desnoyers, linux-man, Paul E . McKenney, Peter Zijlstra,
	Boqun Feng, Paul Turner, Chris Kennelly, Peter Oskolkov

Hi Peter,

It looks very good! Just one typo:

[[
.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );"
]]
should be:
[[
.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
]]

Note the removal of the last '"', which was unpaired.


Thanks,

Alex

On 2020-11-03 20:04, Peter Oskolkov wrote:
> Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
> (part of 5.10 release) changed sys_membarrier prototype/parameters
> and added two new commands. This manpages patch reflects these
> changes, by mostly copying comments from the kernel patch
> into the manpage (I was also the author of the kernel change).
> ---
>   man2/membarrier.2 | 41 +++++++++++++++++++++++++++++++++++++++--
>   1 file changed, 39 insertions(+), 2 deletions(-)
> 
> diff --git a/man2/membarrier.2 b/man2/membarrier.2
> index 3064b2d2e..c95e97cb6 100644
> --- a/man2/membarrier.2
> +++ b/man2/membarrier.2
> @@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
>   .PP
>   .B #include <linux/membarrier.h>
>   .PP
> -.BI "int membarrier(int " cmd ", int " flags ");"
> +.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );"
>   .fi
>   .PP
>   .IR Note :
> @@ -165,6 +165,29 @@ core command prior to using it.
>   Register the process's intent to use
>   .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
>   .TP
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> +Ensure the caller thread, upon return from system call, that all its
> +running thread siblings have any currently running rseq critical sections
> +restarted if
> +.I flags
> +parameter is 0; if
> +.I flags
> +parameter is
> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> +then this operation is performed only on CPU indicated by
> +.I cpu_id .
> +This guarantee is provided only for threads in
> +the same process as the calling thread.
> +.IP
> +RSEQ membarrier is only available in the "private expedited" form.
> +.IP
> +A process must register its intent to use the private expedited rseq
> +command prior to using it.
> +.TP
> +.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> +Register the process's intent to use
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
> +.TP
>   .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
>   This is an alias for
>   .BR MEMBARRIER_CMD_GLOBAL
> @@ -172,7 +195,21 @@ that exists for header backward compatibility.
>   .PP
>   The
>   .I flags
> -argument is currently unused and must be specified as 0.
> +argument must be specified as 0 unless the command is
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
> +in which case
> +.I flags
> +can be either 0 or
> +.BR MEMBARRIER_CMD_FLAG_CPU .
> +.PP
> +The
> +.I cpu_id
> +argument is ignored unless
> +.I flags
> +is
> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> +in which case it must specify the CPU targeted by this membarrier
> +command.
>   .PP
>   All memory accesses performed in program order from each targeted thread
>   are guaranteed to be ordered with respect to
> 

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 2/1] membarrier.2: Update EXAMPLES for new membarrier() API
  2020-11-03 21:01 ` Alejandro Colomar
@ 2020-11-03 21:13   ` Alejandro Colomar
  2020-11-04  9:39   ` [PATCH] membarrier.2: Update membarrier manpage for 5.10 Alejandro Colomar
  1 sibling, 0 replies; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-03 21:13 UTC (permalink / raw)
  To: Michael Kerrisk, Peter Oskolkov, Mathieu Desnoyers
  Cc: Alejandro Colomar, linux-man, Paul E . McKenney, Peter Zijlstra,
	Boqun Feng, Paul Turner, Chris Kennelly, Peter Oskolkov

Fix the EXAMPLES tu use the new interface for the syscall membarrier().
See the previous commit, by Peter Oskolkov.

Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
---

Hi Peter,

I wrote this patch for the EXAMPLES Section to complete yours.

Cheers,

Alex

 man2/membarrier.2 | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/man2/membarrier.2 b/man2/membarrier.2
index c95e97cb6..0251f1477 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -387,9 +387,9 @@ becomes:
 static volatile int a, b;
 
 static int
-membarrier(int cmd, int flags)
+membarrier(int cmd, unsigned int flags, int cpu_id)
 {
-    return syscall(__NR_membarrier, cmd, flags);
+    return syscall(__NR_membarrier, cmd, flags, cpu_id);
 }
 
 static int
@@ -399,7 +399,7 @@ init_membarrier(void)
 
     /* Check that membarrier() is supported. */
 
-    ret = membarrier(MEMBARRIER_CMD_QUERY, 0);
+    ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);
     if (ret < 0) {
         perror("membarrier");
         return \-1;
@@ -426,7 +426,7 @@ static void
 slow_path(int *read_a)
 {
     b = 1;
-    membarrier(MEMBARRIER_CMD_GLOBAL, 0);
+    membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);
     *read_a = a;
 }
 
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH] membarrier.2: Update membarrier manpage for 5.10
  2020-11-03 21:01 ` Alejandro Colomar
  2020-11-03 21:13   ` [PATCH 2/1] membarrier.2: Update EXAMPLES for new membarrier() API Alejandro Colomar
@ 2020-11-04  9:39   ` Alejandro Colomar
  2020-11-04 16:01     ` Peter Oskolkov
  1 sibling, 1 reply; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-04  9:39 UTC (permalink / raw)
  To: Peter Oskolkov, mtk.manpages, Mathieu Desnoyers
  Cc: linux-man, Paul E . McKenney, Peter Zijlstra, Boqun Feng,
	Paul Turner, Chris Kennelly, Peter Oskolkov

Maybe I'd also add a paragraph in VERSIONS, saying there was an old 
version with a different prototype (and maybe show it there).

What do you think about it?

Thanks,

Alex

On 2020-11-03 22:01, Alejandro Colomar wrote:
> Hi Peter,
> 
> It looks very good! Just one typo:
> 
> [[
> .BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );"
> ]]
> should be:
> [[
> .BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
> ]]
> 
> Note the removal of the last '"', which was unpaired.
> 
> 
> Thanks,
> 
> Alex
> 
> On 2020-11-03 20:04, Peter Oskolkov wrote:
>> Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
>> (part of 5.10 release) changed sys_membarrier prototype/parameters
>> and added two new commands. This manpages patch reflects these
>> changes, by mostly copying comments from the kernel patch
>> into the manpage (I was also the author of the kernel change).
>> ---
>>   man2/membarrier.2 | 41 +++++++++++++++++++++++++++++++++++++++--
>>   1 file changed, 39 insertions(+), 2 deletions(-)
>>
>> diff --git a/man2/membarrier.2 b/man2/membarrier.2
>> index 3064b2d2e..c95e97cb6 100644
>> --- a/man2/membarrier.2
>> +++ b/man2/membarrier.2
>> @@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
>>   .PP
>>   .B #include <linux/membarrier.h>
>>   .PP
>> -.BI "int membarrier(int " cmd ", int " flags ");"
>> +.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id 
>> );"
>>   .fi
>>   .PP
>>   .IR Note :
>> @@ -165,6 +165,29 @@ core command prior to using it.
>>   Register the process's intent to use
>>   .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
>>   .TP
>> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
>> +Ensure the caller thread, upon return from system call, that all its
>> +running thread siblings have any currently running rseq critical 
>> sections
>> +restarted if
>> +.I flags
>> +parameter is 0; if
>> +.I flags
>> +parameter is
>> +.BR MEMBARRIER_CMD_FLAG_CPU ,
>> +then this operation is performed only on CPU indicated by
>> +.I cpu_id .
>> +This guarantee is provided only for threads in
>> +the same process as the calling thread.
>> +.IP
>> +RSEQ membarrier is only available in the "private expedited" form.
>> +.IP
>> +A process must register its intent to use the private expedited rseq
>> +command prior to using it.
>> +.TP
>> +.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
>> +Register the process's intent to use
>> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
>> +.TP
>>   .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
>>   This is an alias for
>>   .BR MEMBARRIER_CMD_GLOBAL
>> @@ -172,7 +195,21 @@ that exists for header backward compatibility.
>>   .PP
>>   The
>>   .I flags
>> -argument is currently unused and must be specified as 0.
>> +argument must be specified as 0 unless the command is
>> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
>> +in which case
>> +.I flags
>> +can be either 0 or
>> +.BR MEMBARRIER_CMD_FLAG_CPU .
>> +.PP
>> +The
>> +.I cpu_id
>> +argument is ignored unless
>> +.I flags
>> +is
>> +.BR MEMBARRIER_CMD_FLAG_CPU ,
>> +in which case it must specify the CPU targeted by this membarrier
>> +command.
>>   .PP
>>   All memory accesses performed in program order from each targeted 
>> thread
>>   are guaranteed to be ordered with respect to
>>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH] membarrier.2: Update membarrier manpage for 5.10
  2020-11-04  9:39   ` [PATCH] membarrier.2: Update membarrier manpage for 5.10 Alejandro Colomar
@ 2020-11-04 16:01     ` Peter Oskolkov
  2020-11-04 16:29       ` [PATCH v3] membarrier.2: Update membarrier manual page " Alejandro Colomar
  2020-11-05 11:32       ` [PATCH v4] " Alejandro Colomar
  0 siblings, 2 replies; 10+ messages in thread
From: Peter Oskolkov @ 2020-11-04 16:01 UTC (permalink / raw)
  To: Alejandro Colomar
  Cc: Michael Kerrisk, Mathieu Desnoyers, linux-man, Paul E . McKenney,
	Peter Zijlstra, Boqun Feng, Paul Turner, Chris Kennelly,
	Peter Oskolkov

On Wed, Nov 4, 2020 at 1:39 AM Alejandro Colomar
<colomar.6.4.3@gmail.com> wrote:
>
> Maybe I'd also add a paragraph in VERSIONS, saying there was an old
> version with a different prototype (and maybe show it there).
>
> What do you think about it?

Hi Alex,

I don't mind your re-doing my patch with the typo fix, updated
examples, and the addition to versions. Please
let me know if you would like to do that. If not, I'll send a new
patch with these changes.

Thanks,
Peter

>
> Thanks,
>
> Alex
>
> On 2020-11-03 22:01, Alejandro Colomar wrote:
> > Hi Peter,
> >
> > It looks very good! Just one typo:
> >
> > [[
> > .BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );"
> > ]]
> > should be:
> > [[
> > .BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
> > ]]
> >
> > Note the removal of the last '"', which was unpaired.
> >
> >
> > Thanks,
> >
> > Alex
> >
> > On 2020-11-03 20:04, Peter Oskolkov wrote:
> >> Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
> >> (part of 5.10 release) changed sys_membarrier prototype/parameters
> >> and added two new commands. This manpages patch reflects these
> >> changes, by mostly copying comments from the kernel patch
> >> into the manpage (I was also the author of the kernel change).
> >> ---
> >>   man2/membarrier.2 | 41 +++++++++++++++++++++++++++++++++++++++--
> >>   1 file changed, 39 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/man2/membarrier.2 b/man2/membarrier.2
> >> index 3064b2d2e..c95e97cb6 100644
> >> --- a/man2/membarrier.2
> >> +++ b/man2/membarrier.2
> >> @@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
> >>   .PP
> >>   .B #include <linux/membarrier.h>
> >>   .PP
> >> -.BI "int membarrier(int " cmd ", int " flags ");"
> >> +.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id
> >> );"
> >>   .fi
> >>   .PP
> >>   .IR Note :
> >> @@ -165,6 +165,29 @@ core command prior to using it.
> >>   Register the process's intent to use
> >>   .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
> >>   .TP
> >> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> >> +Ensure the caller thread, upon return from system call, that all its
> >> +running thread siblings have any currently running rseq critical
> >> sections
> >> +restarted if
> >> +.I flags
> >> +parameter is 0; if
> >> +.I flags
> >> +parameter is
> >> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> >> +then this operation is performed only on CPU indicated by
> >> +.I cpu_id .
> >> +This guarantee is provided only for threads in
> >> +the same process as the calling thread.
> >> +.IP
> >> +RSEQ membarrier is only available in the "private expedited" form.
> >> +.IP
> >> +A process must register its intent to use the private expedited rseq
> >> +command prior to using it.
> >> +.TP
> >> +.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> >> +Register the process's intent to use
> >> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
> >> +.TP
> >>   .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
> >>   This is an alias for
> >>   .BR MEMBARRIER_CMD_GLOBAL
> >> @@ -172,7 +195,21 @@ that exists for header backward compatibility.
> >>   .PP
> >>   The
> >>   .I flags
> >> -argument is currently unused and must be specified as 0.
> >> +argument must be specified as 0 unless the command is
> >> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
> >> +in which case
> >> +.I flags
> >> +can be either 0 or
> >> +.BR MEMBARRIER_CMD_FLAG_CPU .
> >> +.PP
> >> +The
> >> +.I cpu_id
> >> +argument is ignored unless
> >> +.I flags
> >> +is
> >> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> >> +in which case it must specify the CPU targeted by this membarrier
> >> +command.
> >>   .PP
> >>   All memory accesses performed in program order from each targeted
> >> thread
> >>   are guaranteed to be ordered with respect to
> >>

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v3] membarrier.2: Update membarrier manual page for 5.10
  2020-11-04 16:01     ` Peter Oskolkov
@ 2020-11-04 16:29       ` Alejandro Colomar
  2020-11-04 16:42         ` Peter Oskolkov
  2020-11-05 11:32       ` [PATCH v4] " Alejandro Colomar
  1 sibling, 1 reply; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-04 16:29 UTC (permalink / raw)
  To: Michael Kerrisk, Peter Oskolkov
  Cc: linux-man, Mathieu Desnoyers, Paul E . McKenney, Peter Zijlstra,
	Boqun Feng, Paul Turner, Chris Kennelly, Peter Oskolkov,
	Alejandro Colomar

From: Peter Oskolkov <posk@google.com>

Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
(part of 5.10 release) changed sys_membarrier prototype/parameters
and added two new commands. This manpages patch reflects these
changes, by mostly copying comments from the kernel patch
into the manpage (I was also the author of the kernel change).

Signed-off-by: Peter Oskolkov <posk@google.com>
Co-developed-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
---


On 2020-11-04 17:01, Peter Oskolkov wrote:
> On Wed, Nov 4, 2020 at 1:39 AM Alejandro Colomar
> <colomar.6.4.3@gmail.com> wrote:
>>
>> Maybe I'd also add a paragraph in VERSIONS, saying there was an old
>> version with a different prototype (and maybe show it there).
>>
>> What do you think about it?
>
> Hi Alex,
>
> I don't mind your re-doing my patch with the typo fix, updated
> examples, and the addition to versions. Please
> let me know if you would like to do that. If not, I'll send a new
> patch with these changes.
>
> Thanks,
> Peter

Hi Peter,

I added those changes to the patch,
and added a signed-off-by on your behalf.
I think it's ready right now.

Cheers,

Alex


 man2/membarrier.2 | 60 +++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 53 insertions(+), 7 deletions(-)

diff --git a/man2/membarrier.2 b/man2/membarrier.2
index 3064b2d2e..775a399b0 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
 .PP
 .B #include <linux/membarrier.h>
 .PP
-.BI "int membarrier(int " cmd ", int " flags ");"
+.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
 .fi
 .PP
 .IR Note :
@@ -165,6 +165,29 @@ core command prior to using it.
 Register the process's intent to use
 .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
 .TP
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Ensure the caller thread, upon return from system call, that all its
+running thread siblings have any currently running rseq critical sections
+restarted if
+.I flags
+parameter is 0; if
+.I flags
+parameter is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+then this operation is performed only on CPU indicated by
+.I cpu_id .
+This guarantee is provided only for threads in
+the same process as the calling thread.
+.IP
+RSEQ membarrier is only available in the "private expedited" form.
+.IP
+A process must register its intent to use the private expedited rseq
+command prior to using it.
+.TP
+.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Register the process's intent to use
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
+.TP
 .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
 This is an alias for
 .BR MEMBARRIER_CMD_GLOBAL
@@ -172,7 +195,21 @@ that exists for header backward compatibility.
 .PP
 The
 .I flags
-argument is currently unused and must be specified as 0.
+argument must be specified as 0 unless the command is
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
+in which case
+.I flags
+can be either 0 or
+.BR MEMBARRIER_CMD_FLAG_CPU .
+.PP
+The
+.I cpu_id
+argument is ignored unless
+.I flags
+is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+in which case it must specify the CPU targeted by this membarrier
+command.
 .PP
 All memory accesses performed in program order from each targeted thread
 are guaranteed to be ordered with respect to
@@ -251,7 +288,16 @@ commands.
 The
 .BR membarrier ()
 system call was added in Linux 4.3.
-.\"
+.PP
+Before Linux 5.10, the prototype for
+.BR membarrier ()
+was:
+.PP
+.in +4n
+.EX
+.BI "int membarrier(int " cmd ", int " flags );
+.EE
+.in
 .SH CONFORMING TO
 .BR membarrier ()
 is Linux-specific.
@@ -350,9 +396,9 @@ becomes:
 static volatile int a, b;
 
 static int
-membarrier(int cmd, int flags)
+membarrier(int cmd, unsigned int flags, int cpu_id)
 {
-    return syscall(__NR_membarrier, cmd, flags);
+    return syscall(__NR_membarrier, cmd, flags, cpu_id);
 }
 
 static int
@@ -362,7 +408,7 @@ init_membarrier(void)
 
     /* Check that membarrier() is supported. */
 
-    ret = membarrier(MEMBARRIER_CMD_QUERY, 0);
+    ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);
     if (ret < 0) {
         perror("membarrier");
         return \-1;
@@ -389,7 +435,7 @@ static void
 slow_path(int *read_a)
 {
     b = 1;
-    membarrier(MEMBARRIER_CMD_GLOBAL, 0);
+    membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);
     *read_a = a;
 }
 
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] membarrier.2: Update membarrier manual page for 5.10
  2020-11-04 16:29       ` [PATCH v3] membarrier.2: Update membarrier manual page " Alejandro Colomar
@ 2020-11-04 16:42         ` Peter Oskolkov
  2020-11-04 22:04           ` Alejandro Colomar
  0 siblings, 1 reply; 10+ messages in thread
From: Peter Oskolkov @ 2020-11-04 16:42 UTC (permalink / raw)
  To: Alejandro Colomar
  Cc: Michael Kerrisk, linux-man, Mathieu Desnoyers, Paul E . McKenney,
	Peter Zijlstra, Boqun Feng, Paul Turner, Chris Kennelly,
	Peter Oskolkov

On Wed, Nov 4, 2020 at 8:30 AM Alejandro Colomar
<colomar.6.4.3@gmail.com> wrote:
>
[...]
>
> Hi Peter,
>
> I added those changes to the patch,
> and added a signed-off-by on your behalf.
> I think it's ready right now.
[...]

Hi Alex,

Thanks a lot for your help! This looks good to me.

Thanks,
Peter

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH v3] membarrier.2: Update membarrier manual page for 5.10
  2020-11-04 16:42         ` Peter Oskolkov
@ 2020-11-04 22:04           ` Alejandro Colomar
  0 siblings, 0 replies; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-04 22:04 UTC (permalink / raw)
  To: Peter Oskolkov
  Cc: Michael Kerrisk, linux-man, Mathieu Desnoyers, Paul E . McKenney,
	Peter Zijlstra, Boqun Feng, Paul Turner, Chris Kennelly,
	Peter Oskolkov


> Hi Alex,
> 
> Thanks a lot for your help! This looks good to me.
> 
> Thanks,
> Peter
> 

Hey Peter,

You're welcome! And thank you too! :)

Cheers,

Alex

^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH v4] membarrier.2: Update membarrier manual page for 5.10
  2020-11-04 16:01     ` Peter Oskolkov
  2020-11-04 16:29       ` [PATCH v3] membarrier.2: Update membarrier manual page " Alejandro Colomar
@ 2020-11-05 11:32       ` Alejandro Colomar
  2020-11-05 12:04         ` Michael Kerrisk (man-pages)
  1 sibling, 1 reply; 10+ messages in thread
From: Alejandro Colomar @ 2020-11-05 11:32 UTC (permalink / raw)
  To: Michael Kerrisk, Peter Oskolkov
  Cc: linux-man, Mathieu Desnoyers, Paul E . McKenney, Peter Zijlstra,
	Boqun Feng, Paul Turner, Chris Kennelly, Peter Oskolkov,
	Alejandro Colomar

From: Peter Oskolkov <posk@google.com>

Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
(part of 5.10 release) changed sys_membarrier prototype/parameters
and added two new commands. This manpages patch reflects these
changes, by mostly copying comments from the kernel patch
into the manpage (I was also the author of the kernel change).

Signed-off-by: Peter Oskolkov <posk@google.com>
Co-developed-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
---

v4 fixes a typo.


 man2/membarrier.2 | 60 +++++++++++++++++++++++++++++++++++++++++------
 1 file changed, 53 insertions(+), 7 deletions(-)

diff --git a/man2/membarrier.2 b/man2/membarrier.2
index 3064b2d2e..775a399b0 100644
--- a/man2/membarrier.2
+++ b/man2/membarrier.2
@@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
 .PP
 .B #include <linux/membarrier.h>
 .PP
-.BI "int membarrier(int " cmd ", int " flags ");"
+.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
 .fi
 .PP
 .IR Note :
@@ -165,6 +165,29 @@ core command prior to using it.
 Register the process's intent to use
 .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
 .TP
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Ensure the caller thread, upon return from system call, that all its
+running thread siblings have any currently running rseq critical sections
+restarted if
+.I flags
+parameter is 0; if
+.I flags
+parameter is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+then this operation is performed only on CPU indicated by
+.IR cpu_id .
+This guarantee is provided only for threads in
+the same process as the calling thread.
+.IP
+RSEQ membarrier is only available in the "private expedited" form.
+.IP
+A process must register its intent to use the private expedited rseq
+command prior to using it.
+.TP
+.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
+Register the process's intent to use
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
+.TP
 .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
 This is an alias for
 .BR MEMBARRIER_CMD_GLOBAL
@@ -172,7 +195,21 @@ that exists for header backward compatibility.
 .PP
 The
 .I flags
-argument is currently unused and must be specified as 0.
+argument must be specified as 0 unless the command is
+.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
+in which case
+.I flags
+can be either 0 or
+.BR MEMBARRIER_CMD_FLAG_CPU .
+.PP
+The
+.I cpu_id
+argument is ignored unless
+.I flags
+is
+.BR MEMBARRIER_CMD_FLAG_CPU ,
+in which case it must specify the CPU targeted by this membarrier
+command.
 .PP
 All memory accesses performed in program order from each targeted thread
 are guaranteed to be ordered with respect to
@@ -251,7 +288,16 @@ commands.
 The
 .BR membarrier ()
 system call was added in Linux 4.3.
-.\"
+.PP
+Before Linux 5.10, the prototype for
+.BR membarrier ()
+was:
+.PP
+.in +4n
+.EX
+.BI "int membarrier(int " cmd ", int " flags );
+.EE
+.in
 .SH CONFORMING TO
 .BR membarrier ()
 is Linux-specific.
@@ -350,9 +396,9 @@ becomes:
 static volatile int a, b;
 
 static int
-membarrier(int cmd, int flags)
+membarrier(int cmd, unsigned int flags, int cpu_id)
 {
-    return syscall(__NR_membarrier, cmd, flags);
+    return syscall(__NR_membarrier, cmd, flags, cpu_id);
 }
 
 static int
@@ -362,7 +408,7 @@ init_membarrier(void)
 
     /* Check that membarrier() is supported. */
 
-    ret = membarrier(MEMBARRIER_CMD_QUERY, 0);
+    ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);
     if (ret < 0) {
         perror("membarrier");
         return \-1;
@@ -389,7 +435,7 @@ static void
 slow_path(int *read_a)
 {
     b = 1;
-    membarrier(MEMBARRIER_CMD_GLOBAL, 0);
+    membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);
     *read_a = a;
 }
 
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH v4] membarrier.2: Update membarrier manual page for 5.10
  2020-11-05 11:32       ` [PATCH v4] " Alejandro Colomar
@ 2020-11-05 12:04         ` Michael Kerrisk (man-pages)
  0 siblings, 0 replies; 10+ messages in thread
From: Michael Kerrisk (man-pages) @ 2020-11-05 12:04 UTC (permalink / raw)
  To: Alejandro Colomar, Peter Oskolkov
  Cc: mtk.manpages, linux-man, Mathieu Desnoyers, Paul E . McKenney,
	Peter Zijlstra, Boqun Feng, Paul Turner, Chris Kennelly,
	Peter Oskolkov

Hello Peter and Alex,

On 11/5/20 12:32 PM, Alejandro Colomar wrote:
> From: Peter Oskolkov <posk@google.com>
> 
> Linux kernel commit 2a36ab717e8fe678d98f81c14a0b124712719840
> (part of 5.10 release) changed sys_membarrier prototype/parameters
> and added two new commands. This manpages patch reflects these
> changes, by mostly copying comments from the kernel patch
> into the manpage (I was also the author of the kernel change).

Thanks for this patch! And adding that last detail in the commit
message saves me some time, so thanks for noting you are the
author of the code also.

Alex, thanks for the additional work on the patch!

Patch applied.

Cheers,

Michael

> 
> Signed-off-by: Peter Oskolkov <posk@google.com>
> Co-developed-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
> Signed-off-by: Alejandro Colomar <colomar.6.4.3@gmail.com>
> ---
> 
> v4 fixes a typo.
> 
> 
>  man2/membarrier.2 | 60 +++++++++++++++++++++++++++++++++++++++++------
>  1 file changed, 53 insertions(+), 7 deletions(-)
> 
> diff --git a/man2/membarrier.2 b/man2/membarrier.2
> index 3064b2d2e..775a399b0 100644
> --- a/man2/membarrier.2
> +++ b/man2/membarrier.2
> @@ -30,7 +30,7 @@ membarrier \- issue memory barriers on a set of threads
>  .PP
>  .B #include <linux/membarrier.h>
>  .PP
> -.BI "int membarrier(int " cmd ", int " flags ");"
> +.BI "int membarrier(int " cmd ", unsigned int " flags ", int " cpu_id );
>  .fi
>  .PP
>  .IR Note :
> @@ -165,6 +165,29 @@ core command prior to using it.
>  Register the process's intent to use
>  .BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE .
>  .TP
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> +Ensure the caller thread, upon return from system call, that all its
> +running thread siblings have any currently running rseq critical sections
> +restarted if
> +.I flags
> +parameter is 0; if
> +.I flags
> +parameter is
> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> +then this operation is performed only on CPU indicated by
> +.IR cpu_id .
> +This guarantee is provided only for threads in
> +the same process as the calling thread.
> +.IP
> +RSEQ membarrier is only available in the "private expedited" form.
> +.IP
> +A process must register its intent to use the private expedited rseq
> +command prior to using it.
> +.TP
> +.BR MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_RSEQ " (since Linux 5.10)"
> +Register the process's intent to use
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ .
> +.TP
>  .BR MEMBARRIER_CMD_SHARED " (since Linux 4.3)"
>  This is an alias for
>  .BR MEMBARRIER_CMD_GLOBAL
> @@ -172,7 +195,21 @@ that exists for header backward compatibility.
>  .PP
>  The
>  .I flags
> -argument is currently unused and must be specified as 0.
> +argument must be specified as 0 unless the command is
> +.BR MEMBARRIER_CMD_PRIVATE_EXPEDITED_RSEQ ,
> +in which case
> +.I flags
> +can be either 0 or
> +.BR MEMBARRIER_CMD_FLAG_CPU .
> +.PP
> +The
> +.I cpu_id
> +argument is ignored unless
> +.I flags
> +is
> +.BR MEMBARRIER_CMD_FLAG_CPU ,
> +in which case it must specify the CPU targeted by this membarrier
> +command.
>  .PP
>  All memory accesses performed in program order from each targeted thread
>  are guaranteed to be ordered with respect to
> @@ -251,7 +288,16 @@ commands.
>  The
>  .BR membarrier ()
>  system call was added in Linux 4.3.
> -.\"
> +.PP
> +Before Linux 5.10, the prototype for
> +.BR membarrier ()
> +was:
> +.PP
> +.in +4n
> +.EX
> +.BI "int membarrier(int " cmd ", int " flags );
> +.EE
> +.in
>  .SH CONFORMING TO
>  .BR membarrier ()
>  is Linux-specific.
> @@ -350,9 +396,9 @@ becomes:
>  static volatile int a, b;
>  
>  static int
> -membarrier(int cmd, int flags)
> +membarrier(int cmd, unsigned int flags, int cpu_id)
>  {
> -    return syscall(__NR_membarrier, cmd, flags);
> +    return syscall(__NR_membarrier, cmd, flags, cpu_id);
>  }
>  
>  static int
> @@ -362,7 +408,7 @@ init_membarrier(void)
>  
>      /* Check that membarrier() is supported. */
>  
> -    ret = membarrier(MEMBARRIER_CMD_QUERY, 0);
> +    ret = membarrier(MEMBARRIER_CMD_QUERY, 0, 0);
>      if (ret < 0) {
>          perror("membarrier");
>          return \-1;
> @@ -389,7 +435,7 @@ static void
>  slow_path(int *read_a)
>  {
>      b = 1;
> -    membarrier(MEMBARRIER_CMD_GLOBAL, 0);
> +    membarrier(MEMBARRIER_CMD_GLOBAL, 0, 0);
>      *read_a = a;
>  }
>  
> 


-- 
Michael Kerrisk
Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
Linux/UNIX System Programming Training: http://man7.org/training/

^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-11-05 12:04 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-03 19:04 [PATCH] membarrier.2: Update membarrier manpage for 5.10 Peter Oskolkov
2020-11-03 21:01 ` Alejandro Colomar
2020-11-03 21:13   ` [PATCH 2/1] membarrier.2: Update EXAMPLES for new membarrier() API Alejandro Colomar
2020-11-04  9:39   ` [PATCH] membarrier.2: Update membarrier manpage for 5.10 Alejandro Colomar
2020-11-04 16:01     ` Peter Oskolkov
2020-11-04 16:29       ` [PATCH v3] membarrier.2: Update membarrier manual page " Alejandro Colomar
2020-11-04 16:42         ` Peter Oskolkov
2020-11-04 22:04           ` Alejandro Colomar
2020-11-05 11:32       ` [PATCH v4] " Alejandro Colomar
2020-11-05 12:04         ` Michael Kerrisk (man-pages)

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.