public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Mike Galbraith <efault@gmx.de>
To: Avi Kivity <avi@redhat.com>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>,
	rostedt@goodmis.org, LKML <linux-kernel@vger.kernel.org>,
	Ingo Molnar <mingo@elte.hu>,
	Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	Frederic Weisbecker <fweisbec@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Masami Hiramatsu <mhiramat@redhat.com>
Subject: [patch] Re: [perf] Finding uninstalled modules Was Re: mailing list for trace users
Date: Wed, 23 Sep 2009 11:20:58 +0200	[thread overview]
Message-ID: <1253697658.11461.36.camel@marge.simson.net> (raw)
In-Reply-To: <4AB9DCC8.5050603@redhat.com>

On Wed, 2009-09-23 at 11:31 +0300, Avi Kivity wrote:
> On 09/22/2009 11:17 PM, Arnaldo Carvalho de Melo wrote:
> >
> >> $ perf annotate -v -v -k ~avi/kvm/linux-2.6/vmlinux -m vmx_vcpu_run  |
> >>      
> > Here is the problem, he is passing a vmlinux, that way we don't parse
> > /proc/kallsyms, so no module symbols, he uses -m to load the modules
> > symbols but mod_dso__load_module_paths only looks at /lib/modules/, i.e.
> > installed modules.
> >
> > I guess Avi hasn't installed modules, right? So the right fix for this
> > case is to figure out where modules are from the path given to -k, i.e.
> > we first use ~avi/kvm/linux-2.6/ as the modules path prefix and then
> > fallback to /lib/modules if we can't find modules there, right?
> >    
> 
> Modules were installed (I always load them with modprobe).  It's 
> possible that the installed modules were a later version than the loaded 
> modules, but Mike's reply leads me to believe there was a real bug there.

Yup, brown baggie variety.  Oh darn.

perf_counter tools: fix brown baggie module symbol loading bug.

If there are no modules currently loaded, or the last module scanned is not
loaded, dso__load_modules() steps on the value from dso__load_vmlinux(), so
we happily load the kallsyms symbols on top of what we've already loaded.

Fix that such that the total count of symbols loaded is returned.  Should
module symbol load fail after parsing of vmlinux, is's a hard failure, so
do not silently fall-back to kallsyms.

Signed-off-by: Mike Galbraith <efault@gmx.de>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
LKML-Reference: <new-submission>

 tools/perf/util/symbol.c |   17 +++++++++++++----
 1 files changed, 13 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c
index fd3d9c8..559fb06 100644
--- a/tools/perf/util/symbol.c
+++ b/tools/perf/util/symbol.c
@@ -833,7 +833,7 @@ int dso__load_modules(struct dso *self, symbol_filter_t filter, int v)
 	struct mod_dso *mods = mod_dso__new_dso("modules");
 	struct module *pos;
 	struct rb_node *next;
-	int err;
+	int err, count = 0;
 
 	err = mod_dso__load_modules(mods);
 
@@ -852,14 +852,16 @@ int dso__load_modules(struct dso *self, symbol_filter_t filter, int v)
 			break;
 
 		next = rb_next(&pos->rb_node);
+		count += err;
 	}
 
 	if (err < 0) {
 		mod_dso__delete_modules(mods);
 		mod_dso__delete_self(mods);
+		return err;
 	}
 
-	return err;
+	return count;
 }
 
 static inline void dso__fill_symbol_holes(struct dso *self)
@@ -913,8 +915,15 @@ int dso__load_kernel(struct dso *self, const char *vmlinux,
 
 	if (vmlinux) {
 		err = dso__load_vmlinux(self, vmlinux, filter, v);
-		if (err > 0 && use_modules)
-			err = dso__load_modules(self, filter, v);
+		if (err > 0 && use_modules) {
+			int syms = dso__load_modules(self, filter, v);
+
+			if (syms < 0) {
+				fprintf(stderr, "dso__load_modules failed!\n");
+				return syms;
+			}
+			err += syms;
+		}
 	}
 
 	if (err <= 0)



  parent reply	other threads:[~2009-09-23  9:21 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-16 20:16 mailing list for trace users Steven Rostedt
2009-09-21 19:17 ` Frederic Weisbecker
2009-09-22  0:46   ` Li Zefan
2009-09-22  9:31     ` Ingo Molnar
2009-09-21 19:50 ` John Kacur
2009-09-22  9:13 ` Avi Kivity
2009-09-22 10:59   ` Peter Zijlstra
2009-09-22 11:51     ` Mike Galbraith
2009-09-22 11:18   ` Mike Galbraith
2009-09-22 11:28   ` Mike Galbraith
2009-09-22 11:34     ` Avi Kivity
2009-09-22 11:47       ` Mike Galbraith
2009-09-22 11:51         ` Avi Kivity
2009-09-22 11:54           ` Mike Galbraith
2009-09-22 13:53             ` Mike Galbraith
2009-09-22 14:03               ` Avi Kivity
2009-09-22 19:09                 ` Mike Galbraith
2009-09-22 19:14                   ` Avi Kivity
2009-09-23  8:26                     ` Mike Galbraith
2009-09-22 20:17           ` [perf] Finding uninstalled modules Was " Arnaldo Carvalho de Melo
2009-09-23  8:31             ` Avi Kivity
2009-09-23  8:37               ` Arnaldo Carvalho de Melo
2009-09-23  9:15               ` Ingo Molnar
2009-09-23  9:20               ` Mike Galbraith [this message]
2009-09-23  9:55                 ` [patch] " Avi Kivity
2009-09-23 10:02                   ` Mike Galbraith
2009-09-23 11:31                   ` Mike Galbraith
2009-09-23 12:00                     ` Mike Galbraith
2009-09-23 12:58                     ` Avi Kivity
2009-09-23 13:06                       ` Mike Galbraith
2009-09-23 13:10                       ` Avi Kivity
2009-09-23 13:50                         ` Mike Galbraith
2009-09-23 14:00                           ` Avi Kivity
2009-09-23 14:09                             ` Mike Galbraith
2009-09-23 14:39                               ` Avi Kivity
2009-09-23 14:52                                 ` Mike Galbraith
2009-09-23 14:56                                   ` Avi Kivity
2009-09-23 15:05                                     ` Mike Galbraith
2009-09-23 15:09                                       ` Avi Kivity
2009-09-23 15:26                                         ` Mike Galbraith
2009-09-24  8:07                                         ` Mike Galbraith
2009-09-24 11:01                                           ` [tip:perf/urgent] perf tools: Handle relative paths while loading module symbols tip-bot for Mike Galbraith
2009-09-23 11:49                 ` [tip:perf/urgent] perf tools: Fix module symbol loading bug tip-bot for Mike Galbraith
2009-09-22 22:32 ` mailing list for trace users David Miller
2009-09-23 11:47   ` Ingo Molnar
2009-09-23 16:45     ` Masami Hiramatsu
2009-09-23 17:00       ` Ingo Molnar
2009-09-23 18:07         ` Masami Hiramatsu
2009-09-23 20:07           ` Ingo Molnar
2009-09-23 18:14     ` David Miller
2009-09-23 19:30       ` Ingo Molnar
2009-09-23 19:40         ` John Kacur
2009-09-23 19:42           ` John Kacur
2009-09-23 19:59             ` Ingo Molnar
2009-09-23 21:24               ` Steven Rostedt
2009-09-23 21:41                 ` Ingo Molnar
2009-09-23 21:56                 ` Ingo Molnar
2009-09-23 19:49           ` Ingo Molnar
2009-09-23 20:08             ` John Kacur
2009-09-23 21:54         ` David Miller
2009-09-23 22:02           ` Ingo Molnar
2009-09-23 22:47         ` David Miller
2009-09-24 11:51           ` Ingo Molnar
2009-09-23 11:48   ` Ingo Molnar
2009-09-23 18:12     ` David Miller
2009-09-23 19:41       ` Ingo Molnar
2009-09-23 21:55         ` David Miller
2009-09-23 22:10           ` Ingo Molnar
2009-09-23 22:41             ` David Miller
2009-09-24 11:16               ` Ingo Molnar
2009-09-24 16:40                 ` David Miller
2009-09-24 18:58                 ` David Miller
2009-09-24 19:22                   ` Ingo Molnar

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=1253697658.11461.36.camel@marge.simson.net \
    --to=efault@gmx.de \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=avi@redhat.com \
    --cc=fweisbec@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mathieu.desnoyers@polymtl.ca \
    --cc=mhiramat@redhat.com \
    --cc=mingo@elte.hu \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox