diff options
Diffstat (limited to 'tools/perf/builtin-report.c')
| -rw-r--r-- | tools/perf/builtin-report.c | 17 | 
1 files changed, 12 insertions, 5 deletions
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c index 2e317438980..cdae9b2db1c 100644 --- a/tools/perf/builtin-report.c +++ b/tools/perf/builtin-report.c @@ -374,16 +374,23 @@ static int __cmd_report(struct perf_report *rep)  	    (kernel_map->dso->hit &&  	     (kernel_kmap->ref_reloc_sym == NULL ||  	      kernel_kmap->ref_reloc_sym->addr == 0))) { -		const struct dso *kdso = kernel_map->dso; +		const char *desc = +		    "As no suitable kallsyms nor vmlinux was found, kernel samples\n" +		    "can't be resolved."; + +		if (kernel_map) { +			const struct dso *kdso = kernel_map->dso; +			if (!RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION])) { +				desc = "If some relocation was applied (e.g. " +				       "kexec) symbols may be misresolved."; +			} +		}  		ui__warning(  "Kernel address maps (/proc/{kallsyms,modules}) were restricted.\n\n"  "Check /proc/sys/kernel/kptr_restrict before running 'perf record'.\n\n%s\n\n"  "Samples in kernel modules can't be resolved as well.\n\n", -			    RB_EMPTY_ROOT(&kdso->symbols[MAP__FUNCTION]) ? -"As no suitable kallsyms nor vmlinux was found, kernel samples\n" -"can't be resolved." : -"If some relocation was applied (e.g. kexec) symbols may be misresolved."); +		desc);  	}  	if (dump_trace) {  |