rcutorture: Add self-propagating callback to forward-progress testing
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 19 Jul 2018 20:36:00 +0000 (13:36 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 29 Aug 2018 16:20:48 +0000 (09:20 -0700)
commit9fdcb9afe082794c6dcf2b79b3070ef5dafc8a8f
tree30e1bacbfec890edf350e06843c2927ad06c49d2
parent08a7a2ec68348ebc6d8bf5f20df23815fc0d332b
rcutorture: Add self-propagating callback to forward-progress testing

If rcutorture is run on a quiet system with the rcutorture.stutter module
parameter set high, then there can legitimately be an extended period
during which no RCU forward progress takes place.  This can result
in false-positive no-forward-progress splats.  This commit therefore
makes rcu_torture_fwd_prog() create a self-propagating RCU callback
to ensure that grace periods are in progress for the duration of the
forward-progress test.

Note that the RCU flavor under test must define ->call(), ->sync(),
and ->cb_barrier() for this self-propagating callback to be created.
If one or more of those rcu_torture_ops fields are NULL, then the
rcu_torture_fwd_prog() function will silently proceed without creating
the self-propagating callback.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
kernel/rcu/rcutorture.c