From: mathieu.desnoyers@polymtl.ca (Mathieu Desnoyers)
Subject: [ltt-dev] [PATCH v2] add tracepoints of panic and kexec
Date: Wed, 18 Feb 2009 23:14:46 -0500 [thread overview]
Message-ID: <20090219041446.GG7956@Krystal> (raw)
In-Reply-To: <62826BBD9D1A43129074C551483312DB@zhaoleiwin>
* Zhaolei (zhaolei at cn.fujitsu.com) wrote:
> * From: "Mathieu Desnoyers" <compudj@krystal.dyndns.org>
> >* Zhaolei (zhaolei at cn.fujitsu.com) wrote:
> >> Instrumentation of following panic and kexec related events are added:
> >> panic
> >> kernel_kexec
> >> crash_kexec
> >>
> >> It is useful for build flight-recorder program based on lttng infrastructure.
> >>
> >
> > Hrm, I'm wondering if these are events we are interested to trace or if
> > you plan to use these tracepoints as hooks into the kernel to connect
> > the tracer infrastructure to it ?
> Hello, Mathieu
>
> IMHO, both.
>
> As a programmer who want to build flight-recorder based on lttng infrastructure,
> he can:
> 1: use lttng trace, and get lttng's trace datas from kernel-dump file.
> or
> 2: use lttng's tracepoint, and record events himself.
>
> But as a lttng's programmer, we can make both way possible.
>
> What is your opinion?
>
Hi Zhaolei,
I think having the tracepoints for panic and kexec would be a good
start. Then whenever we need more specific hooks to send the data out
(for crash data extraction), we can add notification hooks at that time.
Do you have an updated version of panic+kexec instrumentation ?
Thanks,
Mathieu
> B.R.
> Zhaolei
> >
> > If you plan to use those as hooks into the kernel, we should probably
> > consider adding notifiers instead (notifier.h). This is the "blessed"
> > way to be called upon such events.
> >
> > Mathieu
> >
> >> Signed-off-by: Zhao Lei <zhaolei at cn.fujitsu.com>
> >> ---
> >> include/trace/kernel.h | 10 ++++++++++
> >> kernel/kexec.c | 8 ++++++++
> >> kernel/panic.c | 7 +++++++
> >> 3 files changed, 25 insertions(+), 0 deletions(-)
> >>
> >> diff --git a/include/trace/kernel.h b/include/trace/kernel.h
> >> index d2c3320..06d585f 100644
> >> --- a/include/trace/kernel.h
> >> +++ b/include/trace/kernel.h
> >> @@ -2,6 +2,7 @@
> >> #define _TRACE_KERNEL_H
> >>
> >> #include <linux/tracepoint.h>
> >> +#include <linux/kexec.h>
> >>
> >> DECLARE_TRACE(kernel_printk,
> >> TPPROTO(unsigned long retaddr),
> >> @@ -15,5 +16,14 @@ DECLARE_TRACE(kernel_module_free,
> >> DECLARE_TRACE(kernel_module_load,
> >> TPPROTO(struct module *mod),
> >> TPARGS(mod));
> >> +DECLARE_TRACE(kernel_panic,
> >> + TPPROTO(const char *fmt, va_list args),
> >> + TPARGS(fmt, args));
> >> +DECLARE_TRACE(kernel_kernel_kexec,
> >> + TPPROTO(struct kimage *image),
> >> + TPARGS(image));
> >> +DECLARE_TRACE(kernel_crash_kexec,
> >> + TPPROTO(struct kimage *image, struct pt_regs *regs),
> >> + TPARGS(image, regs));
> >>
> >> #endif
> >> diff --git a/kernel/kexec.c b/kernel/kexec.c
> >> index aef2653..56cdaac 100644
> >> --- a/kernel/kexec.c
> >> +++ b/kernel/kexec.c
> >> @@ -30,6 +30,7 @@
> >> #include <linux/pm.h>
> >> #include <linux/cpu.h>
> >> #include <linux/console.h>
> >> +#include <trace/kernel.h>
> >>
> >> #include <asm/page.h>
> >> #include <asm/uaccess.h>
> >> @@ -37,6 +38,9 @@
> >> #include <asm/system.h>
> >> #include <asm/sections.h>
> >>
> >> +DEFINE_TRACE(kernel_kernel_kexec);
> >> +DEFINE_TRACE(kernel_crash_kexec);
> >> +
> >> /* Per cpu memory for storing cpu states in case of system crash. */
> >> note_buf_t* crash_notes;
> >>
> >> @@ -1062,6 +1066,8 @@ asmlinkage long compat_sys_kexec_load(unsigned long entry,
> >>
> >> void crash_kexec(struct pt_regs *regs)
> >> {
> >> + trace_kernel_crash_kexec(kexec_crash_image, regs);
> >> +
> >> /* Take the kexec_mutex here to prevent sys_kexec_load
> >> * running on one cpu from replacing the crash kernel
> >> * we are using after a panic on a different cpu.
> >> @@ -1428,6 +1434,8 @@ int kernel_kexec(void)
> >> {
> >> int error = 0;
> >>
> >> + trace_kernel_kernel_kexec(kexec_image);
> >> +
> >> if (!mutex_trylock(&kexec_mutex))
> >> return -EBUSY;
> >> if (!kexec_image) {
> >> diff --git a/kernel/panic.c b/kernel/panic.c
> >> index 12c5a0a..3fa642e 100644
> >> --- a/kernel/panic.c
> >> +++ b/kernel/panic.c
> >> @@ -21,6 +21,9 @@
> >> #include <linux/debug_locks.h>
> >> #include <linux/random.h>
> >> #include <linux/kallsyms.h>
> >> +#include <trace/kernel.h>
> >> +
> >> +DEFINE_TRACE(kernel_panic);
> >>
> >> int panic_on_oops;
> >> int tainted;
> >> @@ -68,6 +71,10 @@ NORET_TYPE void panic(const char * fmt, ...)
> >> unsigned long caller = (unsigned long) __builtin_return_address(0);
> >> #endif
> >>
> >> + va_start(args, fmt);
> >> + trace_kernel_panic(fmt, args);
> >> + va_end(args);
> >> +
> >> /*
> >> * It's possible to come here directly from a panic-assertion and not
> >> * have preempt disabled. Some functions called from here want
> >> --
> >> 1.5.5.3
> >>
> >>
> >>
> >> _______________________________________________
> >> ltt-dev mailing list
> >> ltt-dev at lists.casi.polymtl.ca
> >> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
> >>
> >
> > --
> > Mathieu Desnoyers
> > OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
> >
> >
>
--
Mathieu Desnoyers
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F BA06 3F25 A8FE 3BAE 9A68
next prev parent reply other threads:[~2009-02-19 4:14 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-18 3:01 [ltt-dev] [PATCH 0/2] Add tracepoint " Zhaolei
2008-12-18 3:02 ` [ltt-dev] [PATCH 2/1] tracepoints-panic Zhaolei
2008-12-18 4:14 ` Mathieu Desnoyers
2008-12-18 5:38 ` Zhaolei
2008-12-18 5:38 ` [ltt-dev] [PATCH v2] add tracepoints of panic and kexec Zhaolei
2008-12-18 18:47 ` Mathieu Desnoyers
2008-12-19 1:36 ` Zhaolei
2009-01-03 14:02 ` Mathieu Desnoyers
2009-01-12 5:55 ` Zhaolei
2009-01-12 16:32 ` Mathieu Desnoyers
2009-01-16 6:47 ` Lai Jiangshan
2009-01-16 15:43 ` Mathieu Desnoyers
2009-01-19 6:29 ` KOSAKI Motohiro
2009-01-20 2:08 ` Mathieu Desnoyers
2009-02-19 4:14 ` Mathieu Desnoyers [this message]
2009-02-19 5:31 ` Zhaolei
2009-02-19 5:46 ` Mathieu Desnoyers
2009-02-19 6:13 ` Mathieu Desnoyers
2009-02-19 6:25 ` Zhaolei
2008-12-30 1:52 ` [ltt-dev] [PATCH v3 0/1] " Zhaolei
2008-12-30 1:53 ` [ltt-dev] [PATCH v3 1/1] " Zhaolei
2009-01-03 13:45 ` Mathieu Desnoyers
2008-12-18 3:03 ` [ltt-dev] [PATCH 2/2] tracepoints-kexec Zhaolei
2008-12-18 4:19 ` Mathieu Desnoyers
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=20090219041446.GG7956@Krystal \
--to=mathieu.desnoyers@polymtl.ca \
/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