]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
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)
committerStefan Bader <stefan.bader@canonical.com>
Wed, 9 Aug 2023 09:37:53 +0000 (11:37 +0200)
BugLink: https://bugs.launchpad.net/bugs/2028808
[ Upstream commit 6bc6e6b27524304aadb9c04611ddb1c84dd7617a ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
kernel/rcu/refscale.c

index 435c884c02b5cea752e37b73f31434dce22a5870..d49a9d66e0000fd8748043d2b8c1aaa94f45d537 100644 (file)
@@ -795,7 +795,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();