From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Namhyung Kim <namhyung@kernel.org>
Cc: Adrian Hunter <adrian.hunter@intel.com>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
Ingo Molnar <mingo@kernel.org>, Paul Mackerras <paulus@samba.org>,
Namhyung Kim <namhyung.kim@lge.com>,
LKML <linux-kernel@vger.kernel.org>, Jiri Olsa <jolsa@redhat.com>,
David Ahern <dsahern@gmail.com>,
Stephane Eranian <eranian@google.com>,
Andi Kleen <andi@firstfloor.org>,
stable@vger.kernel.org
Subject: Re: [PATCH v2] perf tools: Fix build-id matching on vmlinux
Date: Fri, 5 Sep 2014 12:44:02 -0300 [thread overview]
Message-ID: <20140905154402.GF30520@kernel.org> (raw)
In-Reply-To: <1409930200.1662.16.camel@leonhard>
Em Sat, Sep 06, 2014 at 12:16:40AM +0900, Namhyung Kim escreveu:
> Hi Adrian and Arnaldo,
>
> 2014-09-05 (금), 11:11 -0300, Arnaldo Carvalho de Melo:
> > Em Fri, Sep 05, 2014 at 10:22:40AM +0300, Adrian Hunter escreveu:
> > > On 09/05/2014 07:59 AM, Namhyung Kim wrote:
> > > > +++ b/tools/perf/util/machine.c
> > > > @@ -1060,10 +1060,14 @@ static int machine__process_kernel_mmap_event(struct machine *machine,
> > > > strlen(kmmap_prefix));
> > > > /*
> > > > * Should be there already, from the build-id table in
> > > > - * the header.
> > > > + * the header (but maybe with a different name: "vmlinux").
> > > > */
> > > > - struct dso *kernel = __dsos__findnew(&machine->kernel_dsos,
> > > > - kmmap_prefix);
> > > > + struct dso *kernel = dsos__find(&machine->kernel_dsos,
> > > > + "vmlinux", true);
> >
> > > Isn't "vmlinux" just the basename of the original file name, so if it had a
> > > different name this wouldn't work e.g. if the filename had been
> > > /boot/vmlinuz-3.11.0-26-generic then you would need
> > > "vmlinuz-3.11.0-26-generic" for this to work?
> >
> > Yeah, looking for well known pathnames to then check if the build-id
> > matches the one we're looking for, be it because we obtained it from
> > /sys/kernel/notes (for the running kernel), or from the perf.data file
> > build-id table is ok, as we don't know where it is.
> >
> > Plain sticking "vmlinux" there is not.
>
> I don't get it. AFAIK when perf record runs, it uses [kernel.kallsyms]
> name for kernel map. But it can be changed only if it found a "vmlinux"
> file in the vmlinux_path[]. So short name will always be "vmlinux" -
> okay, it might be vmlinux-$(uname -r) too; I can add it.
>
> As you know, the vmlinux file is a ELF image that created during kernel
> build process so I guess its name is fixed. It's different from the
> vmlinu"z" which resides in /boot directory.
>
> Am I missing something?
[acme@zoo linux]$ perf report --help 2>&1 | grep vmlin
-k, --vmlinux=<file>
vmlinux pathname
[acme@zoo linux]$
Yes, it is using [kernel.kallsyms].ref_reloc_sym for the synthesized
KERNEL mmap event, but it stores the full path in the build-id table.
It seems we need a way to state that an entry in the build-id table is
for the kernel, without looking at its file name. That or to put the
build-id into the synthesized kernel mmap event. Which is better,
because:
That leads to another problem that needs to get solved eventually: We
need to have the build-id into PERF_RECORD_MMAP, because we're now using
just the mmap filename as the key, not the contents, and for long
running sessions, DSOs can get updated, etc.
- Arnaldo
next prev parent reply other threads:[~2014-09-05 15:44 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-05 4:59 [PATCH v2] perf tools: Fix build-id matching on vmlinux Namhyung Kim
2014-09-05 7:22 ` Adrian Hunter
2014-09-05 14:11 ` Arnaldo Carvalho de Melo
2014-09-05 15:16 ` Namhyung Kim
2014-09-05 15:44 ` Arnaldo Carvalho de Melo [this message]
2014-09-07 20:24 ` Stephane Eranian
2014-09-08 13:38 ` Arnaldo Carvalho de Melo
2014-09-12 6:28 ` Namhyung Kim
2014-09-12 6:14 ` Namhyung Kim
2014-09-12 14:11 ` Arnaldo Carvalho de Melo
2014-09-19 6:26 ` Namhyung Kim
2014-09-19 14:16 ` Arnaldo Carvalho de Melo
2014-09-19 15:42 ` Namhyung Kim
2014-09-19 16:48 ` Arnaldo Carvalho de Melo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140905154402.GF30520@kernel.org \
--to=acme@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=adrian.hunter@intel.com \
--cc=andi@firstfloor.org \
--cc=dsahern@gmail.com \
--cc=eranian@google.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung.kim@lge.com \
--cc=namhyung@kernel.org \
--cc=paulus@samba.org \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.