refscale: Move shutdown from wait_event() to wait_event_idle()
authorPaul E. McKenney <paulmck@kernel.org>
Wed, 1 Feb 2023 00:12:18 +0000 (16:12 -0800)
committerBoqun Feng <boqun.feng@gmail.com>
Mon, 20 Mar 2023 18:12:16 +0000 (11:12 -0700)
The ref_scale_shutdown() kthread/function uses wait_event() to wait for
the refscale test to complete.  However, although the read-side tests
are normally extremely fast, there is no law against specifying a very
large value for the refscale.loops module parameter or against having
a slow read-side primitive.  Either way, this might well trigger the
hung-task timeout.

This commit therefore replaces those wait_event() calls with calls to
wait_event_idle(), which do not trigger the hung-task timeout.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Boqun Feng <boqun.feng@gmail.com>
kernel/rcu/refscale.c

index afa3e1a..1970ce5 100644 (file)
@@ -1031,7 +1031,7 @@ ref_scale_cleanup(void)
 static int
 ref_scale_shutdown(void *arg)
 {
-       wait_event(shutdown_wq, shutdown_start);
+       wait_event_idle(shutdown_wq, shutdown_start);
 
        smp_mb(); // Wake before output.
        ref_scale_cleanup();