From: "Paul E. McKenney" <paul...@kernel.org>

The current jitter.sh script expects cpumask bits to fit into whatever
the awk interpreter uses for an integer, which clearly does not hold for
even medium-sized systems these days.  This means that on a large system,
only the first 32 or 64 CPUs (depending) are subjected to jitter.sh
CPU-time perturbations.  This commit therefore computes a given CPU's
cpumask using text manipulation rather than arithmetic shifts.

Reported-by: Sebastian Andrzej Siewior <bige...@linutronix.de>
Signed-off-by: Paul E. McKenney <paul...@kernel.org>
---
 tools/testing/selftests/rcutorture/bin/jitter.sh | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/tools/testing/selftests/rcutorture/bin/jitter.sh 
b/tools/testing/selftests/rcutorture/bin/jitter.sh
index 188b864..3a856ec 100755
--- a/tools/testing/selftests/rcutorture/bin/jitter.sh
+++ b/tools/testing/selftests/rcutorture/bin/jitter.sh
@@ -67,10 +67,10 @@ do
                srand(n + me + systime());
                ncpus = split(cpus, ca);
                curcpu = ca[int(rand() * ncpus + 1)];
-               mask = lshift(1, curcpu);
-               if (mask + 0 <= 0)
-                       mask = 1;
-               printf("%#x\n", mask);
+               z = "";
+               for (i = 1; 4 * i <= curcpu; i++)
+                       z = z "0";
+               print "0x" 2 ^ (curcpu % 4) z;
        }' < /dev/null`
        n=$(($n+1))
        if ! taskset -p $cpumask $$ > /dev/null 2>&1
-- 
2.9.5

Reply via email to