Skip to content

Commit 3963d84

Browse files
James-A-Clarkacmel
authored andcommitted
perf cs-etm: Don't test full_auxtrace because it's always set
There is no path in cs-etm where this isn't true so it doesn't need to be tested. Also re-order the beginning of cs_etm_recording_options() so that nothing is done until the early exit is passed. Signed-off-by: James Clark <james.clark@arm.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Denis Nikitin <denik@google.com> Cc: Ian Rogers <irogers@google.com> Cc: Ingo Molnar <mingo@redhat.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Cc: Mike Leach <mike.leach@linaro.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Yang Shi <shy828301@gmail.com> Cc: coresight@lists.linaro.org Cc: linux-arm-kernel@lists.infradead.org Link: https://lore.kernel.org/r/20230424134748.228137-4-james.clark@arm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent 6593f01 commit 3963d84

1 file changed

Lines changed: 25 additions & 31 deletions

File tree

tools/perf/arch/arm/util/cs-etm.c

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -319,32 +319,33 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
319319
bool privileged = perf_event_paranoid_check(-1);
320320
int err = 0;
321321

322-
ptr->evlist = evlist;
323-
ptr->snapshot_mode = opts->auxtrace_snapshot_mode;
324-
325-
if (!record_opts__no_switch_events(opts) &&
326-
perf_can_record_switch_events())
327-
opts->record_switch_events = true;
328-
329322
evlist__for_each_entry(evlist, evsel) {
330323
if (evsel->core.attr.type == cs_etm_pmu->type) {
331324
if (cs_etm_evsel) {
332325
pr_err("There may be only one %s event\n",
333326
CORESIGHT_ETM_PMU_NAME);
334327
return -EINVAL;
335328
}
336-
evsel->core.attr.freq = 0;
337-
evsel->core.attr.sample_period = 1;
338-
evsel->needs_auxtrace_mmap = true;
339329
cs_etm_evsel = evsel;
340-
opts->full_auxtrace = true;
341330
}
342331
}
343332

344333
/* no need to continue if at least one event of interest was found */
345334
if (!cs_etm_evsel)
346335
return 0;
347336

337+
ptr->evlist = evlist;
338+
ptr->snapshot_mode = opts->auxtrace_snapshot_mode;
339+
340+
if (!record_opts__no_switch_events(opts) &&
341+
perf_can_record_switch_events())
342+
opts->record_switch_events = true;
343+
344+
cs_etm_evsel->core.attr.freq = 0;
345+
cs_etm_evsel->core.attr.sample_period = 1;
346+
cs_etm_evsel->needs_auxtrace_mmap = true;
347+
opts->full_auxtrace = true;
348+
348349
ret = cs_etm_set_sink_attr(cs_etm_pmu, cs_etm_evsel);
349350
if (ret)
350351
return ret;
@@ -414,16 +415,15 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
414415
}
415416
}
416417

417-
/* We are in full trace mode but '-m,xyz' wasn't specified */
418-
if (opts->full_auxtrace && !opts->auxtrace_mmap_pages) {
418+
/* Buffer sizes weren't specified with '-m,xyz' so give some defaults */
419+
if (!opts->auxtrace_mmap_pages) {
419420
if (privileged) {
420421
opts->auxtrace_mmap_pages = MiB(4) / page_size;
421422
} else {
422423
opts->auxtrace_mmap_pages = KiB(128) / page_size;
423424
if (opts->mmap_pages == UINT_MAX)
424425
opts->mmap_pages = KiB(256) / page_size;
425426
}
426-
427427
}
428428

429429
if (opts->auxtrace_snapshot_mode)
@@ -454,23 +454,17 @@ static int cs_etm_recording_options(struct auxtrace_record *itr,
454454
}
455455

456456
/* Add dummy event to keep tracking */
457-
if (opts->full_auxtrace) {
458-
struct evsel *tracking_evsel;
459-
460-
err = parse_event(evlist, "dummy:u");
461-
if (err)
462-
goto out;
463-
464-
tracking_evsel = evlist__last(evlist);
465-
evlist__set_tracking_event(evlist, tracking_evsel);
466-
467-
tracking_evsel->core.attr.freq = 0;
468-
tracking_evsel->core.attr.sample_period = 1;
469-
470-
/* In per-cpu case, always need the time of mmap events etc */
471-
if (!perf_cpu_map__empty(cpus))
472-
evsel__set_sample_bit(tracking_evsel, TIME);
473-
}
457+
err = parse_event(evlist, "dummy:u");
458+
if (err)
459+
goto out;
460+
evsel = evlist__last(evlist);
461+
evlist__set_tracking_event(evlist, evsel);
462+
evsel->core.attr.freq = 0;
463+
evsel->core.attr.sample_period = 1;
464+
465+
/* In per-cpu case, always need the time of mmap events etc */
466+
if (!perf_cpu_map__empty(cpus))
467+
evsel__set_sample_bit(evsel, TIME);
474468

475469
out:
476470
return err;

0 commit comments

Comments
 (0)