This commit interprets negative values of the nreaders module parameter as a number of readers per CPU, so that hazptrtorture.nreaders=-5 would spawn five hazard-pointer reader kthreads per CPU. As CPUs go offline, a number of readers determined by the overcommit are idled, so that again when hazptrtorture.nreaders=-5, five readers would be idled for each offline CPU.
Signed-off-by: Paul E. McKenney <[email protected]> --- kernel/rcu/hazptrtorture.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/rcu/hazptrtorture.c b/kernel/rcu/hazptrtorture.c index 4dd31104779fe8..21a72667554fe0 100644 --- a/kernel/rcu/hazptrtorture.c +++ b/kernel/rcu/hazptrtorture.c @@ -362,7 +362,7 @@ static int hazptr_torture_reader(void *arg) struct hazptr_torture *htp; unsigned long lastsleep = jiffies; long myid = (long)arg; - int mynumonline = myid; + int mynumonline = myid % nr_cpu_ids; int pipe_count; DEFINE_TORTURE_RANDOM(rand); @@ -623,7 +623,7 @@ static int __init hazptr_torture_init(void) if (nreaders >= 0) { nrealreaders = nreaders; } else { - nrealreaders = num_online_cpus() - 2 - nreaders; + nrealreaders = num_online_cpus() * -nreaders; if (nrealreaders <= 0) nrealreaders = 1; } -- 2.40.1

