rcutorture: Move to dynamic initialization of rcu_fwds
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 6 Nov 2019 15:49:31 +0000 (07:49 -0800)
committerPaul E. McKenney <paulmck@kernel.org>
Mon, 9 Dec 2019 21:00:28 +0000 (13:00 -0800)
In order to add multiple call_rcu() forward-progress kthreads, it will
be necessary to dynamically allocate and initialize.  This commit
therefore moves the initialization from compile time to instead
immediately precede thread-creation time.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
kernel/rcu/rcutorture.c

index cc88ce9..6f540fe 100644 (file)
@@ -1686,11 +1686,7 @@ struct rcu_fwd {
        unsigned long rcu_launder_gp_seq_start;
 };
 
-struct rcu_fwd rcu_fwds = {
-       .rcu_fwd_lock = __SPIN_LOCK_UNLOCKED(rcu_fwds.rcu_fwd_lock),
-       .rcu_fwd_cb_tail = &rcu_fwds.rcu_fwd_cb_head,
-};
-
+struct rcu_fwd rcu_fwds;
 bool rcu_fwd_emergency_stop;
 
 static void rcu_torture_fwd_cb_hist(struct rcu_fwd *rfp)
@@ -2026,6 +2022,8 @@ static int __init rcu_torture_fwd_prog_init(void)
                WARN_ON(1); /* Make sure rcutorture notices conflict. */
                return 0;
        }
+       spin_lock_init(&rcu_fwds.rcu_fwd_lock);
+       rcu_fwds.rcu_fwd_cb_tail = &rcu_fwds.rcu_fwd_cb_head;
        if (fwd_progress_holdoff <= 0)
                fwd_progress_holdoff = 1;
        if (fwd_progress_div <= 0)