From: Ingo Molnar <mingo@elte.hu>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>,
linux-kernel@vger.kernel.org,
Martin Schwidefsky <schwidefsky@de.ibm.com>
Subject: Re: ftrace: preemptoff selftest not working
Date: Tue, 18 Nov 2008 21:55:58 +0100 [thread overview]
Message-ID: <20081118205558.GA6243@elte.hu> (raw)
In-Reply-To: <alpine.DEB.1.10.0811181220530.15003@gandalf.stny.rr.com>
* Steven Rostedt <rostedt@goodmis.org> wrote:
>
> On Tue, 18 Nov 2008, Heiko Carstens wrote:
> > >
> > > we can drop it in selected initcalls just fine. Its only role is
> > > old-style init functions racing with other async contexts of
> > > themselves.
> >
> > Something like below works fine for me...
> >
> > Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
>
> Acked-by: Steven Rostedt <srostedt@redhat.com>
i've applied it in the form below to tip/tracing/ftrace, thanks guys!
Since it's only about the self-test, and since they have not been
working for a long time, i'm punting this to v2.6.29, not .28.
Ingo
------------->
>From a22506347d038a66506c6f57e9b97104128e280d Mon Sep 17 00:00:00 2001
From: Heiko Carstens <heiko.carstens@de.ibm.com>
Date: Tue, 18 Nov 2008 18:06:35 +0100
Subject: [PATCH] ftrace: preemptoff selftest not working
Impact: fix preemptoff and preemptirqsoff tracer self-tests
I was wondering why the preemptoff and preemptirqsoff tracer selftests
don't work on s390. After all its just that they get called from
non-preemptible context:
kernel_init() will execute all initcalls, however the first line in
kernel_init() is lock_kernel(), which causes the preempt_count to be
increased. Any later calls to add_preempt_count() (especially those
from the selftests) will therefore not result in a call to
trace_preempt_off() since the check below in add_preempt_count()
will be false:
if (preempt_count() == val)
trace_preempt_off(CALLER_ADDR0, get_parent_ip(CALLER_ADDR1));
Hence the trace buffer will be empty.
Fix this by releasing the BKL during the self-tests.
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Acked-by: Steven Rostedt <rostedt@goodmis.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
---
kernel/trace/trace.c | 8 ++++++++
1 files changed, 8 insertions(+), 0 deletions(-)
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 396fda0..1689212 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -532,6 +532,13 @@ int register_tracer(struct tracer *type)
}
#ifdef CONFIG_FTRACE_STARTUP_TEST
+ /*
+ * When this gets called we hold the BKL which means that preemption
+ * is disabled. Various trace selftests however need to disable
+ * and enable preemption for successful tests. So we drop the BKL here
+ * and grab it after the tests again.
+ */
+ unlock_kernel();
if (type->selftest) {
struct tracer *saved_tracer = current_trace;
struct trace_array *tr = &global_trace;
@@ -562,6 +569,7 @@ int register_tracer(struct tracer *type)
}
printk(KERN_CONT "PASSED\n");
}
+ lock_kernel();
#endif
type->next = trace_types;
next prev parent reply other threads:[~2008-11-18 20:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-18 12:54 ftrace: preemptoff selftest not working Heiko Carstens
2008-11-18 13:48 ` Ingo Molnar
2008-11-18 13:49 ` Steven Rostedt
2008-11-18 13:52 ` Ingo Molnar
2008-11-18 14:32 ` Steven Rostedt
2008-11-18 14:47 ` Ingo Molnar
2008-11-18 17:06 ` Heiko Carstens
2008-11-18 17:21 ` Steven Rostedt
2008-11-18 20:55 ` Ingo Molnar [this message]
2008-11-19 9:02 ` Ingo Molnar
2008-11-19 9:23 ` Heiko Carstens
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=20081118205558.GA6243@elte.hu \
--to=mingo@elte.hu \
--cc=heiko.carstens@de.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=schwidefsky@de.ibm.com \
/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.