tracing: Have tracer selftests call cond_resched() before running
authorSteven Rostedt (Google) <rostedt@goodmis.org>
Sun, 28 May 2023 05:17:39 +0000 (01:17 -0400)
committerSteven Rostedt (Google) <rostedt@goodmis.org>
Mon, 29 May 2023 01:15:17 +0000 (21:15 -0400)
As there are more and more internal selftests being added to the Linux
kernel (KSAN, lockdep, etc) the selftests are taking longer to run when
these are enabled. Add a cond_resched() to the calling of
do_run_tracer_selftest() to force a schedule if NEED_RESCHED is set,
otherwise the soft lockup watchdog may trigger on boot up.

Link: https://lkml.kernel.org/r/20230528051742.1325503-3-rostedt@goodmis.org
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
kernel/trace/trace.c

index 87e5920..70f2b51 100644 (file)
@@ -2045,6 +2045,13 @@ static int do_run_tracer_selftest(struct tracer *type)
 {
        int ret;
 
+       /*
+        * Tests can take a long time, especially if they are run one after the
+        * other, as does happen during bootup when all the tracers are
+        * registered. This could cause the soft lockup watchdog to trigger.
+        */
+       cond_resched();
+
        tracing_selftest_running = true;
        ret = run_tracer_selftest(type);
        tracing_selftest_running = false;