Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f86225db authored by Adrian Hunter's avatar Adrian Hunter Committed by Arnaldo Carvalho de Melo
Browse files

perf report: Skip events with null branch stacks



A non-synthesized event might not have a branch stack if branch stacks
have been synthesized (using itrace options).

An example of that is when Intel PT records sched_switch events for
decoding purposes.  Those sched_switch events do not have branch stacks
even though the Intel PT decoder may be synthesizing other events that
do due to the itrace options.

Signed-off-by: default avatarAdrian Hunter <adrian.hunter@intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Link: http://lkml.kernel.org/r/1443186956-18718-12-git-send-email-adrian.hunter@intel.com


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent fb9fab66
Loading
Loading
Loading
Loading
+11 −4
Original line number Original line Diff line number Diff line
@@ -163,14 +163,21 @@ static int process_sample_event(struct perf_tool *tool,
	if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap))
	if (rep->cpu_list && !test_bit(sample->cpu, rep->cpu_bitmap))
		goto out_put;
		goto out_put;


	if (sort__mode == SORT_MODE__BRANCH)
	if (sort__mode == SORT_MODE__BRANCH) {
		/*
		 * A non-synthesized event might not have a branch stack if
		 * branch stacks have been synthesized (using itrace options).
		 */
		if (!sample->branch_stack)
			goto out_put;
		iter.ops = &hist_iter_branch;
		iter.ops = &hist_iter_branch;
	else if (rep->mem_mode)
	} else if (rep->mem_mode) {
		iter.ops = &hist_iter_mem;
		iter.ops = &hist_iter_mem;
	else if (symbol_conf.cumulate_callchain)
	} else if (symbol_conf.cumulate_callchain) {
		iter.ops = &hist_iter_cumulative;
		iter.ops = &hist_iter_cumulative;
	else
	} else {
		iter.ops = &hist_iter_normal;
		iter.ops = &hist_iter_normal;
	}


	if (al.map != NULL)
	if (al.map != NULL)
		al.map->dso->hit = 1;
		al.map->dso->hit = 1;