* [PATCH 0/7] Miscellaneous RCU changes for v7.2
@ 2026-05-07 17:09 Paul E. McKenney
2026-05-07 17:09 ` [PATCH 1/7] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
` (8 more replies)
0 siblings, 9 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt
Hello!
This series contains miscellaneous RCU updates for v7.2:
1. Don't queue workqueue handlers to never-online CPUs.
2. Fix kerneldoc header comment typo in srcu_down_read_fast().
3. Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace().
4. Mark rcu_read_lock_tasks_trace() and friend BPF-only.
5. Simplify rcu_do_batch() by applying clamp().
6. Simplify param_set_next_fqs_jiffies() by applying clamp_val().
7. Document rcu_access_pointer() feeding into cmpxchg().
Thanx, Paul
------------------------------------------------------------------------
b/include/linux/rcupdate.h | 12 +++++++-----
b/include/linux/srcu.h | 2 +-
b/kernel/rcu/srcutree.c | 12 ++++++------
b/kernel/rcu/tree.c | 2 +-
b/scripts/checkpatch.pl | 2 --
kernel/rcu/tree.c | 2 +-
scripts/checkpatch.pl | 3 +++
7 files changed, 19 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH 1/7] srcu: Don't queue workqueue handlers to never-online CPUs
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 2/7] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
` (7 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Vasily Gorbik, Samir, Shrikanth Hegde, Tejun Heo
While an srcu_struct structure is in the midst of switching from CPU-0
to all-CPUs state, it can attempt to invoke callbacks for CPUs that
have never been online. Worse yet, it can attempt in invoke callbacks
for CPUs that never will be online, even including imaginary CPUs not in
cpu_possible_mask. This can cause hangs on s390, which is not set up to
deal with workqueue handlers being scheduled on such CPUs. This commit
therefore causes Tree SRCU to refrain from queueing workqueue handlers
on CPUs that have not yet (and might never) come online.
Because callbacks are not invoked on CPUs that have not been
online, it is an error to invoke call_srcu(), synchronize_srcu(), or
synchronize_srcu_expedited() on a CPU that is not yet fully online.
However, it turns out to be less code to redirect the callbacks
from too-early invocations of call_srcu() than to warn about such
invocations. This commit therefore also redirects callbacks queued on
not-yet-fully-online CPUs to the boot CPU.
Reported-by: Vasily Gorbik <gor@linux.ibm.com>
Fixes: 61bbcfb50514 ("srcu: Push srcu_node allocation to GP when non-preemptible")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Tested-by: Vasily Gorbik <gor@linux.ibm.com>
Tested-by: Samir <samir@linux.ibm.com>
Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
---
kernel/rcu/srcutree.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
index 0d01cd8c4b4a7b..7c2f7cc131f7ae 100644
--- a/kernel/rcu/srcutree.c
+++ b/kernel/rcu/srcutree.c
@@ -897,11 +897,9 @@ static void srcu_schedule_cbs_snp(struct srcu_struct *ssp, struct srcu_node *snp
{
int cpu;
- for (cpu = snp->grplo; cpu <= snp->grphi; cpu++) {
- if (!(mask & (1UL << (cpu - snp->grplo))))
- continue;
- srcu_schedule_cbs_sdp(per_cpu_ptr(ssp->sda, cpu), delay);
- }
+ for (cpu = snp->grplo; cpu <= snp->grphi; cpu++)
+ if ((mask & (1UL << (cpu - snp->grplo))) && rcu_cpu_beenfullyonline(cpu))
+ srcu_schedule_cbs_sdp(per_cpu_ptr(ssp->sda, cpu), delay);
}
/*
@@ -1322,7 +1320,9 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
*/
idx = __srcu_read_lock_nmisafe(ssp);
ss_state = smp_load_acquire(&ssp->srcu_sup->srcu_size_state);
- if (ss_state < SRCU_SIZE_WAIT_CALL)
+ // If !rcu_cpu_beenfullyonline(), interrupts are still disabled,
+ // so no migration is possible in either direction from this CPU.
+ if (ss_state < SRCU_SIZE_WAIT_CALL || !rcu_cpu_beenfullyonline(raw_smp_processor_id()))
sdp = per_cpu_ptr(ssp->sda, get_boot_cpu_id());
else
sdp = raw_cpu_ptr(ssp->sda);
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 2/7] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast()
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
2026-05-07 17:09 ` [PATCH 1/7] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
` (6 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
s/srcu_read_lock_safe()/srcu_read_lock_fast_updown(), there being no
such thing as srcu_read_lock_safe().
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
include/linux/srcu.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index 81b1938512d5d1..a54ce9e808b92c 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -397,7 +397,7 @@ static inline struct srcu_ctr __percpu *srcu_read_lock_fast_notrace(struct srcu_
*
* The same srcu_struct may be used concurrently by srcu_down_read_fast()
* and srcu_read_lock_fast(). However, the same definition/initialization
- * requirements called out for srcu_read_lock_safe() apply.
+ * requirements called out for srcu_read_lock_fast_updown() apply.
*/
static inline struct srcu_ctr __percpu *srcu_down_read_fast(struct srcu_struct *ssp) __acquires_shared(ssp)
{
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace()
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
2026-05-07 17:09 ` [PATCH 1/7] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
2026-05-07 17:09 ` [PATCH 2/7] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:44 ` Joe Perches
2026-05-07 17:09 ` [PATCH 4/7] checkpatch: Mark rcu_read_lock_tasks_trace() and friend BPF-only Paul E. McKenney
` (5 subsequent siblings)
8 siblings, 1 reply; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Puranjay Mohan, Andy Whitcroft, Joe Perches, Dwaipayan Ray,
Lukas Bulwahn
It turns out that there are BPF use cases that rely on nesting RCU
Tasks Trace readers. These use cases are well-served by the old
rcu_read_lock_trace() and rcu_read_unlock_trace() functions that maintain
a nesting counter in the task_struct structure. But these use cases incur
a performance penalty when using the shiny new rcu_read_lock_tasks_trace()
and rcu_read_unlock_tasks_trace() functions, which nest in the same way
that SRCU does.
This means that rcu_read_lock_trace() and rcu_read_unlock_trace()
will be with us for some time. Therefore, remove the checkpatch.pl
deprecation.
Reported-by: Puranjay Mohan <puranjay@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
---
scripts/checkpatch.pl | 2 --
1 file changed, 2 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 0492d6afc9a1fc..7a0aa139a2424a 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -865,8 +865,6 @@ our %deprecated_apis = (
"DEFINE_IDR" => "DEFINE_XARRAY",
"idr_init" => "xa_init",
"idr_init_base" => "xa_init_flags",
- "rcu_read_lock_trace" => "rcu_read_lock_tasks_trace",
- "rcu_read_unlock_trace" => "rcu_read_unlock_tasks_trace",
);
#Create a search pattern for all these strings to speed up a loop below
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 4/7] checkpatch: Mark rcu_read_lock_tasks_trace() and friend BPF-only
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (2 preceding siblings ...)
2026-05-07 17:09 ` [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 5/7] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
` (4 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Andy Whitcroft, Joe Perches, Dwaipayan Ray, Lukas Bulwahn
The rcu_read_lock_tasks_trace() and rcu_read_unlock_tasks_trace()
functions are intended for use only by BPF. Therefore, add them to
the list of functions that checkpatch complains about outside of BPF
(and of course, RCU).
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
---
scripts/checkpatch.pl | 3 +++
1 file changed, 3 insertions(+)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 7a0aa139a2424a..cc5bbd70cb843e 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -7594,12 +7594,15 @@ sub process {
# Complain about RCU Tasks Trace used outside of BPF (and of course, RCU).
our $rcu_trace_funcs = qr{(?x:
+ rcu_read_lock_tasks_trace |
rcu_read_lock_trace |
rcu_read_lock_trace_held |
rcu_read_unlock_trace |
+ rcu_read_unlock_tasks_trace |
call_rcu_tasks_trace |
synchronize_rcu_tasks_trace |
rcu_barrier_tasks_trace |
+ rcu_tasks_trace_expedite_current |
rcu_request_urgent_qs_task
)};
our $rcu_trace_paths = qr{(?x:
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 5/7] rcu: Simplify rcu_do_batch() by applying clamp()
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (3 preceding siblings ...)
2026-05-07 17:09 ` [PATCH 4/7] checkpatch: Mark rcu_read_lock_tasks_trace() and friend BPF-only Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 6/7] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
` (3 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
This commit replaces a nested ?: sequence with clamp(). This does not
reduce the number of lines of code, but it does simplify the line that
it modifies.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 55df6d37145e87..e46a5124c3eb88 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2584,7 +2584,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
const long npj = NSEC_PER_SEC / HZ;
long rrn = READ_ONCE(rcu_resched_ns);
- rrn = rrn < NSEC_PER_MSEC ? NSEC_PER_MSEC : rrn > NSEC_PER_SEC ? NSEC_PER_SEC : rrn;
+ rrn = clamp(rrn, NSEC_PER_MSEC, NSEC_PER_SEC);
tlimit = local_clock() + rrn;
jlimit = jiffies + (rrn + npj + 1) / npj;
jlimit_check = true;
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 6/7] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val()
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (4 preceding siblings ...)
2026-05-07 17:09 ` [PATCH 5/7] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 7/7] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
` (2 subsequent siblings)
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
This commit replaces a nested ?: sequence with clamp_val(). This does
not reduce the number of lines of code, but it does simplify the line
that it modifies.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index e46a5124c3eb88..09f0cef5014c7c 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -492,7 +492,7 @@ static int param_set_next_fqs_jiffies(const char *val, const struct kernel_param
int ret = kstrtoul(val, 0, &j);
if (!ret) {
- WRITE_ONCE(*(ulong *)kp->arg, (j > HZ) ? HZ : (j ?: 1));
+ WRITE_ONCE(*(ulong *)kp->arg, clamp_val(j, 1, HZ));
adjust_jiffies_till_sched_qs();
}
return ret;
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH 7/7] rcu: Document rcu_access_pointer() feeding into cmpxchg()
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (5 preceding siblings ...)
2026-05-07 17:09 ` [PATCH 6/7] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
@ 2026-05-07 17:09 ` Paul E. McKenney
2026-05-08 17:06 ` [PATCH 0/7] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
8 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:09 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Maxim Mikityanskiy
This commit documents the rcu_access_pointer() use case for fetching the
old value of an RCU-protected pointer within a lockless updater for use
by an atomic cmpxchg() operation.
Reported-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
include/linux/rcupdate.h | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index bfa765132de858..5e95acc33989b6 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -592,11 +592,13 @@ context_unsafe( \
* lockdep checks for being in an RCU read-side critical section. This is
* useful when the value of this pointer is accessed, but the pointer is
* not dereferenced, for example, when testing an RCU-protected pointer
- * against NULL. Although rcu_access_pointer() may also be used in cases
- * where update-side locks prevent the value of the pointer from changing,
- * you should instead use rcu_dereference_protected() for this use case.
- * Within an RCU read-side critical section, there is little reason to
- * use rcu_access_pointer().
+ * against NULL. Within an RCU read-side critical section, there is little
+ * reason to use rcu_access_pointer(). Although rcu_access_pointer() may
+ * also be used in cases where update-side locks prevent the value of the
+ * pointer from changing, you should instead use rcu_dereference_protected()
+ * for this use case. It is also permissible to use rcu_access_pointer()
+ * within lockless updaters to obtain the old value for an atomic operation,
+ * for example, for cmpxchg().
*
* It is usually best to test the rcu_access_pointer() return value
* directly in order to avoid accidental dereferences being introduced
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace()
2026-05-07 17:09 ` [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
@ 2026-05-07 17:44 ` Joe Perches
2026-05-07 17:53 ` Paul E. McKenney
0 siblings, 1 reply; 20+ messages in thread
From: Joe Perches @ 2026-05-07 17:44 UTC (permalink / raw)
To: Paul E. McKenney, rcu
Cc: linux-kernel, kernel-team, rostedt, Puranjay Mohan,
Andy Whitcroft, Dwaipayan Ray, Lukas Bulwahn
On Thu, 2026-05-07 at 10:09 -0700, Paul E. McKenney wrote:
> It turns out that there are BPF use cases that rely on nesting RCU
> Tasks Trace readers. These use cases are well-served by the old
> rcu_read_lock_trace() and rcu_read_unlock_trace() functions that maintain
> a nesting counter in the task_struct structure. But these use cases incur
> a performance penalty when using the shiny new rcu_read_lock_tasks_trace()
> and rcu_read_unlock_tasks_trace() functions, which nest in the same way
> that SRCU does.
>
> This means that rcu_read_lock_trace() and rcu_read_unlock_trace()
> will be with us for some time. Therefore, remove the checkpatch.pl
> deprecation.
Fine by me.
Perhaps combining patches 3 and 4 would be more intelligible.
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace()
2026-05-07 17:44 ` Joe Perches
@ 2026-05-07 17:53 ` Paul E. McKenney
0 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-07 17:53 UTC (permalink / raw)
To: Joe Perches
Cc: rcu, linux-kernel, kernel-team, rostedt, Puranjay Mohan,
Andy Whitcroft, Dwaipayan Ray, Lukas Bulwahn
On Thu, May 07, 2026 at 10:44:39AM -0700, Joe Perches wrote:
> On Thu, 2026-05-07 at 10:09 -0700, Paul E. McKenney wrote:
> > It turns out that there are BPF use cases that rely on nesting RCU
> > Tasks Trace readers. These use cases are well-served by the old
> > rcu_read_lock_trace() and rcu_read_unlock_trace() functions that maintain
> > a nesting counter in the task_struct structure. But these use cases incur
> > a performance penalty when using the shiny new rcu_read_lock_tasks_trace()
> > and rcu_read_unlock_tasks_trace() functions, which nest in the same way
> > that SRCU does.
> >
> > This means that rcu_read_lock_trace() and rcu_read_unlock_trace()
> > will be with us for some time. Therefore, remove the checkpatch.pl
> > deprecation.
>
> Fine by me.
> Perhaps combining patches 3 and 4 would be more intelligible.
Very good, I will merge them on my next rebase.
Thanx, Paul
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] Miscellaneous RCU changes for v7.2
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (6 preceding siblings ...)
2026-05-07 17:09 ` [PATCH 7/7] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
@ 2026-05-08 17:06 ` Uladzislau Rezki
2026-05-08 17:27 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
8 siblings, 1 reply; 20+ messages in thread
From: Uladzislau Rezki @ 2026-05-08 17:06 UTC (permalink / raw)
To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt
On Thu, May 07, 2026 at 10:09:42AM -0700, Paul E. McKenney wrote:
> Hello!
>
> This series contains miscellaneous RCU updates for v7.2:
>
> 1. Don't queue workqueue handlers to never-online CPUs.
>
> 2. Fix kerneldoc header comment typo in srcu_down_read_fast().
>
> 3. Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace().
>
> 4. Mark rcu_read_lock_tasks_trace() and friend BPF-only.
>
> 5. Simplify rcu_do_batch() by applying clamp().
>
> 6. Simplify param_set_next_fqs_jiffies() by applying clamp_val().
>
> 7. Document rcu_access_pointer() feeding into cmpxchg().
>
> Thanx, Paul
>
> ------------------------------------------------------------------------
>
> b/include/linux/rcupdate.h | 12 +++++++-----
> b/include/linux/srcu.h | 2 +-
> b/kernel/rcu/srcutree.c | 12 ++++++------
> b/kernel/rcu/tree.c | 2 +-
> b/scripts/checkpatch.pl | 2 --
> kernel/rcu/tree.c | 2 +-
> scripts/checkpatch.pl | 3 +++
> 7 files changed, 19 insertions(+), 16 deletions(-)
>
Will you resend Paul? Combining 3 and 4?
Or i can take it and combine 3 and 4 on my own.
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH 0/7] Miscellaneous RCU changes for v7.2
2026-05-08 17:06 ` [PATCH 0/7] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
@ 2026-05-08 17:27 ` Paul E. McKenney
0 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:27 UTC (permalink / raw)
To: Uladzislau Rezki; +Cc: rcu, linux-kernel, kernel-team, rostedt
On Fri, May 08, 2026 at 07:06:58PM +0200, Uladzislau Rezki wrote:
> On Thu, May 07, 2026 at 10:09:42AM -0700, Paul E. McKenney wrote:
> > Hello!
> >
> > This series contains miscellaneous RCU updates for v7.2:
> >
> > 1. Don't queue workqueue handlers to never-online CPUs.
> >
> > 2. Fix kerneldoc header comment typo in srcu_down_read_fast().
> >
> > 3. Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace().
> >
> > 4. Mark rcu_read_lock_tasks_trace() and friend BPF-only.
> >
> > 5. Simplify rcu_do_batch() by applying clamp().
> >
> > 6. Simplify param_set_next_fqs_jiffies() by applying clamp_val().
> >
> > 7. Document rcu_access_pointer() feeding into cmpxchg().
> >
> > Thanx, Paul
> >
> > ------------------------------------------------------------------------
> >
> > b/include/linux/rcupdate.h | 12 +++++++-----
> > b/include/linux/srcu.h | 2 +-
> > b/kernel/rcu/srcutree.c | 12 ++++++------
> > b/kernel/rcu/tree.c | 2 +-
> > b/scripts/checkpatch.pl | 2 --
> > kernel/rcu/tree.c | 2 +-
> > scripts/checkpatch.pl | 3 +++
> > 7 files changed, 19 insertions(+), 16 deletions(-)
> >
> Will you resend Paul? Combining 3 and 4?
I will resend, just to simplify later rebasing on your version if
nothing else. ;-)
Thanx, Paul
> Or i can take it and combine 3 and 4 on my own.
>
> --
> Uladzislau Rezki
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 0/6] Miscellaneous RCU changes for v7.2
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
` (7 preceding siblings ...)
2026-05-08 17:06 ` [PATCH 0/7] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 1/6] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
` (6 more replies)
8 siblings, 7 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt
Hello!
This series contains v2 of the miscellaneous RCU updates for v7.2:
1. Don't queue workqueue handlers to never-online CPUs.
2. Fix kerneldoc header comment typo in srcu_down_read_fast().
3. Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace().
4. Simplify rcu_do_batch() by applying clamp().
5. Simplify param_set_next_fqs_jiffies() by applying clamp_val().
6. Document rcu_access_pointer() feeding into cmpxchg().
Changes since v1:
o Merge the two checkpatch commits (#3 and #4 in v1) into a single
commit (#3).
Thanx, Paul
------------------------------------------------------------------------
b/include/linux/rcupdate.h | 12 +++++++-----
b/include/linux/srcu.h | 2 +-
b/kernel/rcu/srcutree.c | 12 ++++++------
b/kernel/rcu/tree.c | 2 +-
b/scripts/checkpatch.pl | 5 +++--
kernel/rcu/tree.c | 2 +-
6 files changed, 19 insertions(+), 16 deletions(-)
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 1/6] srcu: Don't queue workqueue handlers to never-online CPUs
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 2/6] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
` (5 subsequent siblings)
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Vasily Gorbik, Samir, Shrikanth Hegde, Tejun Heo
While an srcu_struct structure is in the midst of switching from CPU-0
to all-CPUs state, it can attempt to invoke callbacks for CPUs that
have never been online. Worse yet, it can attempt in invoke callbacks
for CPUs that never will be online, even including imaginary CPUs not in
cpu_possible_mask. This can cause hangs on s390, which is not set up to
deal with workqueue handlers being scheduled on such CPUs. This commit
therefore causes Tree SRCU to refrain from queueing workqueue handlers
on CPUs that have not yet (and might never) come online.
Because callbacks are not invoked on CPUs that have not been
online, it is an error to invoke call_srcu(), synchronize_srcu(), or
synchronize_srcu_expedited() on a CPU that is not yet fully online.
However, it turns out to be less code to redirect the callbacks
from too-early invocations of call_srcu() than to warn about such
invocations. This commit therefore also redirects callbacks queued on
not-yet-fully-online CPUs to the boot CPU.
Reported-by: Vasily Gorbik <gor@linux.ibm.com>
Fixes: 61bbcfb50514 ("srcu: Push srcu_node allocation to GP when non-preemptible")
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Tested-by: Vasily Gorbik <gor@linux.ibm.com>
Tested-by: Samir <samir@linux.ibm.com>
Reviewed-by: Shrikanth Hegde <sshegde@linux.ibm.com>
Cc: Tejun Heo <tj@kernel.org>
---
kernel/rcu/srcutree.c | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c
index 0d01cd8c4b4a7b..7c2f7cc131f7ae 100644
--- a/kernel/rcu/srcutree.c
+++ b/kernel/rcu/srcutree.c
@@ -897,11 +897,9 @@ static void srcu_schedule_cbs_snp(struct srcu_struct *ssp, struct srcu_node *snp
{
int cpu;
- for (cpu = snp->grplo; cpu <= snp->grphi; cpu++) {
- if (!(mask & (1UL << (cpu - snp->grplo))))
- continue;
- srcu_schedule_cbs_sdp(per_cpu_ptr(ssp->sda, cpu), delay);
- }
+ for (cpu = snp->grplo; cpu <= snp->grphi; cpu++)
+ if ((mask & (1UL << (cpu - snp->grplo))) && rcu_cpu_beenfullyonline(cpu))
+ srcu_schedule_cbs_sdp(per_cpu_ptr(ssp->sda, cpu), delay);
}
/*
@@ -1322,7 +1320,9 @@ static unsigned long srcu_gp_start_if_needed(struct srcu_struct *ssp,
*/
idx = __srcu_read_lock_nmisafe(ssp);
ss_state = smp_load_acquire(&ssp->srcu_sup->srcu_size_state);
- if (ss_state < SRCU_SIZE_WAIT_CALL)
+ // If !rcu_cpu_beenfullyonline(), interrupts are still disabled,
+ // so no migration is possible in either direction from this CPU.
+ if (ss_state < SRCU_SIZE_WAIT_CALL || !rcu_cpu_beenfullyonline(raw_smp_processor_id()))
sdp = per_cpu_ptr(ssp->sda, get_boot_cpu_id());
else
sdp = raw_cpu_ptr(ssp->sda);
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 2/6] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast()
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 1/6] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 3/6] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
` (4 subsequent siblings)
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
s/srcu_read_lock_safe()/srcu_read_lock_fast_updown(), there being no
such thing as srcu_read_lock_safe().
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
include/linux/srcu.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/include/linux/srcu.h b/include/linux/srcu.h
index 81b1938512d5d1..a54ce9e808b92c 100644
--- a/include/linux/srcu.h
+++ b/include/linux/srcu.h
@@ -397,7 +397,7 @@ static inline struct srcu_ctr __percpu *srcu_read_lock_fast_notrace(struct srcu_
*
* The same srcu_struct may be used concurrently by srcu_down_read_fast()
* and srcu_read_lock_fast(). However, the same definition/initialization
- * requirements called out for srcu_read_lock_safe() apply.
+ * requirements called out for srcu_read_lock_fast_updown() apply.
*/
static inline struct srcu_ctr __percpu *srcu_down_read_fast(struct srcu_struct *ssp) __acquires_shared(ssp)
{
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 3/6] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace()
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 1/6] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 2/6] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 4/6] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
` (3 subsequent siblings)
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Puranjay Mohan, Andy Whitcroft, Joe Perches, Dwaipayan Ray,
Lukas Bulwahn
It turns out that there are BPF use cases that rely on nesting RCU
Tasks Trace readers. These use cases are well-served by the old
rcu_read_lock_trace() and rcu_read_unlock_trace() functions that maintain
a nesting counter in the task_struct structure. But these use cases incur
a performance penalty when using the shiny new rcu_read_lock_tasks_trace()
and rcu_read_unlock_tasks_trace() functions, which nest in the same way
that SRCU does.
This means that rcu_read_lock_trace() and rcu_read_unlock_trace()
will be with us for some time. Therefore, remove the checkpatch.pl
deprecation.
Also, the rcu_read_lock_tasks_trace() and rcu_read_unlock_tasks_trace()
functions are intended for use only by BPF. Therefore, add them to
the list of functions that checkpatch complains about outside of BPF
(and of course, RCU).
Reported-by: Puranjay Mohan <puranjay@kernel.org>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Cc: Andy Whitcroft <apw@canonical.com>
Cc: Joe Perches <joe@perches.com>
Cc: Dwaipayan Ray <dwaipayanray1@gmail.com>
Cc: Lukas Bulwahn <lukas.bulwahn@gmail.com>
---
scripts/checkpatch.pl | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 0492d6afc9a1fc..cc5bbd70cb843e 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -865,8 +865,6 @@ our %deprecated_apis = (
"DEFINE_IDR" => "DEFINE_XARRAY",
"idr_init" => "xa_init",
"idr_init_base" => "xa_init_flags",
- "rcu_read_lock_trace" => "rcu_read_lock_tasks_trace",
- "rcu_read_unlock_trace" => "rcu_read_unlock_tasks_trace",
);
#Create a search pattern for all these strings to speed up a loop below
@@ -7596,12 +7594,15 @@ sub process {
# Complain about RCU Tasks Trace used outside of BPF (and of course, RCU).
our $rcu_trace_funcs = qr{(?x:
+ rcu_read_lock_tasks_trace |
rcu_read_lock_trace |
rcu_read_lock_trace_held |
rcu_read_unlock_trace |
+ rcu_read_unlock_tasks_trace |
call_rcu_tasks_trace |
synchronize_rcu_tasks_trace |
rcu_barrier_tasks_trace |
+ rcu_tasks_trace_expedite_current |
rcu_request_urgent_qs_task
)};
our $rcu_trace_paths = qr{(?x:
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 4/6] rcu: Simplify rcu_do_batch() by applying clamp()
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
` (2 preceding siblings ...)
2026-05-08 17:43 ` [PATCH v2 3/6] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 5/6] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
` (2 subsequent siblings)
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
This commit replaces a nested ?: sequence with clamp(). This does not
reduce the number of lines of code, but it does simplify the line that
it modifies.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index 55df6d37145e87..e46a5124c3eb88 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -2584,7 +2584,7 @@ static void rcu_do_batch(struct rcu_data *rdp)
const long npj = NSEC_PER_SEC / HZ;
long rrn = READ_ONCE(rcu_resched_ns);
- rrn = rrn < NSEC_PER_MSEC ? NSEC_PER_MSEC : rrn > NSEC_PER_SEC ? NSEC_PER_SEC : rrn;
+ rrn = clamp(rrn, NSEC_PER_MSEC, NSEC_PER_SEC);
tlimit = local_clock() + rrn;
jlimit = jiffies + (rrn + npj + 1) / npj;
jlimit_check = true;
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 5/6] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val()
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
` (3 preceding siblings ...)
2026-05-08 17:43 ` [PATCH v2 4/6] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 6/6] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
2026-05-11 9:19 ` [PATCH v2 0/6] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu; +Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney
This commit replaces a nested ?: sequence with clamp_val(). This does
not reduce the number of lines of code, but it does simplify the line
that it modifies.
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
kernel/rcu/tree.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/kernel/rcu/tree.c b/kernel/rcu/tree.c
index e46a5124c3eb88..09f0cef5014c7c 100644
--- a/kernel/rcu/tree.c
+++ b/kernel/rcu/tree.c
@@ -492,7 +492,7 @@ static int param_set_next_fqs_jiffies(const char *val, const struct kernel_param
int ret = kstrtoul(val, 0, &j);
if (!ret) {
- WRITE_ONCE(*(ulong *)kp->arg, (j > HZ) ? HZ : (j ?: 1));
+ WRITE_ONCE(*(ulong *)kp->arg, clamp_val(j, 1, HZ));
adjust_jiffies_till_sched_qs();
}
return ret;
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 6/6] rcu: Document rcu_access_pointer() feeding into cmpxchg()
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
` (4 preceding siblings ...)
2026-05-08 17:43 ` [PATCH v2 5/6] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
@ 2026-05-08 17:43 ` Paul E. McKenney
2026-05-11 9:19 ` [PATCH v2 0/6] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
6 siblings, 0 replies; 20+ messages in thread
From: Paul E. McKenney @ 2026-05-08 17:43 UTC (permalink / raw)
To: rcu
Cc: linux-kernel, kernel-team, rostedt, Paul E. McKenney,
Maxim Mikityanskiy
This commit documents the rcu_access_pointer() use case for fetching the
old value of an RCU-protected pointer within a lockless updater for use
by an atomic cmpxchg() operation.
Reported-by: Maxim Mikityanskiy <maximmi@nvidia.com>
Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
---
include/linux/rcupdate.h | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/include/linux/rcupdate.h b/include/linux/rcupdate.h
index bfa765132de858..5e95acc33989b6 100644
--- a/include/linux/rcupdate.h
+++ b/include/linux/rcupdate.h
@@ -592,11 +592,13 @@ context_unsafe( \
* lockdep checks for being in an RCU read-side critical section. This is
* useful when the value of this pointer is accessed, but the pointer is
* not dereferenced, for example, when testing an RCU-protected pointer
- * against NULL. Although rcu_access_pointer() may also be used in cases
- * where update-side locks prevent the value of the pointer from changing,
- * you should instead use rcu_dereference_protected() for this use case.
- * Within an RCU read-side critical section, there is little reason to
- * use rcu_access_pointer().
+ * against NULL. Within an RCU read-side critical section, there is little
+ * reason to use rcu_access_pointer(). Although rcu_access_pointer() may
+ * also be used in cases where update-side locks prevent the value of the
+ * pointer from changing, you should instead use rcu_dereference_protected()
+ * for this use case. It is also permissible to use rcu_access_pointer()
+ * within lockless updaters to obtain the old value for an atomic operation,
+ * for example, for cmpxchg().
*
* It is usually best to test the rcu_access_pointer() return value
* directly in order to avoid accidental dereferences being introduced
--
2.40.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 0/6] Miscellaneous RCU changes for v7.2
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
` (5 preceding siblings ...)
2026-05-08 17:43 ` [PATCH v2 6/6] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
@ 2026-05-11 9:19 ` Uladzislau Rezki
6 siblings, 0 replies; 20+ messages in thread
From: Uladzislau Rezki @ 2026-05-11 9:19 UTC (permalink / raw)
To: Paul E. McKenney; +Cc: rcu, linux-kernel, kernel-team, rostedt
On Fri, May 08, 2026 at 10:43:38AM -0700, Paul E. McKenney wrote:
> Hello!
>
> This series contains v2 of the miscellaneous RCU updates for v7.2:
>
> 1. Don't queue workqueue handlers to never-online CPUs.
>
> 2. Fix kerneldoc header comment typo in srcu_down_read_fast().
>
> 3. Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace().
>
> 4. Simplify rcu_do_batch() by applying clamp().
>
> 5. Simplify param_set_next_fqs_jiffies() by applying clamp_val().
>
> 6. Document rcu_access_pointer() feeding into cmpxchg().
>
> Changes since v1:
>
> o Merge the two checkpatch commits (#3 and #4 in v1) into a single
> commit (#3).
>
> Thanx, Paul
>
> ------------------------------------------------------------------------
>
> b/include/linux/rcupdate.h | 12 +++++++-----
> b/include/linux/srcu.h | 2 +-
> b/kernel/rcu/srcutree.c | 12 ++++++------
> b/kernel/rcu/tree.c | 2 +-
> b/scripts/checkpatch.pl | 5 +++--
> kernel/rcu/tree.c | 2 +-
> 6 files changed, 19 insertions(+), 16 deletions(-)
>
Thank you and i have taken v2!
--
Uladzislau Rezki
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2026-05-11 9:19 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-07 17:09 [PATCH 0/7] Miscellaneous RCU changes for v7.2 Paul E. McKenney
2026-05-07 17:09 ` [PATCH 1/7] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
2026-05-07 17:09 ` [PATCH 2/7] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
2026-05-07 17:09 ` [PATCH 3/7] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
2026-05-07 17:44 ` Joe Perches
2026-05-07 17:53 ` Paul E. McKenney
2026-05-07 17:09 ` [PATCH 4/7] checkpatch: Mark rcu_read_lock_tasks_trace() and friend BPF-only Paul E. McKenney
2026-05-07 17:09 ` [PATCH 5/7] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
2026-05-07 17:09 ` [PATCH 6/7] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
2026-05-07 17:09 ` [PATCH 7/7] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
2026-05-08 17:06 ` [PATCH 0/7] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
2026-05-08 17:27 ` Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 0/6] " Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 1/6] srcu: Don't queue workqueue handlers to never-online CPUs Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 2/6] srcu: Fix kerneldoc header comment typo in srcu_down_read_fast() Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 3/6] checkpatch: Undeprecate rcu_read_lock_trace() and rcu_read_unlock_trace() Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 4/6] rcu: Simplify rcu_do_batch() by applying clamp() Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 5/6] rcu: Simplify param_set_next_fqs_jiffies() by applying clamp_val() Paul E. McKenney
2026-05-08 17:43 ` [PATCH v2 6/6] rcu: Document rcu_access_pointer() feeding into cmpxchg() Paul E. McKenney
2026-05-11 9:19 ` [PATCH v2 0/6] Miscellaneous RCU changes for v7.2 Uladzislau Rezki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox