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


Reply via email to