From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Pavel Machek <pavel@ucw.cz>, Carlos O'Donell <carlos@redhat.com>,
Florian Weimer <fweimer@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Boqun Feng <boqun.feng@gmail.com>,
Andy Lutomirski <luto@amacapital.net>,
Dave Watson <davejwatson@fb.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-api <linux-api@vger.kernel.org>,
Paul Turner <pjt@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Russell King <linux@arm.linux.org.uk>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Andrew Hunter <ahh@google.com>, Andi Kleen <andi@firstfloor.org>,
Chris Lameter <cl@linux.com>, Ben Maurer <bmaurer@fb.com>,
rostedt <rostedt@goodmis.org>,
Josh Triplett <josh@joshtriplett.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <cata>
Subject: Re: [RFC PATCH for 4.18 00/16] Restartable Sequences
Date: Sat, 28 Jul 2018 09:49:04 -0400 (EDT) [thread overview]
Message-ID: <1210024721.6363.1532785744879.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20180727220115.GA18879@amd>
----- On Jul 27, 2018, at 6:01 PM, Pavel Machek pavel@ucw.cz wrote:
> Hi!
>
>> So for instance, this turns:
>>
>> int cpu = rseq_per_cpu_lock(lock, target_cpu);
>> [...]
>> rseq_per_cpu_unlock(lock, cpu);
>>
>> into
>>
>> int cpu = rseq_this_cpu_lock(lock);
>> [...]
>> rseq_per_cpu_unlock(lock, cpu);
>>
>> and:
>>
>> per_cpu_list_push(list, node, target_cpu);
>> [...]
>> per_cpu_list_pop(list, node, target_cpu);
>>
>> into
>>
>> this_cpu_list_push(list, node, &cpu); /* cpu is an output parameter. */
>> [...]
>> node = this_cpu_list_pop(list, &cpu); /* cpu is an output parameter. */
>>
>> Eventually integrating cpu_opv or some alternative will allow passing
>> the cpu number as parameter rather than requiring the algorithm to work
>> on the current CPU.
>>
>> The second effect of not having the cpu_opv fallback is that
>> line and instruction single-stepping with a debugger transforms rseq
>> critical sections based on retry loops into never-ending loops.
>> Debuggers need to use the __rseq_table section to skip those critical
>> sections in order to correctly behave when single-stepping a thread
>> which uses rseq in a retry loop. However, applications which use an
>> alternative fallback method rather than retrying on rseq fast-path abort
>> won't be affected by this kind of single-stepping issue.
>>
>> Thanks for your feedback!
>
> Would it make sense to include Documentation/ patch? I guess at least
> manpage describing the syscall will be needed....
Hi Pavel,
Documentation-wise, I have posted a rseq man page rfc here:
https://lkml.kernel.org/r/20180616195803.29877-1-mathieu.desnoyers@efficios.com
comments are welcome!
It does not include any details about user-space library APIs though, as
this is not the purpose of the syscall documentation.
We're currently discussing integration of rseq thread registration into
glibc.
Once this is settled, I plan to provide a librseq which will contain headers
and documentation on how to use rseq without having to re-create the low-level
assembly every time.
Does this plan make sense to you ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
WARNING: multiple messages have this Message-ID (diff)
From: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
To: Pavel Machek <pavel@ucw.cz>, Carlos O'Donell <carlos@redhat.com>,
Florian Weimer <fweimer@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>,
"Paul E. McKenney" <paulmck@linux.vnet.ibm.com>,
Boqun Feng <boqun.feng@gmail.com>,
Andy Lutomirski <luto@amacapital.net>,
Dave Watson <davejwatson@fb.com>,
linux-kernel <linux-kernel@vger.kernel.org>,
linux-api <linux-api@vger.kernel.org>,
Paul Turner <pjt@google.com>,
Andrew Morton <akpm@linux-foundation.org>,
Russell King <linux@arm.linux.org.uk>,
Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>,
Andrew Hunter <ahh@google.com>, Andi Kleen <andi@firstfloor.org>,
Chris Lameter <cl@linux.com>, Ben Maurer <bmaurer@fb.com>,
rostedt <rostedt@goodmis.org>,
Josh Triplett <josh@joshtriplett.org>,
Linus Torvalds <torvalds@linux-foundation.org>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Michael Kerrisk <mtk.manpages@gmail.com>,
Joel Fernandes <joelaf@google.com>
Subject: Re: [RFC PATCH for 4.18 00/16] Restartable Sequences
Date: Sat, 28 Jul 2018 09:49:04 -0400 (EDT) [thread overview]
Message-ID: <1210024721.6363.1532785744879.JavaMail.zimbra@efficios.com> (raw)
In-Reply-To: <20180727220115.GA18879@amd>
----- On Jul 27, 2018, at 6:01 PM, Pavel Machek pavel@ucw.cz wrote:
> Hi!
>
>> So for instance, this turns:
>>
>> int cpu = rseq_per_cpu_lock(lock, target_cpu);
>> [...]
>> rseq_per_cpu_unlock(lock, cpu);
>>
>> into
>>
>> int cpu = rseq_this_cpu_lock(lock);
>> [...]
>> rseq_per_cpu_unlock(lock, cpu);
>>
>> and:
>>
>> per_cpu_list_push(list, node, target_cpu);
>> [...]
>> per_cpu_list_pop(list, node, target_cpu);
>>
>> into
>>
>> this_cpu_list_push(list, node, &cpu); /* cpu is an output parameter. */
>> [...]
>> node = this_cpu_list_pop(list, &cpu); /* cpu is an output parameter. */
>>
>> Eventually integrating cpu_opv or some alternative will allow passing
>> the cpu number as parameter rather than requiring the algorithm to work
>> on the current CPU.
>>
>> The second effect of not having the cpu_opv fallback is that
>> line and instruction single-stepping with a debugger transforms rseq
>> critical sections based on retry loops into never-ending loops.
>> Debuggers need to use the __rseq_table section to skip those critical
>> sections in order to correctly behave when single-stepping a thread
>> which uses rseq in a retry loop. However, applications which use an
>> alternative fallback method rather than retrying on rseq fast-path abort
>> won't be affected by this kind of single-stepping issue.
>>
>> Thanks for your feedback!
>
> Would it make sense to include Documentation/ patch? I guess at least
> manpage describing the syscall will be needed....
Hi Pavel,
Documentation-wise, I have posted a rseq man page rfc here:
https://lkml.kernel.org/r/20180616195803.29877-1-mathieu.desnoyers@efficios.com
comments are welcome!
It does not include any details about user-space library APIs though, as
this is not the purpose of the syscall documentation.
We're currently discussing integration of rseq thread registration into
glibc.
Once this is settled, I plan to provide a librseq which will contain headers
and documentation on how to use rseq without having to re-create the low-level
assembly every time.
Does this plan make sense to you ?
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
next prev parent reply other threads:[~2018-07-28 13:49 UTC|newest]
Thread overview: 59+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-02 12:43 [RFC PATCH for 4.18 00/16] Restartable Sequences Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 01/16] uapi headers: Provide types_32_64.h (v2) Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 02/16] rseq: Introduce restartable sequences system call (v13) Mathieu Desnoyers
2018-06-02 12:43 ` Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 03/16] arm: Add restartable sequences support Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 04/16] arm: Add syscall detection for restartable sequences Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 05/16] arm: Wire up restartable sequences system call Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 06/16] x86: Add support for restartable sequences (v2) Mathieu Desnoyers
2018-06-02 12:43 ` [RFC PATCH for 4.18 07/16] x86: Wire up restartable sequence system call Mathieu Desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 08/16] powerpc: Add support for restartable sequences Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 09/16] powerpc: Add syscall detection " Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-05 5:21 ` Michael Ellerman
2018-06-05 5:21 ` Michael Ellerman
2018-06-05 12:50 ` Mathieu Desnoyers
2018-06-05 12:50 ` Mathieu Desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 10/16] powerpc: Wire up restartable sequences system call Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-05 5:18 ` Michael Ellerman
2018-06-05 5:18 ` Michael Ellerman
2018-06-05 12:51 ` Mathieu Desnoyers
2018-06-05 12:51 ` Mathieu Desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 11/16] selftests: lib.mk: Introduce OVERRIDE_TARGETS Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 12/16] rseq: selftests: Provide rseq library (v5) Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 13/16] rseq: selftests: Provide basic test Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 14/16] rseq: selftests: Provide basic percpu ops test (v2) Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 15/16] rseq: selftests: Provide parametrized tests (v2) Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-06-02 12:44 ` [RFC PATCH for 4.18 16/16] rseq: selftests: Provide Makefile, scripts, gitignore (v2) Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` Mathieu Desnoyers
2018-06-02 12:44 ` mathieu.desnoyers
2018-07-27 22:01 ` [RFC PATCH for 4.18 00/16] Restartable Sequences Pavel Machek
2018-07-27 22:01 ` Pavel Machek
2018-07-28 13:49 ` Mathieu Desnoyers [this message]
2018-07-28 13:49 ` Mathieu Desnoyers
2018-07-28 14:13 ` Pavel Machek
2018-07-28 14:13 ` Pavel Machek
2018-07-30 18:42 ` Mathieu Desnoyers
2018-07-30 18:42 ` Mathieu Desnoyers
2018-07-30 19:07 ` Pavel Machek
2018-07-30 19:07 ` Pavel Machek
2018-07-30 19:34 ` Mathieu Desnoyers
2018-07-30 19:34 ` Mathieu Desnoyers
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=1210024721.6363.1532785744879.JavaMail.zimbra@efficios.com \
--to=mathieu.desnoyers@efficios.com \
--cc=ahh@google.com \
--cc=akpm@linux-foundation.org \
--cc=andi@firstfloor.org \
--cc=bmaurer@fb.com \
--cc=boqun.feng@gmail.com \
--cc=carlos@redhat.com \
--cc=cl@linux.com \
--cc=davejwatson@fb.com \
--cc=fweimer@redhat.com \
--cc=hpa@zytor.com \
--cc=josh@joshtriplett.org \
--cc=linux-api@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=luto@amacapital.net \
--cc=mingo@redhat.com \
--cc=paulmck@linux.vnet.ibm.com \
--cc=pavel@ucw.cz \
--cc=peterz@infradead.org \
--cc=pjt@google.com \
--cc=rostedt@goodmis.org \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.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.