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: Peter 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: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
parent
19925ce778
commit
f3d46b2e6f
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue