Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1441569 > unrolled thread
| Started by | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| First post | 2016-07-12 19:00 +0200 |
| Last post | 2016-07-13 01:30 +0200 |
| Articles | 10 — 1 participant |
Back to article view | Back to linux.kernel
[PATCH RT 00/14] Linux 3.14.72-rt76-rc1 Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 14/14] Linux 3.14.72-rt76-rc1 Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 11/14] mm: perform lru_add_drain_all() remotely Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 10/14] locallock: add local_lock_on() Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 07/14] sched,preempt: Fix preempt_count manipulations Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 09/14] arm: lazy preempt: correct resched condition Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 08/14] kernel/printk: Dont try to print from IRQ/NMI region Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 04/14] list_bl: fixup bogus lockdep warning Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
[PATCH RT 03/14] net: dev: always take qdiscs busylock in __dev_xmit_skb() Steven Rostedt <rostedt@goodmis.org> - 2016-07-12 19:00 +0200
Linux 3.14.72-rt76-rc2 Steven Rostedt <rostedt@goodmis.org> - 2016-07-13 01:30 +0200
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 00/14] Linux 3.14.72-rt76-rc1 |
| Message-ID | <rU92F-7wG-3@gated-at.bofh.it> |
Dear RT Folks,
This is the RT stable review cycle of patch 3.14.72-rt76-rc1.
Please scream at me if I messed something up. Please test the patches too.
The -rc release will be uploaded to kernel.org and will be deleted when
the final release is out. This is just a review release (or release candidate).
The pre-releases will not be pushed to the git repository, only the
final release is.
If all goes well, this patch will be converted to the next main release
on 7/14/2016.
Enjoy,
-- Steve
To build 3.14.72-rt76-rc1 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.14.72.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.14/patch-3.14.72-rt76-rc1.patch.xz
You can also build from 3.14.72-rt75 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.14/incr/patch-3.14.72-rt75-rt76-rc1.patch.xz
Changes from 3.14.72-rt75:
---
Corey Minyard (1):
x86: Fix an RT MCE crash
Josh Cartwright (1):
list_bl: fixup bogus lockdep warning
Luiz Capitulino (1):
mm: perform lru_add_drain_all() remotely
Mike Galbraith (1):
mm/zsmalloc: Use get/put_cpu_light in zs_map_object()/zs_unmap_object()
Peter Zijlstra (1):
sched,preempt: Fix preempt_count manipulations
Rik van Riel (1):
kvm, rt: change async pagefault code locking for PREEMPT_RT
Sebastian Andrzej Siewior (6):
net: dev: always take qdisc's busylock in __dev_xmit_skb()
ARM: imx: always use TWD on IMX6Q
kernel/printk: Don't try to print from IRQ/NMI region
arm: lazy preempt: correct resched condition
locallock: add local_lock_on()
trace: correct off by one while recording the trace-event
Steven Rostedt (Red Hat) (1):
Linux 3.14.72-rt76-rc1
Thomas Gleixner (1):
perf/x86/intel/rapl: Make PMU lock raw
----
arch/arm/kernel/entry-armv.S | 6 ++++-
arch/arm/mach-imx/Kconfig | 2 +-
arch/x86/kernel/cpu/mcheck/mce.c | 3 ++-
arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 ++++++++--------
arch/x86/kernel/kvm.c | 37 +++++++++++++++--------------
include/asm-generic/preempt.h | 4 ++--
include/linux/list_bl.h | 12 ++++++----
include/linux/locallock.h | 6 +++++
include/trace/ftrace.h | 3 +++
kernel/printk/printk.c | 10 ++++++++
localversion-rt | 2 +-
mm/swap.c | 37 +++++++++++++++++++++++------
mm/zsmalloc.c | 4 ++--
net/core/dev.c | 4 ++++
14 files changed, 102 insertions(+), 48 deletions(-)
[toc] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 14/14] Linux 3.14.72-rt76-rc1 |
| Message-ID | <rU9cm-7AG-25@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch. If anyone has any objections, please let me know. ------------------ From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org> --- localversion-rt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/localversion-rt b/localversion-rt index 54e7da6f49fb..bd9bb72f6b5c 100644 --- a/localversion-rt +++ b/localversion-rt @@ -1 +1 @@ --rt75 +-rt76-rc1 -- 2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 11/14] mm: perform lru_add_drain_all() remotely |
| Message-ID | <rU9cm-7AG-37@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Luiz Capitulino <lcapitulino@redhat.com>
lru_add_drain_all() works by scheduling lru_add_drain_cpu() to run
on all CPUs that have non-empty LRU pagevecs and then waiting for
the scheduled work to complete. However, workqueue threads may never
have the chance to run on a CPU that's running a SCHED_FIFO task.
This causes lru_add_drain_all() to block forever.
This commit solves this problem by changing lru_add_drain_all()
to drain the LRU pagevecs of remote CPUs. This is done by grabbing
swapvec_lock and calling lru_add_drain_cpu().
PS: This is based on an idea and initial implementation by
Rik van Riel.
Signed-off-by: Rik van Riel <riel@redhat.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
mm/swap.c | 37 ++++++++++++++++++++++++++++++-------
1 file changed, 30 insertions(+), 7 deletions(-)
diff --git a/mm/swap.c b/mm/swap.c
index 9a9d4c7da2cc..a9064ed57fc2 100644
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -750,9 +750,15 @@ void lru_add_drain_cpu(int cpu)
unsigned long flags;
/* No harm done if a racing interrupt already did this */
+#ifdef CONFIG_PREEMPT_RT_BASE
+ local_lock_irqsave_on(rotate_lock, flags, cpu);
+ pagevec_move_tail(pvec);
+ local_unlock_irqrestore_on(rotate_lock, flags, cpu);
+#else
local_lock_irqsave(rotate_lock, flags);
pagevec_move_tail(pvec);
local_unlock_irqrestore(rotate_lock, flags);
+#endif
}
pvec = &per_cpu(lru_deactivate_pvecs, cpu);
@@ -795,12 +801,32 @@ void lru_add_drain(void)
local_unlock_cpu(swapvec_lock);
}
+
+#ifdef CONFIG_PREEMPT_RT_BASE
+static inline void remote_lru_add_drain(int cpu, struct cpumask *has_work)
+{
+ local_lock_on(swapvec_lock, cpu);
+ lru_add_drain_cpu(cpu);
+ local_unlock_on(swapvec_lock, cpu);
+}
+
+#else
+
static void lru_add_drain_per_cpu(struct work_struct *dummy)
{
lru_add_drain();
}
static DEFINE_PER_CPU(struct work_struct, lru_add_drain_work);
+static inline void remote_lru_add_drain(int cpu, struct cpumask *has_work)
+{
+ struct work_struct *work = &per_cpu(lru_add_drain_work, cpu);
+
+ INIT_WORK(work, lru_add_drain_per_cpu);
+ schedule_work_on(cpu, work);
+ cpumask_set_cpu(cpu, has_work);
+}
+#endif
void lru_add_drain_all(void)
{
@@ -813,20 +839,17 @@ void lru_add_drain_all(void)
cpumask_clear(&has_work);
for_each_online_cpu(cpu) {
- struct work_struct *work = &per_cpu(lru_add_drain_work, cpu);
-
if (pagevec_count(&per_cpu(lru_add_pvec, cpu)) ||
pagevec_count(&per_cpu(lru_rotate_pvecs, cpu)) ||
pagevec_count(&per_cpu(lru_deactivate_pvecs, cpu)) ||
- need_activate_page_drain(cpu)) {
- INIT_WORK(work, lru_add_drain_per_cpu);
- schedule_work_on(cpu, work);
- cpumask_set_cpu(cpu, &has_work);
- }
+ need_activate_page_drain(cpu))
+ remote_lru_add_drain(cpu, &has_work);
}
+#ifndef CONFIG_PREEMPT_RT_BASE
for_each_cpu(cpu, &has_work)
flush_work(&per_cpu(lru_add_drain_work, cpu));
+#endif
put_online_cpus();
mutex_unlock(&lock);
--
2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 10/14] locallock: add local_lock_on() |
| Message-ID | <rU9cm-7AG-29@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
include/linux/locallock.h | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/include/linux/locallock.h b/include/linux/locallock.h
index 21653e9bfa20..015271ff8ec8 100644
--- a/include/linux/locallock.h
+++ b/include/linux/locallock.h
@@ -66,6 +66,9 @@ static inline void __local_lock(struct local_irq_lock *lv)
#define local_lock(lvar) \
do { __local_lock(&get_local_var(lvar)); } while (0)
+#define local_lock_on(lvar, cpu) \
+ do { __local_lock(&per_cpu(lvar, cpu)); } while (0)
+
static inline int __local_trylock(struct local_irq_lock *lv)
{
if (lv->owner != current && spin_trylock_local(&lv->lock)) {
@@ -104,6 +107,9 @@ static inline void __local_unlock(struct local_irq_lock *lv)
put_local_var(lvar); \
} while (0)
+#define local_unlock_on(lvar, cpu) \
+ do { __local_unlock(&per_cpu(lvar, cpu)); } while (0)
+
static inline void __local_lock_irq(struct local_irq_lock *lv)
{
spin_lock_irqsave(&lv->lock, lv->flags);
--
2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 07/14] sched,preempt: Fix preempt_count manipulations |
| Message-ID | <rU9cm-7AG-45@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Peter Zijlstra <peterz@infradead.org>
Vikram reported that his ARM64 compiler managed to 'optimize' away the
preempt_count manipulations in code like:
preempt_enable_no_resched();
put_user();
preempt_disable();
Irrespective of that fact that that is horrible code that should be
fixed for many reasons, it does highlight a deficiency in the generic
preempt_count manipulators. As it is never right to combine/elide
preempt_count manipulations like this.
Therefore sprinkle some volatile in the two generic accessors to
ensure the compiler is aware of the fact that the preempt_count is
observed outside of the regular program-order view and thus cannot be
optimized away like this.
x86; the only arch not using the generic code is not affected as we
do all this in asm in order to use the segment base per-cpu stuff.
Cc: stable@vger.kernel.org
Cc: stable-rt@vger.kernel.org
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: a787870924db ("sched, arch: Create asm/preempt.h")
Reported-by: Vikram Mulukutla <markivx@codeaurora.org>
Tested-by: Vikram Mulukutla <markivx@codeaurora.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
include/asm-generic/preempt.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/include/asm-generic/preempt.h b/include/asm-generic/preempt.h
index 54352f4dde1a..65759d8b0b46 100644
--- a/include/asm-generic/preempt.h
+++ b/include/asm-generic/preempt.h
@@ -7,10 +7,10 @@
static __always_inline int preempt_count(void)
{
- return current_thread_info()->preempt_count;
+ return READ_ONCE(current_thread_info()->preempt_count);
}
-static __always_inline int *preempt_count_ptr(void)
+static __always_inline volatile int *preempt_count_ptr(void)
{
return ¤t_thread_info()->preempt_count;
}
--
2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 09/14] arm: lazy preempt: correct resched condition |
| Message-ID | <rU9cn-7AG-57@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> If we get out of preempt_schedule_irq() then we check for NEED_RESCHED and call the former function again if set because the preemption counter has be zero at this point. However the counter for lazy-preempt might not be zero therefore we have to check the counter before looking at the need_resched_lazy flag. Cc: stable-rt@vger.kernel.org Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> --- arch/arm/kernel/entry-armv.S | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 62bc04cc9b7d..ceda9997a29d 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S @@ -234,7 +234,11 @@ svc_preempt: bne 1b tst r0, #_TIF_NEED_RESCHED_LAZY moveq pc, r8 @ go again - b 1b + ldr r0, [tsk, #TI_PREEMPT_LAZY] @ get preempt lazy count + teq r0, #0 @ if preempt lazy count != 0 + beq 1b + mov pc, r8 @ go again + #endif __und_fault: -- 2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 08/14] kernel/printk: Dont try to print from IRQ/NMI region |
| Message-ID | <rU9cn-7AG-67@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
On -RT we try to acquire sleeping locks which might lead to warnings
from lockdep or a warn_on() from spin_try_lock() (which is a rtmutex on
RT).
We don't print in general from a IRQ off region so we should not try
this via console_unblank() / bust_spinlocks() as well.
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
kernel/printk/printk.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/kernel/printk/printk.c b/kernel/printk/printk.c
index 0b47939efd62..4472339e2156 100644
--- a/kernel/printk/printk.c
+++ b/kernel/printk/printk.c
@@ -1289,6 +1289,11 @@ static void call_console_drivers(int level, const char *text, size_t len)
if (!console_drivers)
return;
+ if (IS_ENABLED(CONFIG_PREEMPT_RT_BASE)) {
+ if (in_irq() || in_nmi())
+ return;
+ }
+
migrate_disable();
for_each_console(con) {
if (exclusive_console && con != exclusive_console)
@@ -2214,6 +2219,11 @@ void console_unblank(void)
{
struct console *c;
+ if (IS_ENABLED(CONFIG_PREEMPT_RT_BASE)) {
+ if (in_irq() || in_nmi())
+ return;
+ }
+
/*
* console_unblank can no longer be called in interrupt context unless
* oops_in_progress is set to 1..
--
2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 04/14] list_bl: fixup bogus lockdep warning |
| Message-ID | <rU9cn-7AG-55@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Josh Cartwright <joshc@ni.com>
At first glance, the use of 'static inline' seems appropriate for
INIT_HLIST_BL_HEAD().
However, when a 'static inline' function invocation is inlined by gcc,
all callers share any static local data declared within that inline
function.
This presents a problem for how lockdep classes are setup. raw_spinlocks, for
example, when CONFIG_DEBUG_SPINLOCK,
# define raw_spin_lock_init(lock) \
do { \
static struct lock_class_key __key; \
\
__raw_spin_lock_init((lock), #lock, &__key); \
} while (0)
When this macro is expanded into a 'static inline' caller, like
INIT_HLIST_BL_HEAD():
static inline INIT_HLIST_BL_HEAD(struct hlist_bl_head *h)
{
h->first = NULL;
raw_spin_lock_init(&h->lock);
}
...the static local lock_class_key object is made a function static.
For compilation units which initialize invoke INIT_HLIST_BL_HEAD() more
than once, then, all of the invocations share this same static local
object.
This can lead to some very confusing lockdep splats (example below).
Solve this problem by forcing the INIT_HLIST_BL_HEAD() to be a macro,
which prevents the lockdep class object sharing.
=============================================
[ INFO: possible recursive locking detected ]
4.4.4-rt11 #4 Not tainted
---------------------------------------------
kswapd0/59 is trying to acquire lock:
(&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan
but task is already holding lock:
(&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan
other info that might help us debug this:
Possible unsafe locking scenario:
CPU0
----
lock(&h->lock#2);
lock(&h->lock#2);
*** DEADLOCK ***
May be due to missing lock nesting notation
2 locks held by kswapd0/59:
#0: (shrinker_rwsem){+.+...}, at: rt_down_read_trylock
#1: (&h->lock#2){+.+.-.}, at: mb_cache_shrink_scan
Reported-by: Luis Claudio R. Goncalves <lclaudio@uudg.org>
Tested-by: Luis Claudio R. Goncalves <lclaudio@uudg.org>
Signed-off-by: Josh Cartwright <joshc@ni.com>
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
include/linux/list_bl.h | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/include/linux/list_bl.h b/include/linux/list_bl.h
index d8876a0cf036..017d0f1c1eb4 100644
--- a/include/linux/list_bl.h
+++ b/include/linux/list_bl.h
@@ -42,13 +42,15 @@ struct hlist_bl_node {
struct hlist_bl_node *next, **pprev;
};
-static inline void INIT_HLIST_BL_HEAD(struct hlist_bl_head *h)
-{
- h->first = NULL;
#ifdef CONFIG_PREEMPT_RT_BASE
- raw_spin_lock_init(&h->lock);
+#define INIT_HLIST_BL_HEAD(h) \
+do { \
+ (h)->first = NULL; \
+ raw_spin_lock_init(&(h)->lock); \
+} while (0)
+#else
+#define INIT_HLIST_BL_HEAD(h) (h)->first = NULL
#endif
-}
static inline void INIT_HLIST_BL_NODE(struct hlist_bl_node *h)
{
--
2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-12 19:00 +0200 |
| Subject | [PATCH RT 03/14] net: dev: always take qdiscs busylock in __dev_xmit_skb() |
| Message-ID | <rU9co-7AG-81@gated-at.bofh.it> |
| In reply to | #1441569 |
3.14.72-rt76-rc1 stable review patch. If anyone has any objections, please let me know. ------------------ From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> The root-lock is dropped before dev_hard_start_xmit() is invoked and after setting the __QDISC___STATE_RUNNING bit. If this task is now pushed away by a task with a higher priority then the task with the higher priority won't be able to submit packets to the NIC directly instead they will be enqueued into the Qdisc. The NIC will remain idle until the task(s) with higher priority leave the CPU and the task with lower priority gets back and finishes the job. If we take always the busylock we ensure that the RT task can boost the low-prio task and submit the packet. Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> Signed-off-by: Steven Rostedt <rostedt@goodmis.org> --- net/core/dev.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/net/core/dev.c b/net/core/dev.c index 4259edb6d29b..0a680b4adf35 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2720,7 +2720,11 @@ static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q, * This permits __QDISC_STATE_RUNNING owner to get the lock more often * and dequeue packets faster. */ +#ifdef CONFIG_PREEMPT_RT_FULL + contended = true; +#else contended = qdisc_is_running(q); +#endif if (unlikely(contended)) spin_lock(&q->busylock); -- 2.8.1
[toc] | [prev] | [next] | [standalone]
| From | Steven Rostedt <rostedt@goodmis.org> |
|---|---|
| Date | 2016-07-13 01:30 +0200 |
| Subject | Linux 3.14.72-rt76-rc2 |
| Message-ID | <rUfhM-3hH-21@gated-at.bofh.it> |
| In reply to | #1441569 |
Dear RT Folks,
This is the RT stable review cycle of patch 3.14.72-rt76-rc2.
Please scream at me if I messed something up. Please test the patches too.
The -rc release will be uploaded to kernel.org and will be deleted when
the final release is out. This is just a review release (or release candidate).
The pre-releases will not be pushed to the git repository, only the
final release is.
If all goes well, this patch will be converted to the next main release
on 7/14/2016.
Only difference from v1 is the removal of "ARM: imx: always use TWD on
IMX6Q"
Enjoy,
-- Steve
To build 3.14.72-rt76-rc2 directly, the following patches should be applied:
http://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.tar.xz
http://www.kernel.org/pub/linux/kernel/v3.x/patch-3.14.72.xz
http://www.kernel.org/pub/linux/kernel/projects/rt/3.14/patch-3.14.72-rt76-rc2.patch.xz
You can also build from 3.14.72-rt75 by applying the incremental patch:
http://www.kernel.org/pub/linux/kernel/projects/rt/3.14/incr/patch-3.14.72-rt75-rt76-rc2.patch.xz
Changes from 3.14.72-rt75:
---
Corey Minyard (1):
x86: Fix an RT MCE crash
Josh Cartwright (1):
list_bl: fixup bogus lockdep warning
Luiz Capitulino (1):
mm: perform lru_add_drain_all() remotely
Mike Galbraith (1):
mm/zsmalloc: Use get/put_cpu_light in zs_map_object()/zs_unmap_object()
Peter Zijlstra (1):
sched,preempt: Fix preempt_count manipulations
Rik van Riel (1):
kvm, rt: change async pagefault code locking for PREEMPT_RT
Sebastian Andrzej Siewior (5):
net: dev: always take qdisc's busylock in __dev_xmit_skb()
kernel/printk: Don't try to print from IRQ/NMI region
arm: lazy preempt: correct resched condition
locallock: add local_lock_on()
trace: correct off by one while recording the trace-event
Steven Rostedt (Red Hat) (1):
Linux 3.14.72-rt76-rc2
Thomas Gleixner (1):
perf/x86/intel/rapl: Make PMU lock raw
----
arch/arm/kernel/entry-armv.S | 6 ++++-
arch/x86/kernel/cpu/mcheck/mce.c | 3 ++-
arch/x86/kernel/cpu/perf_event_intel_rapl.c | 20 ++++++++--------
arch/x86/kernel/kvm.c | 37 +++++++++++++++--------------
include/asm-generic/preempt.h | 4 ++--
include/linux/list_bl.h | 12 ++++++----
include/linux/locallock.h | 6 +++++
include/trace/ftrace.h | 3 +++
kernel/printk/printk.c | 10 ++++++++
localversion-rt | 2 +-
mm/swap.c | 37 +++++++++++++++++++++++------
mm/zsmalloc.c | 4 ++--
net/core/dev.c | 4 ++++
13 files changed, 101 insertions(+), 47 deletions(-)
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web