aboutsummaryrefslogtreecommitdiffstats
path: root/features/rt/rcu-Delay-RCU-selftests.patch
diff options
context:
space:
mode:
Diffstat (limited to 'features/rt/rcu-Delay-RCU-selftests.patch')
-rw-r--r--features/rt/rcu-Delay-RCU-selftests.patch75
1 files changed, 75 insertions, 0 deletions
diff --git a/features/rt/rcu-Delay-RCU-selftests.patch b/features/rt/rcu-Delay-RCU-selftests.patch
new file mode 100644
index 00000000..e6df57ca
--- /dev/null
+++ b/features/rt/rcu-Delay-RCU-selftests.patch
@@ -0,0 +1,75 @@
+From 520c1da6a6bdb335171681b90eacfe32d394f358 Mon Sep 17 00:00:00 2001
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Wed, 10 Mar 2021 15:09:02 +0100
+Subject: [PATCH 130/191] rcu: Delay RCU-selftests
+
+Delay RCU-selftests until ksoftirqd is up and running.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ init/main.c | 7 +++++++
+ kernel/rcu/tasks.h | 9 ++-------
+ 2 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/init/main.c b/init/main.c
+index 608a8b27fabe..5bb42b4bbf59 100644
+--- a/init/main.c
++++ b/init/main.c
+@@ -1511,6 +1511,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)
+ {
+ #ifndef CONFIG_BLK_DEV_INITRD
+@@ -1539,6 +1545,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 af7c19439f4e..3384c0bc6b21 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 */
+--
+2.19.1
+