aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2024-10-21 07:07:47 -0700
committerUladzislau Rezki (Sony) <urezki@gmail.com>2024-12-14 17:02:28 +0100
commit7b6c1648bb6e041b3f2284b7f602283adc852bb7 (patch)
tree682ce45e4428f4254c36bf5d6d0738298d5198ac
parentrcutorture: Decorate failing reader segments with CPU ID (diff)
downloadlinux-rng-7b6c1648bb6e041b3f2284b7f602283adc852bb7.tar.xz
linux-rng-7b6c1648bb6e041b3f2284b7f602283adc852bb7.zip
rcutorture: Use finer-grained timeouts for rcu_torture_writer() polling
The rcu_torture_writer() polling currently uses timeouts ranging from zero to 16 milliseconds to wait for the polled grace period to end. This works, but it would be better to have a higher probability of exercising races with the code that cleans up after a grace period. This commit therefore switches from these millisecond-scale timeouts to timeouts ranging from zero to 128 microseconds, and with a full microsecond's worth of timeout fuzz. Signed-off-by: Paul E. McKenney <paulmck@kernel.org> Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
-rw-r--r--kernel/rcu/rcutorture.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/kernel/rcu/rcutorture.c b/kernel/rcu/rcutorture.c
index 0bc6fc582215..6067f2740247 100644
--- a/kernel/rcu/rcutorture.c
+++ b/kernel/rcu/rcutorture.c
@@ -1561,8 +1561,8 @@ rcu_torture_writer(void *arg)
break;
}
WARN_ON_ONCE(ulo_size > 0 && i >= ulo_size);
- torture_hrtimeout_jiffies(torture_random(&rand) % 16,
- &rand);
+ torture_hrtimeout_us(torture_random(&rand) % 128, 1000,
+ &rand);
}
rcu_torture_pipe_update(old_rp);
break;
@@ -1582,8 +1582,8 @@ rcu_torture_writer(void *arg)
break;
}
WARN_ON_ONCE(rgo_size > 0 && i >= rgo_size);
- torture_hrtimeout_jiffies(torture_random(&rand) % 16,
- &rand);
+ torture_hrtimeout_us(torture_random(&rand) % 128, 1000,
+ &rand);
}
rcu_torture_pipe_update(old_rp);
break;
@@ -1592,8 +1592,8 @@ rcu_torture_writer(void *arg)
gp_snap = cur_ops->start_gp_poll_exp();
rcu_torture_writer_state = RTWS_POLL_WAIT_EXP;
while (!cur_ops->poll_gp_state_exp(gp_snap))
- torture_hrtimeout_jiffies(torture_random(&rand) % 16,
- &rand);
+ torture_hrtimeout_us(torture_random(&rand) % 128, 1000,
+ &rand);
rcu_torture_pipe_update(old_rp);
break;
case RTWS_POLL_GET_EXP_FULL:
@@ -1601,8 +1601,8 @@ rcu_torture_writer(void *arg)
cur_ops->start_gp_poll_exp_full(&gp_snap_full);
rcu_torture_writer_state = RTWS_POLL_WAIT_EXP_FULL;
while (!cur_ops->poll_gp_state_full(&gp_snap_full))
- torture_hrtimeout_jiffies(torture_random(&rand) % 16,
- &rand);
+ torture_hrtimeout_us(torture_random(&rand) % 128, 1000,
+ &rand);
rcu_torture_pipe_update(old_rp);
break;
case RTWS_SYNC: