perf session: Don't rely on evlist in pipe mode
[ Upstream commit 0973ad97c187e06aece61f685b9c3b2d93290a73 ] Session sets a number parameters that rely on evlist. These parameters are not used in pipe-mode and should not be set, since evlist is unavailable. Fix that. Signed-off-by: David Carrillo-Cisneros <davidcc@google.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: He Kuang <hekuang@huawei.com> Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Paul Turner <pjt@google.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Simon Que <sque@chromium.org> Cc: Stephane Eranian <eranian@google.com> Cc: Wang Nan <wangnan0@huawei.com> Link: http://lkml.kernel.org/r/20170410201432.24807-6-davidcc@google.com [ Check if file != NULL in perf_session__new(), like when used by builtin-top.c ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com> Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8c4e5168dd
commit
4c885c3546
1 changed files with 13 additions and 3 deletions
|
@ -139,8 +139,14 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
|||
if (perf_session__open(session) < 0)
|
||||
goto out_close;
|
||||
|
||||
perf_session__set_id_hdr_size(session);
|
||||
perf_session__set_comm_exec(session);
|
||||
/*
|
||||
* set session attributes that are present in perf.data
|
||||
* but not in pipe-mode.
|
||||
*/
|
||||
if (!file->is_pipe) {
|
||||
perf_session__set_id_hdr_size(session);
|
||||
perf_session__set_comm_exec(session);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
session->machines.host.env = &perf_env;
|
||||
|
@ -155,7 +161,11 @@ struct perf_session *perf_session__new(struct perf_data_file *file,
|
|||
pr_warning("Cannot read kernel map\n");
|
||||
}
|
||||
|
||||
if (tool && tool->ordering_requires_timestamps &&
|
||||
/*
|
||||
* In pipe-mode, evlist is empty until PERF_RECORD_HEADER_ATTR is
|
||||
* processed, so perf_evlist__sample_id_all is not meaningful here.
|
||||
*/
|
||||
if ((!file || !file->is_pipe) && tool && tool->ordering_requires_timestamps &&
|
||||
tool->ordered_events && !perf_evlist__sample_id_all(session->evlist)) {
|
||||
dump_printf("WARNING: No sample_id_all support, falling back to unordered processing\n");
|
||||
tool->ordered_events = false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue