perf report: Fix incorrectly added dimensions as switch perf data file
[platform/kernel/linux-rpi.git] / tools / perf / builtin-report.c
index aae0e57..ea3f074 100644 (file)
@@ -399,6 +399,13 @@ static int report__setup_sample_type(struct report *rep)
                                PERF_SAMPLE_BRANCH_ANY))
                rep->nonany_branch_mode = true;
 
+#ifndef HAVE_LIBUNWIND_SUPPORT
+       if (dwarf_callchain_users) {
+               ui__warning("Please install libunwind development packages "
+                           "during the perf build.\n");
+       }
+#endif
+
        return 0;
 }
 
@@ -1024,6 +1031,7 @@ int cmd_report(int argc, const char **argv)
        struct stat st;
        bool has_br_stack = false;
        int branch_mode = -1;
+       int last_key = 0;
        bool branch_call_mode = false;
 #define CALLCHAIN_DEFAULT_OPT  "graph,0.5,caller,function,percent"
        static const char report_callchain_help[] = "Display call graph (stack chain/backtrace):\n\n"
@@ -1389,7 +1397,8 @@ repeat:
                sort_order = sort_tmp;
        }
 
-       if (setup_sorting(session->evlist) < 0) {
+       if ((last_key != K_SWITCH_INPUT_DATA) &&
+           (setup_sorting(session->evlist) < 0)) {
                if (sort_order)
                        parse_options_usage(report_usage, options, "s", 1);
                if (field_order)
@@ -1468,6 +1477,7 @@ repeat:
        ret = __cmd_report(&report);
        if (ret == K_SWITCH_INPUT_DATA) {
                perf_session__delete(session);
+               last_key = K_SWITCH_INPUT_DATA;
                goto repeat;
        } else
                ret = 0;