提交 f3d46b2e 编写于 作者: P Peter Zijlstra 提交者: Ingo Molnar

perf, x86: Fix double enable calls

hw_perf_enable() would enable already enabled events.

This causes problems with code that assumes that ->enable/->disable calls
are balanced (like the LBR code does).

What happens is that events that were already running and left in place
would get enabled again.

Avoid this by only enabling new events that match their previous
assignment.
Signed-off-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@infradead.org>
Cc: paulus@samba.org
Cc: eranian@google.com
Cc: robert.richter@amd.com
Cc: fweisbec@gmail.com
LKML-Reference: <new-submission>
Signed-off-by: NIngo Molnar <mingo@elte.hu>
上级 19925ce7
......@@ -835,6 +835,10 @@ void hw_perf_enable(void)
event = cpuc->event_list[i];
hwc = &event->hw;
if (i < n_running &&
match_prev_assignment(hwc, cpuc, i))
continue;
if (hwc->idx == -1)
x86_assign_hw_event(event, cpuc, i);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册