diff options
author | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-01-22 23:56:10 +0100 |
---|---|---|
committer | Sebastian Andrzej Siewior <bigeasy@linutronix.de> | 2016-01-22 23:56:10 +0100 |
commit | 18b0ea1ce8ddca86b3f09a9122a3c722b265dfb8 (patch) | |
tree | 5c77303303e2b5154e1dd8555b16a5196c553d62 /patches/cpu_chill-Add-a-UNINTERRUPTIBLE-hrtimer_nanosleep.patch | |
parent | c5f0ba59007d49527ec8c89cd6ff721a8f5c294e (diff) | |
download | linux-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.patch | 12 |
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; |