From 1091c66e30f5ee43cbf18972f45657df2dffbc96 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 6 Apr 2015 21:01:10 +0200 Subject: [PATCH] 3.10-stable patches added patches: perf-fix-irq_work-tail-recursion.patch vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch --- .../perf-fix-irq_work-tail-recursion.patch | 78 +++++++++++++++++++ queue-3.10/series | 2 + ...fbsetpower-fix-missing-rate-rate_12m.patch | 29 +++++++ 3 files changed, 109 insertions(+) create mode 100644 queue-3.10/perf-fix-irq_work-tail-recursion.patch create mode 100644 queue-3.10/vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch diff --git a/queue-3.10/perf-fix-irq_work-tail-recursion.patch b/queue-3.10/perf-fix-irq_work-tail-recursion.patch new file mode 100644 index 00000000000..9efb7d206d3 --- /dev/null +++ b/queue-3.10/perf-fix-irq_work-tail-recursion.patch @@ -0,0 +1,78 @@ +From d525211f9d1be8b523ec7633f080f2116f5ea536 Mon Sep 17 00:00:00 2001 +From: Peter Zijlstra +Date: Thu, 19 Feb 2015 18:03:11 +0100 +Subject: perf: Fix irq_work 'tail' recursion + +From: Peter Zijlstra + +commit d525211f9d1be8b523ec7633f080f2116f5ea536 upstream. + +Vince reported a watchdog lockup like: + + [] perf_tp_event+0xc4/0x210 + [] perf_trace_lock+0x12a/0x160 + [] lock_release+0x130/0x260 + [] _raw_spin_unlock_irqrestore+0x24/0x40 + [] do_send_sig_info+0x5d/0x80 + [] send_sigio_to_task+0x12f/0x1a0 + [] send_sigio+0xae/0x100 + [] kill_fasync+0x97/0xf0 + [] perf_event_wakeup+0xd4/0xf0 + [] perf_pending_event+0x33/0x60 + [] irq_work_run_list+0x4c/0x80 + [] irq_work_run+0x18/0x40 + [] smp_trace_irq_work_interrupt+0x3f/0xc0 + [] trace_irq_work_interrupt+0x6d/0x80 + +Which is caused by an irq_work generating new irq_work and therefore +not allowing forward progress. + +This happens because processing the perf irq_work triggers another +perf event (tracepoint stuff) which in turn generates an irq_work ad +infinitum. + +Avoid this by raising the recursion counter in the irq_work -- which +effectively disables all software events (including tracepoints) from +actually triggering again. + +Reported-by: Vince Weaver +Tested-by: Vince Weaver +Signed-off-by: Peter Zijlstra (Intel) +Cc: Arnaldo Carvalho de Melo +Cc: Jiri Olsa +Cc: Paul Mackerras +Cc: Steven Rostedt +Link: http://lkml.kernel.org/r/20150219170311.GH21418@twins.programming.kicks-ass.net +Signed-off-by: Ingo Molnar +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/events/core.c | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -4007,6 +4007,13 @@ static void perf_pending_event(struct ir + { + struct perf_event *event = container_of(entry, + struct perf_event, pending); ++ int rctx; ++ ++ rctx = perf_swevent_get_recursion_context(); ++ /* ++ * If we 'fail' here, that's OK, it means recursion is already disabled ++ * and we won't recurse 'further'. ++ */ + + if (event->pending_disable) { + event->pending_disable = 0; +@@ -4017,6 +4024,9 @@ static void perf_pending_event(struct ir + event->pending_wakeup = 0; + perf_event_wakeup(event); + } ++ ++ if (rctx >= 0) ++ perf_swevent_put_recursion_context(rctx); + } + + /* diff --git a/queue-3.10/series b/queue-3.10/series index d2107c7e5a0..eaffb21041f 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -15,3 +15,5 @@ nl80211-ignore-ht-vht-capabilities-without-qos-wmm.patch mac80211-disable-u-apsd-queues-by-default.patch mac80211-drop-unencrypted-frames-in-mesh-fwding.patch revert-iwlwifi-mvm-fix-failure-path-when-power_update.patch +perf-fix-irq_work-tail-recursion.patch +vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch diff --git a/queue-3.10/vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch b/queue-3.10/vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch new file mode 100644 index 00000000000..12ba1bd8d98 --- /dev/null +++ b/queue-3.10/vt6655-rfbsetpower-fix-missing-rate-rate_12m.patch @@ -0,0 +1,29 @@ +From 40c8790bcb7ac74f3038153cd09310e220c6a1df Mon Sep 17 00:00:00 2001 +From: Malcolm Priestley +Date: Sat, 7 Mar 2015 17:04:54 +0000 +Subject: vt6655: RFbSetPower fix missing rate RATE_12M + +From: Malcolm Priestley + +commit 40c8790bcb7ac74f3038153cd09310e220c6a1df upstream. + +When the driver sets this rate a power of zero value is set causing +data flow stoppage until another rate is tried. + +Signed-off-by: Malcolm Priestley +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/staging/vt6655/rf.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/staging/vt6655/rf.c ++++ b/drivers/staging/vt6655/rf.c +@@ -966,6 +966,7 @@ bool RFbSetPower( + break; + case RATE_6M: + case RATE_9M: ++ case RATE_12M: + case RATE_18M: + byPwr = pDevice->abyOFDMPwrTbl[uCH]; + if (pDevice->byRFType == RF_UW2452) { -- 2.47.3