2012-02-05 17:11:22

by Jiri Olsa

[permalink] [raw]
Subject: [PATCH] perf, tool: Fix prefix matching for kernel maps

In some perf ancient versions we used '[kernel.kallsyms._text]' as
the name for the kernel map.

This got changed with commit:
perf: 'perf kvm' tool for monitoring guest performance from host
commit a1645ce12adb6c9cc9e19d7695466204e3f017fe
Author: Zhang, Yanmin <[email protected]>

and we started to use following name '[kernel.kallsyms]_text'.

This name change is important for the report code dealing with ancient
perf data. When processing the kernel map event, we need to recognize
the old naming (dont match the last ']') and initialize the kernel map
correctly.

The subsequent call to maps__set_kallsyms_ref_reloc_sym deals with the
superfluous ']' to get correct symbol name.

Signed-off-by: Jiri Olsa <[email protected]>
---
tools/perf/util/event.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 73ddaf0..2044324 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -554,7 +554,7 @@ static int perf_event__process_kernel_mmap(struct perf_tool *tool __used,

is_kernel_mmap = memcmp(event->mmap.filename,
kmmap_prefix,
- strlen(kmmap_prefix)) == 0;
+ strlen(kmmap_prefix) - 1) == 0;
if (event->mmap.filename[0] == '/' ||
(!is_kernel_mmap && event->mmap.filename[0] == '[')) {

--
1.7.4.4


2012-02-06 20:09:06

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH] perf, tool: Fix prefix matching for kernel maps

Em Sun, Feb 05, 2012 at 06:11:05PM +0100, Jiri Olsa escreveu:
> In some perf ancient versions we used '[kernel.kallsyms._text]' as
> the name for the kernel map.
>
> This got changed with commit:
> perf: 'perf kvm' tool for monitoring guest performance from host
> commit a1645ce12adb6c9cc9e19d7695466204e3f017fe
> Author: Zhang, Yanmin <[email protected]>
>
> and we started to use following name '[kernel.kallsyms]_text'.
>
> This name change is important for the report code dealing with ancient
> perf data. When processing the kernel map event, we need to recognize
> the old naming (dont match the last ']') and initialize the kernel map
> correctly.
>
> The subsequent call to maps__set_kallsyms_ref_reloc_sym deals with the
> superfluous ']' to get correct symbol name.

Good catch & fix, thanks.

People curious about that -1 can look at 'git blame' to read the above
historical explanation ;-)

- Arnaldo

> Signed-off-by: Jiri Olsa <[email protected]>
> ---
> tools/perf/util/event.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
> index 73ddaf0..2044324 100644
> --- a/tools/perf/util/event.c
> +++ b/tools/perf/util/event.c
> @@ -554,7 +554,7 @@ static int perf_event__process_kernel_mmap(struct perf_tool *tool __used,
>
> is_kernel_mmap = memcmp(event->mmap.filename,
> kmmap_prefix,
> - strlen(kmmap_prefix)) == 0;
> + strlen(kmmap_prefix) - 1) == 0;
> if (event->mmap.filename[0] == '/' ||
> (!is_kernel_mmap && event->mmap.filename[0] == '[')) {
>
> --
> 1.7.4.4

2012-02-07 19:35:44

by Jiri Olsa

[permalink] [raw]
Subject: [tip:perf/core] perf tools: Fix prefix matching for kernel maps

Commit-ID: bf32c9ebc9890764c7a9984e3a0c8a57a059753d
Gitweb: http://git.kernel.org/tip/bf32c9ebc9890764c7a9984e3a0c8a57a059753d
Author: Jiri Olsa <[email protected]>
AuthorDate: Sun, 5 Feb 2012 18:11:05 +0100
Committer: Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 6 Feb 2012 18:57:39 -0200

perf tools: Fix prefix matching for kernel maps

In some perf ancient versions we used '[kernel.kallsyms._text]' as the
name for the kernel map.

This got changed with commit:
perf: 'perf kvm' tool for monitoring guest performance from host
commit a1645ce12adb6c9cc9e19d7695466204e3f017fe
Author: Zhang, Yanmin <[email protected]>

and we started to use following name '[kernel.kallsyms]_text'.

This name change is important for the report code dealing with ancient
perf data. When processing the kernel map event, we need to recognize
the old naming (dont match the last ']') and initialize the kernel map
correctly.

The subsequent call to maps__set_kallsyms_ref_reloc_sym deals with the
superfluous ']' to get correct symbol name.

Cc: Corey Ashford <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Paul Mackerras <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: http://lkml.kernel.org/r/[email protected]
Signed-off-by: Jiri Olsa <[email protected]>
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
tools/perf/util/event.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 73ddaf0..2044324 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -554,7 +554,7 @@ static int perf_event__process_kernel_mmap(struct perf_tool *tool __used,

is_kernel_mmap = memcmp(event->mmap.filename,
kmmap_prefix,
- strlen(kmmap_prefix)) == 0;
+ strlen(kmmap_prefix) - 1) == 0;
if (event->mmap.filename[0] == '/' ||
(!is_kernel_mmap && event->mmap.filename[0] == '[')) {