summaryrefslogtreecommitdiff
path: root/patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
diff options
context:
space:
mode:
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-01-22 23:56:10 +0100
committerSebastian Andrzej Siewior <bigeasy@linutronix.de>2016-01-22 23:56:10 +0100
commit18b0ea1ce8ddca86b3f09a9122a3c722b265dfb8 (patch)
tree5c77303303e2b5154e1dd8555b16a5196c553d62 /patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
parentc5f0ba59007d49527ec8c89cd6ff721a8f5c294e (diff)
downloadlinux-rt-18b0ea1ce8ddca86b3f09a9122a3c722b265dfb8.tar.gz
[ANNOUNCE] 4.4-rt3v4.4-rt3-patches
Dear RT folks! I'm pleased to announce the v4.4-rt3 patch set. Changes since v4.4-rt2: - various compile fixes found by kbuild test robot and Grygorii Strashko. - kbuild test robot reported that we open interrupts too early in ptrace_freeze_traced(). - dropping a GPIO patch from the OMAP queue which is no longer required (requested by Grygorii Strashko) - dropping a retry loop in the mm/anon_vma_free() which was probably just duct tape and does no longer seems required. - Various people pointed out that the AT91 clocksource driver did not not compile. It does now. However AT91 does not yet boot. There are two issues: - the free_irq() from irq-off region is not good and triggers a warning because it is invoked twice. This will be addressed later, the current patch is not bulletproof and not yet part of the series. - The PMC driver invokes request_irq() very early which leads to a NULL pointer exception (non-RT with threaded interrupts has the same problem). A longer explanation by Alexandre Belloni and his current patch series he refers to can be found at: http://lkml.kernel.org/r/1452997394-8554-1-git-send-email-alexandre.belloni@free-electrons.com - Using a virtual network device (like a bridge) could lead to a "Dead loop" message the packet dropped. This problem has been fixed. - Julia Lawall sent a patch against hwlat_detector to "move constants to the right of binary operators". - Carsten Emde sent a patch to fix the latency histogram tracer. - Mike Galbraith reported that the softirq ate about 25% CPU time doing nothing. The problem was fixed. - Grygorii Strashko pointed out that two RCU/ksoftirqd changes that were made to the non-RT version of the code did not make to the RT version. This was corrected. - btrfs forgot to initialize a seqcount variable which prints a warning if used with lockdep. - A few users napi_alloc_cache() were not protected against reentrance. - Grygorii Strashko fixed highmem on ARM. - Mike Galbraith reported that all tasks run on CPU0 even on a system with more than one. Problem fixed by Thomas Gleixner. - Anders Roxell sent two patches (against coupled and vsp1) because they did not compile and printed a warning on -RT. - Mike Galbraith pointed out that we forgot to check for NEED_RESCHED_LAZY in an exit path on X86 and provided a patch. - Mike Galbraith pointed out that we don't consider the preempt_lazy_count in the common preemption check and provided a patch. With this fixed, the sched_other performance should improve. - A high network load could lead to RCU stalls followed by the OOM killer. Say a slower ARM with on a GBIT link running RT tasks, doing network IO (at a RT prio) and getting shot with the flood ping at a high rate. NAPI does not really kick in because each time NAPI tries defer processing it starts again in the context of the IRQ thread of the network driver. This has been fixed in two steps: - once the NAPI budget is up, we schedule ksoftirqd. This works now on -RT, too - ksoftirqd runs now at SCHED_OTHER priority like the on !RT. Now the scheduler can preempt ksoftirqd and let RCU do its job. The timer and hrtimer softirq processing happens now in ktimersoftd which runs at SCHED_FIFO (as ksoftirqd used to). - Grygorii Strashko pointed out that if RCU_EXPERT is not enabled then we can't select RCU_BOOST. Therefore RCU_EXPERT is default y on RT. - Grygorii Strashko pointed out the we miss to check for NEED_RESCHED_LAZY in an exit path on ARM. This has been fixed on ARM and on ARM64 as well. This was a lot and I hope I forgot nothing important. Known issues: - bcache stays disabled - CPU hotplug is not better than before - The netlink_release() OOPS, reported by Clark, is still on the list, but unsolved due to lack of information The delta patch against 4.4-rt2 is appended below and can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.4/incr/patch-4.4-rt2-rt3.patch 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.4-rt3 The RT patch against 4.1.13 can be found here: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.4/patch-4.4-rt3.patch.xz The split quilt queue is available at: https://cdn.kernel.org/pub/linux/kernel/projects/rt/4.4/patches-4.4-rt3.tar.xz Sebastian Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Diffstat (limited to 'patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch')
-rw-r--r--patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch12
1 files changed, 6 insertions, 6 deletions
diff --git a/patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch b/patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
index e40b98dd6011..1a0a39a01910 100644
--- a/patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
+++ b/patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch
@@ -33,7 +33,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
--- a/kernel/time/hrtimer.c
+++ b/kernel/time/hrtimer.c
-@@ -1657,12 +1657,13 @@ void hrtimer_init_sleeper(struct hrtimer
+@@ -1656,12 +1656,13 @@ void hrtimer_init_sleeper(struct hrtimer
}
EXPORT_SYMBOL_GPL(hrtimer_init_sleeper);
@@ -49,7 +49,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
hrtimer_start_expires(&t->timer, mode);
if (likely(t->task))
-@@ -1704,7 +1705,8 @@ long __sched hrtimer_nanosleep_restart(s
+@@ -1703,7 +1704,8 @@ long __sched hrtimer_nanosleep_restart(s
HRTIMER_MODE_ABS);
hrtimer_set_expires_tv64(&t.timer, restart->nanosleep.expires);
@@ -59,7 +59,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto out;
rmtp = restart->nanosleep.rmtp;
-@@ -1721,8 +1723,10 @@ long __sched hrtimer_nanosleep_restart(s
+@@ -1720,8 +1722,10 @@ long __sched hrtimer_nanosleep_restart(s
return ret;
}
@@ -72,7 +72,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
{
struct restart_block *restart;
struct hrtimer_sleeper t;
-@@ -1735,7 +1739,7 @@ long hrtimer_nanosleep(struct timespec *
+@@ -1734,7 +1738,7 @@ long hrtimer_nanosleep(struct timespec *
hrtimer_init_on_stack(&t.timer, clockid, mode);
hrtimer_set_expires_range_ns(&t.timer, timespec_to_ktime(*rqtp), slack);
@@ -81,7 +81,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
goto out;
/* Absolute timers do not update the rmtp value and restart: */
-@@ -1762,6 +1766,12 @@ long hrtimer_nanosleep(struct timespec *
+@@ -1761,6 +1765,12 @@ long hrtimer_nanosleep(struct timespec *
return ret;
}
@@ -94,7 +94,7 @@ Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
SYSCALL_DEFINE2(nanosleep, struct timespec __user *, rqtp,
struct timespec __user *, rmtp)
{
-@@ -1788,7 +1798,8 @@ void cpu_chill(void)
+@@ -1787,7 +1797,8 @@ void cpu_chill(void)
unsigned int freeze_flag = current->flags & PF_NOFREEZE;
current->flags |= PF_NOFREEZE;