Re: [PATCH] Revert "perf machine: Fix paranoid check in machine__set_kernel_mmap()"

From: Namhyung Kim
Date: Wed Apr 11 2018 - 19:31:17 EST


Hello,

On Wed, Apr 11, 2018 at 06:07:52PM -0500, Kim Phillips wrote:
> perf test 1 is failing on an arm64 box (that has a kernel module
> loaded fwiw). Running bisect resulted in commit 1d12cec6ce99 "perf
> machine: Fix paranoid check in machine__set_kernel_mmap()" being the
> first bad commit. Reverting it fixes symbol resolution:
>
> # ./perf.bad record true; ./perf.bad --no-pager report --stdio --quiet
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.001 MB perf.data (10 samples) ]
> 64.34% true [unknown] [k] 0xffff20000809ffb8
> 32.12% true [unknown] [k] 0xffff20000869f400
> 3.24% true [unknown] [k] 0xffff20000868d924
> 0.28% perf.ba [unknown] [k] 0xffff200008598b34
> 0.03% perf.ba [unknown] [k] 0xffff200008598a94
>
> # ./perf.good record true; ./perf.good --no-pager report --stdio --quiet
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 0.001 MB perf.data (9 samples) ]
> 91.71% true [kernel.kallsyms] [k] restore_nameidata
> 7.60% true [kernel.kallsyms] [k] perf_iterate_ctx.constprop.38
> 0.69% perf.go [kernel.kallsyms] [k] perf_event_exec
>
> Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
> Cc: Namhyung Kim <namhyung@xxxxxxxxxx>
> Cc: Jiri Olsa <jolsa@xxxxxxxxxx>
> Cc: Ingo Molnar <mingo@xxxxxxxxxx>
> Cc: David Ahern <dsahern@xxxxxxxxx>
> Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx>
> Cc: Peter Zijlstra <a.p.zijlstra@xxxxxxxxx>
> Cc: <kernel-team@xxxxxxx>
> Fixes: 1d12cec6ce99 ("perf machine: Fix paranoid check in machine__set_kernel_mmap()")
> Signed-off-by: Kim Phillips <kim.phillips@xxxxxxx>
> ---
> It's not clear to me what the specific intent of the original commit
> was, thus the revert.

Hmm.. maybe your kernel map has non-zero start and zero end. I
thought it was just from an old or invalid data. But now I think that
overflow can create it.. could you please show me the mmap event?

$ perf script --show-mmap-events

Thanks,
Namhyung


>
> tools/perf/util/machine.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
> index 2eca8478e24f..089399139778 100644
> --- a/tools/perf/util/machine.c
> +++ b/tools/perf/util/machine.c
> @@ -1224,7 +1224,7 @@ static void machine__set_kernel_mmap(struct machine *machine,
> * Be a bit paranoid here, some perf.data file came with
> * a zero sized synthesized MMAP event for the kernel.
> */
> - if (start == 0 && end == 0)
> + if (machine->vmlinux_maps[i]->end == 0)
> machine->vmlinux_maps[i]->end = ~0ULL;
> }
> }
> --
> 2.17.0
>