Skip to content

Commit 327daf3

Browse files
captain5050acmel
authored andcommitted
perf parse-events: Don't reorder ungrouped events by PMU
The pmu_group_name by default returns "cpu" which on non-hybrid/ARM means that ungrouped software, and hardware events are all going to sort by the original insertion index. However, on hybrid and ARM wildcard expansion may mean the PMU name is set and events will be unnecessarily reordered - triggering the reordering warning. Signed-off-by: Ian Rogers <irogers@google.com> Tested-by: Kan Liang <kan.liang@linux.intel.com> Cc: Adrian Hunter <adrian.hunter@intel.com> Cc: Ahmad Yasin <ahmad.yasin@intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Athira Rajeev <atrajeev@linux.vnet.ibm.com> Cc: Caleb Biggers <caleb.biggers@intel.com> Cc: Edward Baker <edward.baker@intel.com> Cc: Florian Fischer <florian.fischer@muhq.space> Cc: Ingo Molnar <mingo@redhat.com> Cc: James Clark <james.clark@arm.com> Cc: Jiri Olsa <jolsa@kernel.org> Cc: John Garry <john.g.garry@oracle.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Kang Minchul <tegongkang@gmail.com> Cc: Leo Yan <leo.yan@linaro.org> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Perry Taylor <perry.taylor@intel.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@amd.com> Cc: Rob Herring <robh@kernel.org> Cc: Samantha Alt <samantha.alt@intel.com> Cc: Stephane Eranian <eranian@google.com> Cc: Sumanth Korikkar <sumanthk@linux.ibm.com> Cc: Suzuki Poulouse <suzuki.poulose@arm.com> Cc: Thomas Richter <tmricht@linux.ibm.com> Cc: Tiezhu Yang <yangtiezhu@loongson.cn> Cc: Weilin Wang <weilin.wang@intel.com> Cc: Xing Zhengjun <zhengjun.xing@linux.intel.com> Cc: Yang Jihong <yangjihong1@huawei.com> Link: https://lore.kernel.org/r/20230502223851.2234828-5-irogers@google.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
1 parent ccc66c6 commit 327daf3

1 file changed

Lines changed: 15 additions & 8 deletions

File tree

tools/perf/util/parse-events.c

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2140,25 +2140,32 @@ static int evlist__cmp(void *state, const struct list_head *l, const struct list
21402140
int *leader_idx = state;
21412141
int lhs_leader_idx = *leader_idx, rhs_leader_idx = *leader_idx, ret;
21422142
const char *lhs_pmu_name, *rhs_pmu_name;
2143+
bool lhs_has_group = false, rhs_has_group = false;
21432144

21442145
/*
21452146
* First sort by grouping/leader. Read the leader idx only if the evsel
21462147
* is part of a group, as -1 indicates no group.
21472148
*/
2148-
if (lhs_core->leader != lhs_core || lhs_core->nr_members > 1)
2149+
if (lhs_core->leader != lhs_core || lhs_core->nr_members > 1) {
2150+
lhs_has_group = true;
21492151
lhs_leader_idx = lhs_core->leader->idx;
2150-
if (rhs_core->leader != rhs_core || rhs_core->nr_members > 1)
2152+
}
2153+
if (rhs_core->leader != rhs_core || rhs_core->nr_members > 1) {
2154+
rhs_has_group = true;
21512155
rhs_leader_idx = rhs_core->leader->idx;
2156+
}
21522157

21532158
if (lhs_leader_idx != rhs_leader_idx)
21542159
return lhs_leader_idx - rhs_leader_idx;
21552160

2156-
/* Group by PMU. Groups can't span PMUs. */
2157-
lhs_pmu_name = evsel__group_pmu_name(lhs);
2158-
rhs_pmu_name = evsel__group_pmu_name(rhs);
2159-
ret = strcmp(lhs_pmu_name, rhs_pmu_name);
2160-
if (ret)
2161-
return ret;
2161+
/* Group by PMU if there is a group. Groups can't span PMUs. */
2162+
if (lhs_has_group && rhs_has_group) {
2163+
lhs_pmu_name = evsel__group_pmu_name(lhs);
2164+
rhs_pmu_name = evsel__group_pmu_name(rhs);
2165+
ret = strcmp(lhs_pmu_name, rhs_pmu_name);
2166+
if (ret)
2167+
return ret;
2168+
}
21622169

21632170
/* Architecture specific sorting. */
21642171
return arch_evlist__cmp(lhs, rhs);

0 commit comments

Comments
 (0)