* [PATCH] perf tools: Fix kernel maps for kcore and eBPF
@ 2020-06-02 11:25 Adrian Hunter
2020-06-02 14:07 ` Arnaldo Carvalho de Melo
0 siblings, 1 reply; 2+ messages in thread
From: Adrian Hunter @ 2020-06-02 11:25 UTC (permalink / raw)
To: Arnaldo Carvalho de Melo; +Cc: Jiri Olsa, linux-kernel
Adjust pgoff also when moving a map's start address.
Example with v5.4.34 based kernel:
Before:
$ sudo tools/perf/perf record -a --kcore -e intel_pt//k sleep 1
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 1.958 MB perf.data ]
$ sudo tools/perf/perf script --itrace=e >/dev/null
Warning:
961 instruction trace errors
After:
$ sudo tools/perf/perf script --itrace=e >/dev/null
$
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Fixes: fb5a88d4131a ("perf tools: Preserve eBPF maps when loading kcore")
Cc: stable@vger.kernel.org
---
tools/perf/util/symbol.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index 57cbe7a29868..5ddf84dcbae7 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -1224,6 +1224,7 @@ int maps__merge_in(struct maps *kmaps, struct map *new_map)
m->end = old_map->start;
list_add_tail(&m->node, &merged);
+ new_map->pgoff += old_map->end - new_map->start;
new_map->start = old_map->end;
}
} else {
@@ -1244,6 +1245,7 @@ int maps__merge_in(struct maps *kmaps, struct map *new_map)
* |new......| -> |new...|
* |old....| -> |old....|
*/
+ new_map->pgoff += old_map->end - new_map->start;
new_map->start = old_map->end;
}
}
--
2.17.1
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH] perf tools: Fix kernel maps for kcore and eBPF
2020-06-02 11:25 [PATCH] perf tools: Fix kernel maps for kcore and eBPF Adrian Hunter
@ 2020-06-02 14:07 ` Arnaldo Carvalho de Melo
0 siblings, 0 replies; 2+ messages in thread
From: Arnaldo Carvalho de Melo @ 2020-06-02 14:07 UTC (permalink / raw)
To: Adrian Hunter; +Cc: Jiri Olsa, linux-kernel
Em Tue, Jun 02, 2020 at 02:25:05PM +0300, Adrian Hunter escreveu:
> Adjust pgoff also when moving a map's start address.
>
> Example with v5.4.34 based kernel:
>
> Before:
>
> $ sudo tools/perf/perf record -a --kcore -e intel_pt//k sleep 1
> [ perf record: Woken up 1 times to write data ]
> [ perf record: Captured and wrote 1.958 MB perf.data ]
> $ sudo tools/perf/perf script --itrace=e >/dev/null
> Warning:
> 961 instruction trace errors
>
> After:
>
> $ sudo tools/perf/perf script --itrace=e >/dev/null
> $
Thanks, tested on a kaby lake system (i5-7500) and applied,
- Arnaldo
> Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
> Fixes: fb5a88d4131a ("perf tools: Preserve eBPF maps when loading kcore")
> Cc: stable@vger.kernel.org
> ---
> tools/perf/util/symbol.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
> index 57cbe7a29868..5ddf84dcbae7 100644
> --- a/tools/perf/util/symbol.c
> +++ b/tools/perf/util/symbol.c
> @@ -1224,6 +1224,7 @@ int maps__merge_in(struct maps *kmaps, struct map *new_map)
>
> m->end = old_map->start;
> list_add_tail(&m->node, &merged);
> + new_map->pgoff += old_map->end - new_map->start;
> new_map->start = old_map->end;
> }
> } else {
> @@ -1244,6 +1245,7 @@ int maps__merge_in(struct maps *kmaps, struct map *new_map)
> * |new......| -> |new...|
> * |old....| -> |old....|
> */
> + new_map->pgoff += old_map->end - new_map->start;
> new_map->start = old_map->end;
> }
> }
> --
> 2.17.1
>
--
- Arnaldo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-06-02 14:07 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-06-02 11:25 [PATCH] perf tools: Fix kernel maps for kcore and eBPF Adrian Hunter
2020-06-02 14:07 ` Arnaldo Carvalho de Melo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.