summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2018-07-06 15:20:45 +0200
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2018-07-06 15:20:45 +0200
commit4d63a064771becf4587a0cd45fdc724617dda1d8 (patch)
tree7f22c438b2d8cdd5d126bffadf3b33b607aa3e83
parent6fcb5b8e3a7c0dedfaf9a2d765f22daeea614891 (diff)
downloadlinux-rt-4d63a064771becf4587a0cd45fdc724617dda1d8.tar.gz
[ANNOUNCE] v4.16.18-rt9v4.16.18-rt9-patches
Dear RT folks! I'm pleased to announce the v4.16.18-rt9 patch set. Changes since v4.16.18-rt8: - A patch from upstream to avoid a warning in the kthread code. The warning was part of the stable update. - Revert of a timer patch which is no longer since the initial problem was addressed upstream. Patch by Anna-Maria Gleixner. Known issues - A warning triggered in "rcu_note_context_switch" originated from SyS_timer_gettime(). The issue was always there, it is now visible. Reported by Grygorii Strashko and Daniel Wagner. The delta patch against v4.16.18-rt8 is appended below and can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.16/incr/patch-4.16.18-rt8-rt9.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.16.18-rt9 The RT patch against v4.16.18 can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.16/older/patch-4.16.18-rt9.patch.xz The split quilt queue is available at: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.16/older/patches-4.16.18-rt9.tar.xz Sebastian Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
-rw-r--r--patches/Revert-timer-delay-waking-softirqs-from-the-jiffy-ti.patch34
-rw-r--r--patches/cpu-hotplug--Implement-CPU-pinning.patch4
-rw-r--r--patches/irqwork-Move-irq-safe-work-to-irq-context.patch4
-rw-r--r--patches/irqwork-push_most_work_into_softirq_context.patch4
-rw-r--r--patches/kthread-Allow-kthread_park-on-a-parked-kthread.patch70
-rw-r--r--patches/localversion.patch2
-rw-r--r--patches/series3
7 files changed, 114 insertions, 7 deletions
diff --git a/patches/Revert-timer-delay-waking-softirqs-from-the-jiffy-ti.patch b/patches/Revert-timer-delay-waking-softirqs-from-the-jiffy-ti.patch
new file mode 100644
index 000000000000..51730359ee9d
--- /dev/null
+++ b/patches/Revert-timer-delay-waking-softirqs-from-the-jiffy-ti.patch
@@ -0,0 +1,34 @@
+From: Anna-Maria Gleixner <anna-maria@linutronix.de>
+Date: Thu, 5 Jul 2018 12:43:18 +0200
+Subject: [PATCH] Revert "timer: delay waking softirqs from the jiffy tick"
+
+This patch was required as long as RT tasks where accounted to CFS
+load but this was only a work around. Upstream Commit 17bdcf949d03
+("sched: Drop all load weight manipulation for RT tasks") fixed the
+accounting of RT tasks into CFS load.
+
+Remove the patch and fix dependencies.
+
+Signed-off-by: Anna-Maria Gleixner <anna-maria@linutronix.de>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/time/timer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/time/timer.c
++++ b/kernel/time/timer.c
+@@ -1666,13 +1666,13 @@ void update_process_times(int user_tick)
+
+ /* Note: this timer irq context must be accounted for as well. */
+ account_process_tick(p, user_tick);
+- scheduler_tick();
+ run_local_timers();
+ rcu_check_callbacks(user_tick);
+ #ifdef CONFIG_IRQ_WORK
+ if (in_irq())
+ irq_work_tick();
+ #endif
++ scheduler_tick();
+ if (IS_ENABLED(CONFIG_POSIX_TIMERS))
+ run_posix_cpu_timers(p);
+ }
diff --git a/patches/cpu-hotplug--Implement-CPU-pinning.patch b/patches/cpu-hotplug--Implement-CPU-pinning.patch
index feebdadd4385..8c6cf8d4414f 100644
--- a/patches/cpu-hotplug--Implement-CPU-pinning.patch
+++ b/patches/cpu-hotplug--Implement-CPU-pinning.patch
@@ -10,8 +10,8 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
--- a/include/linux/sched.h
+++ b/include/linux/sched.h
-@@ -602,6 +602,7 @@ struct task_struct {
- #if defined(CONFIG_PREEMPT_COUNT) && defined(CONFIG_SMP)
+@@ -649,6 +649,7 @@ struct task_struct {
+ #if defined(CONFIG_SMP) && defined(CONFIG_PREEMPT_RT_BASE)
int migrate_disable;
int migrate_disable_update;
+ int pinned_on_cpu;
diff --git a/patches/irqwork-Move-irq-safe-work-to-irq-context.patch b/patches/irqwork-Move-irq-safe-work-to-irq-context.patch
index 813d778e2c21..bf98fb78cbdc 100644
--- a/patches/irqwork-Move-irq-safe-work-to-irq-context.patch
+++ b/patches/irqwork-Move-irq-safe-work-to-irq-context.patch
@@ -55,8 +55,8 @@ Cc: stable-rt@vger.kernel.org
* Synchronize against the irq_work @entry, ensures the entry is not
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
-@@ -1676,7 +1676,7 @@ void update_process_times(int user_tick)
- scheduler_tick();
+@@ -1675,7 +1675,7 @@ void update_process_times(int user_tick)
+ account_process_tick(p, user_tick);
run_local_timers();
rcu_check_callbacks(user_tick);
-#if defined(CONFIG_IRQ_WORK) && !defined(CONFIG_PREEMPT_RT_FULL)
diff --git a/patches/irqwork-push_most_work_into_softirq_context.patch b/patches/irqwork-push_most_work_into_softirq_context.patch
index 5df75fe7ce1f..27ae4a7964f7 100644
--- a/patches/irqwork-push_most_work_into_softirq_context.patch
+++ b/patches/irqwork-push_most_work_into_softirq_context.patch
@@ -169,8 +169,8 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
/*
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
-@@ -1676,7 +1676,7 @@ void update_process_times(int user_tick)
- scheduler_tick();
+@@ -1675,7 +1675,7 @@ void update_process_times(int user_tick)
+ account_process_tick(p, user_tick);
run_local_timers();
rcu_check_callbacks(user_tick);
-#ifdef CONFIG_IRQ_WORK
diff --git a/patches/kthread-Allow-kthread_park-on-a-parked-kthread.patch b/patches/kthread-Allow-kthread_park-on-a-parked-kthread.patch
new file mode 100644
index 000000000000..1b86c734c0df
--- /dev/null
+++ b/patches/kthread-Allow-kthread_park-on-a-parked-kthread.patch
@@ -0,0 +1,70 @@
+From: Peter Zijlstra <peterz@infradead.org>
+Date: Fri, 4 May 2018 11:11:42 +0200
+Subject: [PATCH] kthread: Allow kthread_park() on a parked kthread
+
+[ Upstream commit b1f5b378e126133521df668379249fb8265121f1 ]
+
+The following commit:
+
+ 85f1abe0019f ("kthread, sched/wait: Fix kthread_parkme() completion issue")
+
+added a WARN() in the case where we call kthread_park() on an already
+parked thread, because the old code wasn't doing the right thing there
+and it wasn't at all clear that would happen.
+
+It turns out, this does in fact happen, so we have to deal with it.
+
+Instead of potentially returning early, also wait for the completion.
+This does however mean we have to use complete_all() and re-initialize
+the completion on re-use.
+
+Reported-by: LKP <lkp@01.org>
+Tested-by: Meelis Roos <mroos@linux.ee>
+Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
+Cc: Linus Torvalds <torvalds@linux-foundation.org>
+Cc: Peter Zijlstra <peterz@infradead.org>
+Cc: kernel test robot <lkp@intel.com>
+Cc: wfg@linux.intel.com
+Cc: Thomas Gleixner <tglx@linutronix.de>
+Fixes: 85f1abe0019f ("kthread, sched/wait: Fix kthread_parkme() completion issue")
+Link: http://lkml.kernel.org/r/20180504091142.GI12235@hirez.programming.kicks-ass.net
+Signed-off-by: Ingo Molnar <mingo@kernel.org>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/kthread.c | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/kernel/kthread.c b/kernel/kthread.c
+index 2017a39ab490..481951bf091d 100644
+--- a/kernel/kthread.c
++++ b/kernel/kthread.c
+@@ -193,7 +193,7 @@ EXPORT_SYMBOL_GPL(kthread_parkme);
+
+ void kthread_park_complete(struct task_struct *k)
+ {
+- complete(&to_kthread(k)->parked);
++ complete_all(&to_kthread(k)->parked);
+ }
+
+ static int kthread(void *_create)
+@@ -459,6 +459,7 @@ void kthread_unpark(struct task_struct *k)
+ if (test_bit(KTHREAD_IS_PER_CPU, &kthread->flags))
+ __kthread_bind(k, kthread->cpu, TASK_PARKED);
+
++ reinit_completion(&kthread->parked);
+ clear_bit(KTHREAD_SHOULD_PARK, &kthread->flags);
+ wake_up_state(k, TASK_PARKED);
+ }
+@@ -483,9 +484,6 @@ int kthread_park(struct task_struct *k)
+ if (WARN_ON(k->flags & PF_EXITING))
+ return -ENOSYS;
+
+- if (WARN_ON_ONCE(test_bit(KTHREAD_SHOULD_PARK, &kthread->flags)))
+- return -EBUSY;
+-
+ set_bit(KTHREAD_SHOULD_PARK, &kthread->flags);
+ if (k != current) {
+ wake_up_process(k);
+--
+2.18.0
+
diff --git a/patches/localversion.patch b/patches/localversion.patch
index 68c7b973cc48..02952cda4bfa 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 @@
-+-rt8
++-rt9
diff --git a/patches/series b/patches/series
index 81b81cfcd026..2eccc15c20ef 100644
--- a/patches/series
+++ b/patches/series
@@ -5,6 +5,8 @@
############################################################
# UPSTREAM merged
############################################################
+kthread-Allow-kthread_park-on-a-parked-kthread.patch
+
#AMD-iommu
0001-iommu-amd-Use-raw-locks-on-atomic-context-paths.patch
0002-iommu-amd-Don-t-use-dev_data-in-irte_ga_set_affinity.patch
@@ -293,6 +295,7 @@ radix-tree-use-local-locks.patch
# TIMERS
timers-prepare-for-full-preemption.patch
timer-delay-waking-softirqs-from-the-jiffy-tick.patch
+Revert-timer-delay-waking-softirqs-from-the-jiffy-ti.patch
nohz-Prevent-erroneous-tick-stop-invocations.patch
# KVM require constant freq TSC (smp function call -> cpufreq)