mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-12 05:48:39 +08:00
perf report: Bail out --mem-mode if mem info is not available
If perf.data is recorded without -d, don't allow user to use --mem-mode with 'perf report'. symbol_daddr and phys_daddr can be recorded separately and may be present in the perf.data but at the report time they are associated with mem-mode fields and thus this restriction applies to them as well. Before: $ perf record ls $ perf report --mem-mode --stdio # Overhead Local Weight Memory access Symbol # ........ ............ ............. ....................... 55.56% 0 N/A [k] 0xffffffff81a00ae7 After: $ perf report --mem-mode --stdio Error: Selected --mem-mode but no mem data. Did you call perf record without -d? Suggested-by: Arnaldo Carvalho de Melo <acme@kernel.org> Signed-off-by: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Jin Yao <yao.jin@linux.intel.com> Cc: Kan Liang <kan.liang@linux.intel.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: Namhyung Kim <namhyung@kernel.org> Link: http://lore.kernel.org/lkml/20191114132213.5419-4-ravi.bangoria@linux.ibm.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
aa6b3c9923
commit
bb30acae4c
@ -388,6 +388,14 @@ static int report__setup_sample_type(struct report *rep)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (sort__mode == SORT_MODE__MEMORY) {
|
||||||
|
if (!is_pipe && !(sample_type & PERF_SAMPLE_DATA_SRC)) {
|
||||||
|
ui__error("Selected --mem-mode but no mem data. "
|
||||||
|
"Did you call perf record without -d?\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain) {
|
if (symbol_conf.use_callchain || symbol_conf.cumulate_callchain) {
|
||||||
if ((sample_type & PERF_SAMPLE_REGS_USER) &&
|
if ((sample_type & PERF_SAMPLE_REGS_USER) &&
|
||||||
(sample_type & PERF_SAMPLE_STACK_USER)) {
|
(sample_type & PERF_SAMPLE_STACK_USER)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user