perf tests: Fix Convert perf time to TSC test for hybrid
[ Upstream commit deb44a6249f696106645c63c0603eab08a6122af ] The test does not always correctly determine the number of events for hybrids, nor allow for more than 1 evsel when parsing. Fix by iterating the events actually created and getting the correct evsel for the events processed. Fixes: d9da6f70eb235110 ("perf tests: Support 'Convert perf time to TSC' test for hybrid") Reviewed-by: Kan Liang <kan.liang@linux.intel.com> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com> Cc: Ian Rogers <irogers@google.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Thomas Richter <tmricht@linux.ibm.com> Link: https://lore.kernel.org/r/20220713123459.24145-3-adrian.hunter@intel.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
196c21deb0
commit
34e98fce9a
@ -20,8 +20,6 @@
|
||||
#include "tsc.h"
|
||||
#include "mmap.h"
|
||||
#include "tests.h"
|
||||
#include "pmu.h"
|
||||
#include "pmu-hybrid.h"
|
||||
|
||||
#define CHECK__(x) { \
|
||||
while ((x) < 0) { \
|
||||
@ -84,18 +82,8 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe
|
||||
|
||||
evlist__config(evlist, &opts, NULL);
|
||||
|
||||
evsel = evlist__first(evlist);
|
||||
|
||||
evsel->core.attr.comm = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
evsel->core.attr.enable_on_exec = 0;
|
||||
|
||||
/*
|
||||
* For hybrid "cycles:u", it creates two events.
|
||||
* Init the second evsel here.
|
||||
*/
|
||||
if (perf_pmu__has_hybrid() && perf_pmu__hybrid_mounted("cpu_atom")) {
|
||||
evsel = evsel__next(evsel);
|
||||
/* For hybrid "cycles:u", it creates two events */
|
||||
evlist__for_each_entry(evlist, evsel) {
|
||||
evsel->core.attr.comm = 1;
|
||||
evsel->core.attr.disabled = 1;
|
||||
evsel->core.attr.enable_on_exec = 0;
|
||||
@ -141,10 +129,12 @@ int test__perf_time_to_tsc(struct test *test __maybe_unused, int subtest __maybe
|
||||
goto next_event;
|
||||
|
||||
if (strcmp(event->comm.comm, comm1) == 0) {
|
||||
CHECK_NOT_NULL__(evsel = evlist__event2evsel(evlist, event));
|
||||
CHECK__(evsel__parse_sample(evsel, event, &sample));
|
||||
comm1_time = sample.time;
|
||||
}
|
||||
if (strcmp(event->comm.comm, comm2) == 0) {
|
||||
CHECK_NOT_NULL__(evsel = evlist__event2evsel(evlist, event));
|
||||
CHECK__(evsel__parse_sample(evsel, event, &sample));
|
||||
comm2_time = sample.time;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user