From: Steven Rostedt <rostedt@goodmis.org>
To: Peter Zijlstra <peterz@infradead.org>
Cc: "Paul E. McKenney" <paulmck@kernel.org>,
Andrii Nakryiko <andrii.nakryiko@gmail.com>,
Andrii Nakryiko <andrii@kernel.org>,
linux-trace-kernel@vger.kernel.org, mhiramat@kernel.org,
oleg@redhat.com, mingo@redhat.com, bpf@vger.kernel.org,
jolsa@kernel.org, clm@meta.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 00/12] uprobes: add batched register/unregister APIs and per-CPU RW semaphore
Date: Wed, 3 Jul 2024 17:57:54 -0400 [thread overview]
Message-ID: <20240703175754.4c6a7bf1@rorschach.local.home> (raw)
In-Reply-To: <20240703075057.GK11386@noisy.programming.kicks-ass.net>
On Wed, 3 Jul 2024 09:50:57 +0200
Peter Zijlstra <peterz@infradead.org> wrote:
> > However, in the past, the memory-barrier and array-indexing overhead
> > of SRCU has made it a no-go for lightweight probes into fastpath code.
> > And these cases were what motivated RCU Tasks Trace (as opposed to RCU
> > Tasks Rude).
>
> I'm thinking we're growing too many RCU flavours again :/ I suppose I'll
> have to go read up on rcu/tasks.* and see what's what.
This RCU flavor is the one to handle trampolines. If the trampoline
never voluntarily schedules, then the quiescent state is a voluntary
schedule. The issue with trampolines is that if something was preempted
as it was jumping to a trampoline, there's no way to know when it is
safe to free that trampoline, as some preempted task's next instruction
is on that trampoline.
Any trampoline that does not voluntary schedule can use RCU task
synchronization. As it will wait till all tasks have voluntarily
scheduled or have entered user space (IIRC, Paul can correct me if I'm
wrong).
Now, if a trampoline does schedule, it would need to incorporate some
ref counting on the trampoline to handle the scheduling, but could
still use RCU task synchronization up to the point of the ref count.
And yes, the rude flavor was to handle the !rcu_is_watching case, and
can now be removed.
-- Steve
next prev parent reply other threads:[~2024-07-03 21:57 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20240701223935.3783951-1-andrii@kernel.org>
[not found] ` <20240702102353.GG11386@noisy.programming.kicks-ass.net>
2024-07-02 11:54 ` [PATCH v2 00/12] uprobes: add batched register/unregister APIs and per-CPU RW semaphore Peter Zijlstra
2024-07-02 12:01 ` Peter Zijlstra
2024-07-02 17:54 ` Andrii Nakryiko
2024-07-02 19:18 ` Peter Zijlstra
2024-07-02 23:56 ` Paul E. McKenney
2024-07-03 4:54 ` Andrii Nakryiko
2024-07-03 7:50 ` Peter Zijlstra
2024-07-03 14:08 ` Paul E. McKenney
2024-07-04 8:39 ` Peter Zijlstra
2024-07-04 15:13 ` Paul E. McKenney
2024-07-03 21:57 ` Steven Rostedt [this message]
2024-07-03 22:07 ` Paul E. McKenney
2024-07-03 4:47 ` Andrii Nakryiko
2024-07-03 8:07 ` Peter Zijlstra
2024-07-03 20:55 ` Andrii Nakryiko
2024-07-03 21:33 ` Andrii Nakryiko
2024-07-04 9:15 ` Peter Zijlstra
2024-07-04 13:56 ` Steven Rostedt
2024-07-04 15:44 ` Paul E. McKenney
2024-07-08 17:47 ` Andrii Nakryiko
2024-07-08 17:48 ` Andrii Nakryiko
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=20240703175754.4c6a7bf1@rorschach.local.home \
--to=rostedt@goodmis.org \
--cc=andrii.nakryiko@gmail.com \
--cc=andrii@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=clm@meta.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=oleg@redhat.com \
--cc=paulmck@kernel.org \
--cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox