diff options
| author | Peter Zijlstra <[email protected]> | 2016-07-06 16:02:43 +0000 |
|---|---|---|
| committer | Ingo Molnar <[email protected]> | 2016-08-10 11:13:24 +0000 |
| commit | 09e61b4f78498bd9f213b0a536e80b79507ea89f (patch) | |
| tree | 8d4732fb8c286e125e578043c212ab602ad2b3fe /tools/perf/util/scripting-engines/trace-event-perl.c | |
| parent | perf/core: Sched out groups atomically (diff) | |
| download | kernel-09e61b4f78498bd9f213b0a536e80b79507ea89f.tar.gz kernel-09e61b4f78498bd9f213b0a536e80b79507ea89f.zip | |
perf/x86/intel: Rework the large PEBS setup code
In order to allow optimizing perf_pmu_sched_task() we must ensure
perf_sched_cb_{inc,dec}() are no longer called from NMI context; this
means that pmu::{start,stop}() can no longer use them.
Prepare for this by reworking the whole large PEBS setup code.
The current code relied on the cpuc->pebs_enabled state, however since
that reflects the current active state as per pmu::{start,stop}() we
can no longer rely on this.
Introduce two counters: cpuc->n_pebs and cpuc->n_large_pebs which
count the total number of PEBS events and the number of PEBS events
that have FREERUNNING set, resp.. With this we can tell if the current
setup requires a single record interrupt threshold or can use a larger
buffer.
This also improves the code in that it re-enables the large threshold
once the PEBS event that required single record gets removed.
Signed-off-by: Peter Zijlstra (Intel) <[email protected]>
Cc: Alexander Shishkin <[email protected]>
Cc: Arnaldo Carvalho de Melo <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Linus Torvalds <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Stephane Eranian <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Vince Weaver <[email protected]>
Cc: [email protected]
Signed-off-by: Ingo Molnar <[email protected]>
Diffstat (limited to 'tools/perf/util/scripting-engines/trace-event-perl.c')
0 files changed, 0 insertions, 0 deletions
