summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch')
-rw-r--r--debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch34
1 files changed, 34 insertions, 0 deletions
diff --git a/debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch b/debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch
new file mode 100644
index 000000000..29760ba4c
--- /dev/null
+++ b/debian/patches-rt/hrtimer-Allow-raw-wakeups-during-boot.patch
@@ -0,0 +1,34 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Fri, 9 Aug 2019 15:25:21 +0200
+Subject: [PATCH] hrtimer: Allow raw wakeups during boot
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.4/older/patches-5.4.3-rt1.tar.xz
+
+There are a few wake-up timers during the early boot which are essencial for
+the system to make progress. At this stage there are no softirq spawn for the
+softirq processing so there is no timer processing in softirq.
+The wakeup in question:
+
+smpboot_create_thread()
+ -> kthread_create_on_cpu()
+ -> kthread_bind()
+ -> wait_task_inactive()
+ -> schedule_hrtimeout()
+
+Let the timer fire in hardirq context during the system boot.
+
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/time/hrtimer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/time/hrtimer.c
++++ b/kernel/time/hrtimer.c
+@@ -1816,7 +1816,7 @@ static void __hrtimer_init_sleeper(struc
+ * expiry.
+ */
+ if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
+- if (task_is_realtime(current) && !(mode & HRTIMER_MODE_SOFT))
++ if ((task_is_realtime(current) && !(mode & HRTIMER_MODE_SOFT)) || system_state != SYSTEM_RUNNING)
+ mode |= HRTIMER_MODE_HARD;
+ }
+