aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcu/tasks.h
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2021-12-06 16:19:40 -0800
committerPaul E. McKenney <paulmck@kernel.org>2022-06-20 09:22:26 -0700
commit4cf0585c4d663654fefa0b359f1908b5cd72802b (patch)
tree355ac8b86e791b745e4083b124e843a1770a96d8 /kernel/rcu/tasks.h
parentLinux 5.19-rc3 (diff)
downloadlinux-dev-4cf0585c4d663654fefa0b359f1908b5cd72802b.tar.xz
linux-dev-4cf0585c4d663654fefa0b359f1908b5cd72802b.zip
rcu-tasks: Check for abandoned callbacks
This commit adds a debugging scan for callbacks that got lost during a callback-queueing transition. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'kernel/rcu/tasks.h')
-rw-r--r--kernel/rcu/tasks.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
index 3925e32159b5..b8690a412c5b 100644
--- a/kernel/rcu/tasks.h
+++ b/kernel/rcu/tasks.h
@@ -439,6 +439,11 @@ static int rcu_tasks_need_gpcb(struct rcu_tasks *rtp)
WRITE_ONCE(rtp->percpu_dequeue_lim, 1);
pr_info("Completing switch %s to CPU-0 callback queuing.\n", rtp->name);
}
+ for (cpu = rtp->percpu_dequeue_lim; cpu < nr_cpu_ids; cpu++) {
+ struct rcu_tasks_percpu *rtpcp = per_cpu_ptr(rtp->rtpcpu, cpu);
+
+ WARN_ON_ONCE(rcu_segcblist_n_cbs(&rtpcp->cblist));
+ }
raw_spin_unlock_irqrestore(&rtp->cbs_gbl_lock, flags);
}