perf parse-events x86: Avoid sorting uops_retired.slots
[platform/kernel/linux-starfive.git] / tools / perf / arch / x86 / util / evlist.c
index cbd5821..b1ce0c5 100644 (file)
@@ -75,11 +75,12 @@ int arch_evlist__add_default_attrs(struct evlist *evlist,
 
 int arch_evlist__cmp(const struct evsel *lhs, const struct evsel *rhs)
 {
-       if (topdown_sys_has_perf_metrics() && evsel__sys_has_perf_metrics(lhs)) {
+       if (topdown_sys_has_perf_metrics() &&
+           (arch_evsel__must_be_in_group(lhs) || arch_evsel__must_be_in_group(rhs))) {
                /* Ensure the topdown slots comes first. */
-               if (strcasestr(lhs->name, "slots"))
+               if (strcasestr(lhs->name, "slots") && !strcasestr(lhs->name, "uops_retired.slots"))
                        return -1;
-               if (strcasestr(rhs->name, "slots"))
+               if (strcasestr(rhs->name, "slots") && !strcasestr(rhs->name, "uops_retired.slots"))
                        return 1;
                /* Followed by topdown events. */
                if (strcasestr(lhs->name, "topdown") && !strcasestr(rhs->name, "topdown"))