[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20251102214436.3905633-18-paulmck@kernel.org>
Date: Sun, 2 Nov 2025 13:44:35 -0800
From: "Paul E. McKenney" <paulmck@...nel.org>
To: rcu@...r.kernel.org
Cc: linux-kernel@...r.kernel.org,
kernel-team@...a.com,
rostedt@...dmis.org,
"Paul E. McKenney" <paulmck@...nel.org>
Subject: [PATCH 18/19] rcutorture: Make srcu{,d}_torture_init() announce the SRCU type
This commit causes rcutorture's srcu_torture_init() and
srcud_torture_init() functions to announce on the console log
which variant of SRCU is being tortured, for example: "torture:
srcud_torture_init fast SRCU".
Signed-off-by: Paul E. McKenney <paulmck@...nel.org>
---
kernel/rcu/rcutorture.c | 34 ++++++++++++++++++++++++++++------
1 file changed, 28 insertions(+), 6 deletions(-)
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 4a9b6866c0cc..820c5e5b106b 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -701,10 +701,20 @@ static struct rcu_torture_ops srcud_ops;
static void srcu_torture_init(void)
{
rcu_sync_torture_init();
- if (reader_flavor & SRCU_READ_FLAVOR_FAST)
+ if (!reader_flavor || (reader_flavor & SRCU_READ_FLAVOR_NORMAL)) {
+ VERBOSE_TOROUT_STRING("srcu_torture_init normal SRCU");
+ }
+ if (reader_flavor & SRCU_READ_FLAVOR_NMI) {
+ VERBOSE_TOROUT_STRING("srcu_torture_init NMI-safe SRCU");
+ }
+ if (reader_flavor & SRCU_READ_FLAVOR_FAST) {
srcu_ctlp = &srcu_ctlf;
- if (reader_flavor & SRCU_READ_FLAVOR_FAST_UPDOWN)
+ VERBOSE_TOROUT_STRING("srcu_torture_init fast SRCU");
+ }
+ if (reader_flavor & SRCU_READ_FLAVOR_FAST_UPDOWN) {
srcu_ctlp = &srcu_ctlfud;
+ VERBOSE_TOROUT_STRING("srcu_torture_init fast-up/down SRCU");
+ }
}
static void srcu_get_gp_data(int *flags, unsigned long *gp_seq)
@@ -920,12 +930,21 @@ static struct rcu_torture_ops srcu_ops = {
static void srcud_torture_init(void)
{
rcu_sync_torture_init();
- if (reader_flavor & SRCU_READ_FLAVOR_FAST_UPDOWN)
- WARN_ON(init_srcu_struct_fast_updown(&srcu_ctld));
- else if (reader_flavor & SRCU_READ_FLAVOR_FAST)
+ if (!reader_flavor || (reader_flavor & SRCU_READ_FLAVOR_NORMAL)) {
+ WARN_ON(init_srcu_struct(&srcu_ctld));
+ VERBOSE_TOROUT_STRING("srcud_torture_init normal SRCU");
+ } else if (reader_flavor & SRCU_READ_FLAVOR_NMI) {
+ WARN_ON(init_srcu_struct(&srcu_ctld));
+ VERBOSE_TOROUT_STRING("srcud_torture_init NMI-safe SRCU");
+ } else if (reader_flavor & SRCU_READ_FLAVOR_FAST) {
WARN_ON(init_srcu_struct_fast(&srcu_ctld));
- else
+ VERBOSE_TOROUT_STRING("srcud_torture_init fast SRCU");
+ } else if (reader_flavor & SRCU_READ_FLAVOR_FAST_UPDOWN) {
+ WARN_ON(init_srcu_struct_fast_updown(&srcu_ctld));
+ VERBOSE_TOROUT_STRING("srcud_torture_init fast-up/down SRCU");
+ } else {
WARN_ON(init_srcu_struct(&srcu_ctld));
+ }
srcu_ctlp = &srcu_ctld;
}
@@ -2440,6 +2459,9 @@ static DEFINE_TORTURE_RANDOM_PERCPU(rcu_torture_timer_rand);
*/
static void rcu_torture_timer(struct timer_list *unused)
{
+ WARN_ON_ONCE(!in_serving_softirq());
+ WARN_ON_ONCE(in_hardirq());
+ WARN_ON_ONCE(in_nmi());
atomic_long_inc(&n_rcu_torture_timers);
(void)rcu_torture_one_read(this_cpu_ptr(&rcu_torture_timer_rand), -1);
--
2.40.1
Powered by blists - more mailing lists