* [PATCH RT 1/4] Revert: KVM: lapic: mark LAPIC timer handler as irqsafe
2016-07-12 19:08 [PATCH RT 0/4] Linux 3.4.112-rt143-rc1 Steven Rostedt
@ 2016-07-12 19:08 ` Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 2/4] trace: correct off by one while recording the trace-event Steven Rostedt
` (2 subsequent siblings)
3 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2016-07-12 19:08 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, Sebastian Andrzej Siewior,
John Kacur, Paul Gortmaker
[-- Attachment #1: 0001-Revert-KVM-lapic-mark-LAPIC-timer-handler-as-irqsafe.patch --]
[-- Type: text/plain, Size: 3005 bytes --]
3.4.112-rt143-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: "Steven Rostedt (Red Hat)" <rostedt@goodmis.org>
The whole patch was not backported correctly and causes allmodconfig to
fail.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
arch/x86/kvm/lapic.c | 42 +++---------------------------------------
1 file changed, 3 insertions(+), 39 deletions(-)
diff --git a/arch/x86/kvm/lapic.c b/arch/x86/kvm/lapic.c
index b6dffeacbe92..53454a6775bf 100644
--- a/arch/x86/kvm/lapic.c
+++ b/arch/x86/kvm/lapic.c
@@ -683,38 +683,8 @@ static void update_divide_count(struct kvm_lapic *apic)
apic->divide_count);
}
-
-static enum hrtimer_restart apic_timer_fn(struct hrtimer *data);
-
-static void apic_timer_expired(struct hrtimer *data)
-{
- int ret, i = 0;
- enum hrtimer_restart r;
- struct kvm_timer *ktimer = container_of(data, struct kvm_timer, timer);
-
- r = apic_timer_fn(data);
-
- if (r == HRTIMER_RESTART) {
- do {
- ret = hrtimer_start_expires(data, HRTIMER_MODE_ABS);
- if (ret == -ETIME)
- hrtimer_add_expires_ns(&ktimer->timer,
- ktimer->period);
- i++;
- } while (ret == -ETIME && i < 10);
-
- if (ret == -ETIME) {
- printk_once(KERN_ERR "%s: failed to reprogram timer\n",
- __func__);
- WARN_ON_ONCE(1);
- }
- }
-}
-
-
static void start_apic_timer(struct kvm_lapic *apic)
{
- int ret;
ktime_t now;
atomic_set(&apic->lapic_timer.pending, 0);
@@ -744,11 +714,9 @@ static void start_apic_timer(struct kvm_lapic *apic)
}
}
- ret = hrtimer_start(&apic->lapic_timer.timer,
+ hrtimer_start(&apic->lapic_timer.timer,
ktime_add_ns(now, apic->lapic_timer.period),
HRTIMER_MODE_ABS);
- if (ret == -ETIME)
- apic_timer_expired(&apic->lapic_timer.timer);
apic_debug("%s: bus cycle is %" PRId64 "ns, now 0x%016"
PRIx64 ", "
@@ -778,10 +746,8 @@ static void start_apic_timer(struct kvm_lapic *apic)
ns = (tscdeadline - guest_tsc) * 1000000ULL;
do_div(ns, this_tsc_khz);
}
- ret = hrtimer_start(&apic->lapic_timer.timer,
+ hrtimer_start(&apic->lapic_timer.timer,
ktime_add_ns(now, ns), HRTIMER_MODE_ABS);
- if (ret == -ETIME)
- apic_timer_expired(&apic->lapic_timer.timer);
local_irq_restore(flags);
}
@@ -1211,7 +1177,6 @@ int kvm_create_lapic(struct kvm_vcpu *vcpu)
hrtimer_init(&apic->lapic_timer.timer, CLOCK_MONOTONIC,
HRTIMER_MODE_ABS);
apic->lapic_timer.timer.function = kvm_timer_fn;
- apic->lapic_timer.timer.irqsafe = 1;
apic->lapic_timer.t_ops = &lapic_timer_ops;
apic->lapic_timer.kvm = vcpu->kvm;
apic->lapic_timer.vcpu = vcpu;
@@ -1309,8 +1274,7 @@ void __kvm_migrate_apic_timer(struct kvm_vcpu *vcpu)
timer = &apic->lapic_timer.timer;
if (hrtimer_cancel(timer))
- if (hrtimer_start_expires(timer, HRTIMER_MODE_ABS) == -ETIME)
- apic_timer_expired(timer);
+ hrtimer_start_expires(timer, HRTIMER_MODE_ABS);
}
void kvm_lapic_sync_from_vapic(struct kvm_vcpu *vcpu)
--
2.8.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RT 2/4] trace: correct off by one while recording the trace-event
2016-07-12 19:08 [PATCH RT 0/4] Linux 3.4.112-rt143-rc1 Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 1/4] Revert: KVM: lapic: mark LAPIC timer handler as irqsafe Steven Rostedt
@ 2016-07-12 19:08 ` Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 3/4] x86: Fix an RT MCE crash Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 4/4] Linux 3.4.112-rt143-rc1 Steven Rostedt
3 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2016-07-12 19:08 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, Sebastian Andrzej Siewior,
John Kacur, Paul Gortmaker, stable-rt
[-- Attachment #1: 0002-trace-correct-off-by-one-while-recording-the-trace-e.patch --]
[-- Type: text/plain, Size: 1206 bytes --]
3.4.112-rt143-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Trace events like raw_syscalls show always a preempt code of one. The
reason is that on PREEMPT kernels rcu_read_lock_sched_notrace()
increases the preemption counter and the function recording the counter
is caller within the RCU section.
Cc: stable-rt@vger.kernel.org
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
[ Changed this to upstream version. See commit e947841c0dce ]
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
include/trace/ftrace.h | 3 +++
1 file changed, 3 insertions(+)
diff --git a/include/trace/ftrace.h b/include/trace/ftrace.h
index 763bf05ccb27..73aab555b42d 100644
--- a/include/trace/ftrace.h
+++ b/include/trace/ftrace.h
@@ -530,6 +530,9 @@ ftrace_raw_event_##call(void *__data, proto) \
\
local_save_flags(irq_flags); \
pc = preempt_count(); \
+ /* Account for tracepoint preempt disable */ \
+ if (IS_ENABLED(CONFIG_PREEMPT)) \
+ pc--; \
\
__data_size = ftrace_get_offsets_##call(&__data_offsets, args); \
\
--
2.8.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH RT 3/4] x86: Fix an RT MCE crash
2016-07-12 19:08 [PATCH RT 0/4] Linux 3.4.112-rt143-rc1 Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 1/4] Revert: KVM: lapic: mark LAPIC timer handler as irqsafe Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 2/4] trace: correct off by one while recording the trace-event Steven Rostedt
@ 2016-07-12 19:08 ` Steven Rostedt
2016-07-12 19:08 ` [PATCH RT 4/4] Linux 3.4.112-rt143-rc1 Steven Rostedt
3 siblings, 0 replies; 6+ messages in thread
From: Steven Rostedt @ 2016-07-12 19:08 UTC (permalink / raw)
To: linux-kernel, linux-rt-users
Cc: Thomas Gleixner, Carsten Emde, Sebastian Andrzej Siewior,
John Kacur, Paul Gortmaker, Borislav Petkov, Corey Minyard
[-- Attachment #1: 0003-x86-Fix-an-RT-MCE-crash.patch --]
[-- Type: text/plain, Size: 1275 bytes --]
3.4.112-rt143-rc1 stable review patch.
If anyone has any objections, please let me know.
------------------
From: Corey Minyard <cminyard@mvista.com>
On some x86 systems an MCE interrupt would come in before the kernel
was ready for it. Looking at the latest RT code, it has similar
(but not quite the same) code, except it adds a bool that tells if
MCE handling is initialized. That was required because they had
switched to use swork instead of a kernel thread. Here, just
checking to see if the thread is NULL is good enough to see if
MCE handling is initialized.
Suggested-by: Borislav Petkov <bp@alien8.de>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
---
arch/x86/kernel/cpu/mcheck/mce.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/x86/kernel/cpu/mcheck/mce.c b/arch/x86/kernel/cpu/mcheck/mce.c
index 27068f690ede..674872b08ea4 100644
--- a/arch/x86/kernel/cpu/mcheck/mce.c
+++ b/arch/x86/kernel/cpu/mcheck/mce.c
@@ -1344,7 +1344,8 @@ static int mce_notify_work_init(void)
static void mce_notify_work(void)
{
- wake_up_process(mce_notify_helper);
+ if (mce_notify_helper)
+ wake_up_process(mce_notify_helper);
}
#else
static void mce_notify_work(void)
--
2.8.1
^ permalink raw reply related [flat|nested] 6+ messages in thread