net/ethernet/jme: disable ASPM
[pandora-kernel.git] / tools / perf / builtin-report.c
index 7c88a24..1da243d 100644 (file)
@@ -69,8 +69,8 @@ static int perf_report__add_branch_hist_entry(struct perf_tool *tool,
 
        if ((sort__has_parent || symbol_conf.use_callchain)
            && sample->callchain) {
-               err = machine__resolve_callchain(machine, al->thread,
-                                                sample->callchain, &parent);
+               err = machine__resolve_callchain(machine, evsel, al->thread,
+                                                sample, &parent);
                if (err)
                        return err;
        }
@@ -93,7 +93,7 @@ static int perf_report__add_branch_hist_entry(struct perf_tool *tool,
                        struct annotation *notes;
                        err = -ENOMEM;
                        bx = he->branch_info;
-                       if (bx->from.sym && use_browser > 0) {
+                       if (bx->from.sym && use_browser == 1 && sort__has_sym) {
                                notes = symbol__annotation(bx->from.sym);
                                if (!notes->src
                                    && symbol__alloc_hist(bx->from.sym) < 0)
@@ -107,7 +107,7 @@ static int perf_report__add_branch_hist_entry(struct perf_tool *tool,
                                        goto out;
                        }
 
-                       if (bx->to.sym && use_browser > 0) {
+                       if (bx->to.sym && use_browser == 1 && sort__has_sym) {
                                notes = symbol__annotation(bx->to.sym);
                                if (!notes->src
                                    && symbol__alloc_hist(bx->to.sym) < 0)
@@ -140,8 +140,8 @@ static int perf_evsel__add_hist_entry(struct perf_evsel *evsel,
        struct hist_entry *he;
 
        if ((sort__has_parent || symbol_conf.use_callchain) && sample->callchain) {
-               err = machine__resolve_callchain(machine, al->thread,
-                                                sample->callchain, &parent);
+               err = machine__resolve_callchain(machine, evsel, al->thread,
+                                                sample, &parent);
                if (err)
                        return err;
        }
@@ -162,7 +162,7 @@ static int perf_evsel__add_hist_entry(struct perf_evsel *evsel,
         * so we don't allocated the extra space needed because the stdio
         * code will not use it.
         */
-       if (he->ms.sym != NULL && use_browser > 0) {
+       if (he->ms.sym != NULL && use_browser == 1 && sort__has_sym) {
                struct annotation *notes = symbol__annotation(he->ms.sym);
 
                assert(evsel != NULL);
@@ -223,9 +223,9 @@ static int process_sample_event(struct perf_tool *tool,
 
 static int process_read_event(struct perf_tool *tool,
                              union perf_event *event,
-                             struct perf_sample *sample __used,
+                             struct perf_sample *sample __maybe_unused,
                              struct perf_evsel *evsel,
-                             struct machine *machine __used)
+                             struct machine *machine __maybe_unused)
 {
        struct perf_report *rep = container_of(tool, struct perf_report, tool);
 
@@ -287,7 +287,7 @@ static int perf_report__setup_sample_type(struct perf_report *rep)
 
 extern volatile int session_done;
 
-static void sig_handler(int sig __used)
+static void sig_handler(int sig __maybe_unused)
 {
        session_done = 1;
 }
@@ -397,17 +397,17 @@ static int __cmd_report(struct perf_report *rep)
                desc);
        }
 
-       if (dump_trace) {
-               perf_session__fprintf_nr_events(session, stdout);
-               goto out_delete;
-       }
-
        if (verbose > 3)
                perf_session__fprintf(session, stdout);
 
        if (verbose > 2)
                perf_session__fprintf_dsos(session, stdout);
 
+       if (dump_trace) {
+               perf_session__fprintf_nr_events(session, stdout);
+               goto out_delete;
+       }
+
        nr_samples = 0;
        list_for_each_entry(pos, &session->evlist->entries, node) {
                struct hists *hists = &pos->hists;
@@ -533,13 +533,14 @@ setup:
 }
 
 static int
-parse_branch_mode(const struct option *opt __used, const char *str __used, int unset)
+parse_branch_mode(const struct option *opt __maybe_unused,
+                 const char *str __maybe_unused, int unset)
 {
        sort__branch_mode = !unset;
        return 0;
 }
 
-int cmd_report(int argc, const char **argv, const char *prefix __used)
+int cmd_report(int argc, const char **argv, const char *prefix __maybe_unused)
 {
        struct perf_session *session;
        struct stat st;
@@ -638,6 +639,8 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
                    "Show a column with the sum of periods"),
        OPT_CALLBACK_NOOPT('b', "branch-stack", &sort__branch_mode, "",
                    "use branch records for histogram filling", parse_branch_mode),
+       OPT_STRING(0, "objdump", &objdump_path, "path",
+                  "objdump binary to use for disassembly and annotations"),
        OPT_END()
        };
 
@@ -686,15 +689,19 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
 
        if (strcmp(report.input_name, "-") != 0)
                setup_browser(true);
-       else
+       else {
                use_browser = 0;
+               perf_hpp__init(false, false);
+       }
+
+       setup_sorting(report_usage, options);
 
        /*
         * Only in the newt browser we are doing integrated annotation,
         * so don't allocate extra space that won't be used in the stdio
         * implementation.
         */
-       if (use_browser > 0) {
+       if (use_browser == 1 && sort__has_sym) {
                symbol_conf.priv_size = sizeof(struct annotation);
                report.annotate_init  = symbol__annotate_init;
                /*
@@ -717,8 +724,6 @@ int cmd_report(int argc, const char **argv, const char *prefix __used)
        if (symbol__init() < 0)
                goto error;
 
-       setup_sorting(report_usage, options);
-
        if (parent_pattern != default_parent_pattern) {
                if (sort_dimension__add("parent") < 0)
                        goto error;