aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2021-03-10 15:09:02 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2021-03-12 20:50:29 +0100
commit13357aa7f9e394ed60d2c424fb94671dc448bd44 (patch)
tree671c0ded268a925865402c97c8db8c276d15ad05
parent082feec4b322008c3d35fa0e110017fa437aab19 (diff)
downloadlinux-rt-devel-13357aa7f9e394ed60d2c424fb94671dc448bd44.tar.gz
rcu: Delay RCU-selftests
Delay RCU-selftests until ksoftirqd is up and running. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--init/main.c7
-rw-r--r--kernel/rcu/tasks.h9
2 files changed, 9 insertions, 7 deletions
diff --git a/init/main.c b/init/main.c
index 53b278845b886..ff77379e2316e 100644
--- a/init/main.c
+++ b/init/main.c
@@ -1499,6 +1499,12 @@ void __init console_on_rootfs(void)
fput(file);
}
+#ifdef CONFIG_PROVE_RCU
+void rcu_tasks_initiate_self_tests(void);
+#else
+static inline void rcu_tasks_initiate_self_tests(void) {}
+#endif
+
static noinline void __init kernel_init_freeable(void)
{
/*
@@ -1524,6 +1530,7 @@ static noinline void __init kernel_init_freeable(void)
rcu_init_tasks_generic();
do_pre_smp_initcalls();
+ rcu_tasks_initiate_self_tests();
lockup_detector_init();
smp_init();
diff --git a/kernel/rcu/tasks.h b/kernel/rcu/tasks.h
index af7c19439f4ec..3384c0bc6b218 100644
--- a/kernel/rcu/tasks.h
+++ b/kernel/rcu/tasks.h
@@ -1259,7 +1259,7 @@ static void test_rcu_tasks_callback(struct rcu_head *rhp)
rttd->notrun = true;
}
-static void rcu_tasks_initiate_self_tests(void)
+void rcu_tasks_initiate_self_tests(void)
{
pr_info("Running RCU-tasks wait API self tests\n");
#ifdef CONFIG_TASKS_RCU
@@ -1296,9 +1296,7 @@ static int rcu_tasks_verify_self_tests(void)
return ret;
}
late_initcall(rcu_tasks_verify_self_tests);
-#else /* #ifdef CONFIG_PROVE_RCU */
-static void rcu_tasks_initiate_self_tests(void) { }
-#endif /* #else #ifdef CONFIG_PROVE_RCU */
+#endif /* #ifdef CONFIG_PROVE_RCU */
void __init rcu_init_tasks_generic(void)
{
@@ -1313,9 +1311,6 @@ void __init rcu_init_tasks_generic(void)
#ifdef CONFIG_TASKS_TRACE_RCU
rcu_spawn_tasks_trace_kthread();
#endif
-
- // Run the self-tests.
- rcu_tasks_initiate_self_tests();
}
#else /* #ifdef CONFIG_TASKS_RCU_GENERIC */