summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2017-03-07 19:12:36 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2017-03-07 23:58:47 +0100
commit922b8868068757429b5049f972bfcc0c05df72ed (patch)
treeb2a24fcb9a3e188ba43cceb39dfc0f2ec0df0ec2
parent394a2e4cdfe652c4e840e37e8840a5c713c7497f (diff)
download4.12-rt-patches-922b8868068757429b5049f972bfcc0c05df72ed.tar.gz
[ANNOUNCE] v4.9.13-rt12
Dear RT folks! I'm pleased to announce the v4.9.13-rt12 patch set. Changes since v4.9.13-rt11: - hrtimer_cancel() may not cancel a timer which is currently running in the softirq context. Reported by Alexander Gerasiov. Known issues - CPU hotplug got a little better but can deadlock. The delta patch against v4.9.13-rt11 is appended below and can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/incr/patch-4.9.13-rt11-rt12.patch.xz You can get this release via the git tree at: git://git.kernel.org/pub/scm/linux/kernel/git/rt/linux-rt-devel.git v4.9.13-rt12 The RT patch against v4.9.13 can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/older/patch-4.9.13-rt12.patch.xz The split quilt queue is available at: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.9/older/patches-4.9.13-rt12.tar.xz Sebastian
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/series1
-rw-r--r--patches/timer-hrtimer-check-properly-for-a-running-timer.patch33
3 files changed, 35 insertions, 1 deletions
diff --git a/patches/localversion.patch b/patches/localversion.patch
index 58842b503a2712..12bd473a33f5b0 100644
--- a/patches/localversion.patch
+++ b/patches/localversion.patch
@@ -10,4 +10,4 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- /dev/null
+++ b/localversion-rt
@@ -0,0 +1 @@
-+-rt11
++-rt12
diff --git a/patches/series b/patches/series
index 83cfc023faa4a3..3766a2fbe2dcee 100644
--- a/patches/series
+++ b/patches/series
@@ -265,6 +265,7 @@ hrtimer-fixup-hrtimer-callback-changes-for-preempt-r.patch
sched-deadline-dl_task_timer-has-to-be-irqsafe.patch
timer-fd-avoid-live-lock.patch
tick-broadcast--Make-hrtimer-irqsafe.patch
+timer-hrtimer-check-properly-for-a-running-timer.patch
# POSIX-CPU-TIMERS
posix-timers-thread-posix-cpu-timers-on-rt.patch
diff --git a/patches/timer-hrtimer-check-properly-for-a-running-timer.patch b/patches/timer-hrtimer-check-properly-for-a-running-timer.patch
new file mode 100644
index 00000000000000..ecd1f1ef833a98
--- /dev/null
+++ b/patches/timer-hrtimer-check-properly-for-a-running-timer.patch
@@ -0,0 +1,33 @@
+From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+Date: Wed, 1 Mar 2017 16:30:49 +0100
+Subject: [PATCH] timer/hrtimer: check properly for a running timer
+
+hrtimer_callback_running() checks only whether a timmer is running on a
+CPU in hardirq-context. This is okay for !RT. For RT environment we move
+most timers to the timer-softirq and therefore we therefore need to
+check if the timer is running in the softirq context.
+
+Cc: stable-rt@vger.kernel.org
+Reported-by: Alexander Gerasiov <gq@cs.msu.su>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ include/linux/hrtimer.h | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+--- a/include/linux/hrtimer.h
++++ b/include/linux/hrtimer.h
+@@ -455,7 +455,13 @@ static inline int hrtimer_is_queued(stru
+ */
+ static inline int hrtimer_callback_running(const struct hrtimer *timer)
+ {
+- return timer->base->cpu_base->running == timer;
++ if (timer->base->cpu_base->running == timer)
++ return 1;
++#ifdef CONFIG_PREEMPT_RT_BASE
++ if (timer->base->cpu_base->running_soft == timer)
++ return 1;
++#endif
++ return 0;
+ }
+
+ /* Forward a hrtimer so it expires after now: */