diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-03-07 19:12:36 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2017-03-07 23:58:47 +0100 |
commit | 922b8868068757429b5049f972bfcc0c05df72ed (patch) | |
tree | b2a24fcb9a3e188ba43cceb39dfc0f2ec0df0ec2 | |
parent | 394a2e4cdfe652c4e840e37e8840a5c713c7497f (diff) | |
download | 4.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.patch | 2 | ||||
-rw-r--r-- | patches/series | 1 | ||||
-rw-r--r-- | patches/timer-hrtimer-check-properly-for-a-running-timer.patch | 33 |
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: */ |