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 <[email protected]> Tested-by: Kan Liang <[email protected]> Cc: Adrian Hunter <[email protected]> Cc: Ahmad Yasin <[email protected]> Cc: Alexander Shishkin <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Athira Rajeev <[email protected]> Cc: Caleb Biggers <[email protected]> Cc: Edward Baker <[email protected]> Cc: Florian Fischer <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: James Clark <[email protected]> Cc: Jiri Olsa <[email protected]> Cc: John Garry <[email protected]> Cc: Kajol Jain <[email protected]> Cc: Kang Minchul <[email protected]> Cc: Leo Yan <[email protected]> Cc: Mark Rutland <[email protected]> Cc: Namhyung Kim <[email protected]> Cc: Perry Taylor <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Ravi Bangoria <[email protected]> Cc: Rob Herring <[email protected]> Cc: Samantha Alt <[email protected]> Cc: Stephane Eranian <[email protected]> Cc: Sumanth Korikkar <[email protected]> Cc: Suzuki Poulouse <[email protected]> Cc: Thomas Richter <[email protected]> Cc: Tiezhu Yang <[email protected]> Cc: Weilin Wang <[email protected]> Cc: Xing Zhengjun <[email protected]> Cc: Yang Jihong <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
1 parent ccc66c6 commit 327daf3

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

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)