From: Joel Fernandes <joel@joelfernandes.org>
To: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
Cc: Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@redhat.com>, Laura Abbott <labbott@redhat.com>,
Kees Cook <keescook@chromium.org>,
Anton Vorontsov <anton@enomsg.org>,
Rob Herring <robh+dt@kernel.org>,
devicetree@vger.kernel.org, Colin Cross <ccross@android.com>,
Jason Baron <jbaron@akamai.com>, Tony Luck <tony.luck@intel.com>,
Arnd Bergmann <arnd@arndb.de>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Masami Hiramatsu <mhiramat@kernel.org>,
Joe Perches <joe@perches.com>, Jim Cromie <jim.cromie@gmail.com>,
Rajendra Nayak <rnayak@codeaurora.org>,
Vivek Gautam <vivek.gautam@codeaurora.org>,
Sibi Sankar <sibis@codeaurora.org>,
linux-arm-kernel@lists.infradead.org,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 3/6] tracing: Add tp_pstore cmdline to have tracepoints go to pstore
Date: Tue, 25 Sep 2018 14:25:34 -0700 [thread overview]
Message-ID: <CAEXW_YRQtJb=3V0RKHSAejfQXKssh5qBp7nmD1OUC-wTyqGDEQ@mail.gmail.com> (raw)
In-Reply-To: <f65e9fa6e047b9b14d4f64362f9fe1f89b306050.1536430404.git.saiprakash.ranjan@codeaurora.org>
On Sat, Sep 8, 2018 at 1:28 PM Sai Prakash Ranjan
<saiprakash.ranjan@codeaurora.org> wrote:
>
> Add the kernel command line tp_pstore option that will have
> tracepoints go to persistent ram buffer as well as to the
> trace buffer for further debugging. This is similar to tp_printk
> cmdline option of ftrace.
>
> Pstore support for event tracing is already added and we enable
> logging to pstore only if cmdline is specified.
>
> Passing "tp_pstore" will activate logging to pstore. To turn it
> off, the sysctl /proc/sys/kernel/tracepoint_pstore can have '0'
> echoed into it. Note, this only works if the cmdline option is
> used. Echoing 1 into the sysctl file without the cmdline option
> will have no affect.
>
> Signed-off-by: Sai Prakash Ranjan <saiprakash.ranjan@codeaurora.org>
> ---
> .../admin-guide/kernel-parameters.txt | 21 ++++++++
> include/linux/ftrace.h | 6 ++-
> kernel/sysctl.c | 7 +++
> kernel/trace/Kconfig | 22 +++++++-
> kernel/trace/trace.c | 51 +++++++++++++++++++
> kernel/trace/trace.h | 7 +++
> 6 files changed, 112 insertions(+), 2 deletions(-)
>
[...]
> config GCOV_PROFILE_FTRACE
> bool "Enable GCOV profiling on ftrace subsystem"
> depends on GCOV_KERNEL
> @@ -789,4 +810,3 @@ config GCOV_PROFILE_FTRACE
> endif # FTRACE
>
> endif # TRACING_SUPPORT
> -
> diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
> index bf6f1d70484d..018cbbefb769 100644
> --- a/kernel/trace/trace.c
> +++ b/kernel/trace/trace.c
> @@ -73,6 +73,11 @@ struct trace_iterator *tracepoint_print_iter;
> int tracepoint_printk;
> static DEFINE_STATIC_KEY_FALSE(tracepoint_printk_key);
>
> +/* Pipe tracepoints to pstore */
> +struct trace_iterator *tracepoint_pstore_iter;
> +int tracepoint_pstore;
> +static DEFINE_STATIC_KEY_FALSE(tracepoint_pstore_key);
> +
> /* For tracers that don't implement custom flags */
> static struct tracer_opt dummy_tracer_opt[] = {
> { }
> @@ -238,6 +243,14 @@ static int __init set_tracepoint_printk(char *str)
> }
> __setup("tp_printk", set_tracepoint_printk);
>
> +static int __init set_tracepoint_pstore(char *str)
> +{
> + if ((strcmp(str, "=0") != 0 && strcmp(str, "=off") != 0))
> + tracepoint_pstore = 1;
> + return 1;
> +}
> +__setup("tp_pstore", set_tracepoint_pstore);
> +
> unsigned long long ns2usecs(u64 nsec)
> {
> nsec += 500;
> @@ -2376,11 +2389,45 @@ int tracepoint_printk_sysctl(struct ctl_table *table, int write,
> return ret;
> }
>
> +static DEFINE_MUTEX(tracepoint_pstore_mutex);
> +
> +int tracepoint_pstore_sysctl(struct ctl_table *table, int write,
> + void __user *buffer, size_t *lenp,
> + loff_t *ppos)
> +{
> + int save_tracepoint_pstore;
> + int ret;
> +
> + mutex_lock(&tracepoint_pstore_mutex);
> + save_tracepoint_pstore = tracepoint_pstore;
> +
> + ret = proc_dointvec(table, write, buffer, lenp, ppos);
> +
> + if (!tracepoint_pstore_iter)
> + tracepoint_pstore = 0;
> +
> + if (save_tracepoint_pstore == tracepoint_pstore)
> + goto out;
> +
> + if (tracepoint_pstore)
> + static_key_enable(&tracepoint_pstore_key.key);
> + else
> + static_key_disable(&tracepoint_pstore_key.key);
> +
> + out:
> + mutex_unlock(&tracepoint_pstore_mutex);
> +
> + return ret;
> +}
> +
> void trace_event_buffer_commit(struct trace_event_buffer *fbuffer)
> {
> if (static_key_false(&tracepoint_printk_key.key))
> output_printk(fbuffer);
>
> + if (static_key_false(&tracepoint_pstore_key.key))
> + pstore_event_call(fbuffer);
Can you not find a way to pass the size of the even record here, to
pstore? Then you can directly allocate and store the binary record in
pstore itself instead of rendering and storing the text in pstore
which will be more space (and I think time) efficient. I also think if
you do this, then you will not need to use the spinlock in the pstore
(which AIUI is preventing the warning you're seeing in the
event_call->event.funcs->trace() call).
- Joel
next prev parent reply other threads:[~2018-09-25 21:25 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-09-08 20:27 [PATCH 0/6] Tracing register accesses with pstore and dynamic debug Sai Prakash Ranjan
2018-09-08 20:27 ` [PATCH 1/6] dt-bindings: ramoops: Add event-size property Sai Prakash Ranjan
2018-09-17 5:45 ` Rob Herring
2018-09-17 17:15 ` Sai Prakash Ranjan
2018-09-08 20:27 ` [PATCH 2/6] pstore: Add event tracing support Sai Prakash Ranjan
2018-09-11 10:46 ` Sai Prakash Ranjan
2018-09-17 17:38 ` Stephen Boyd
2018-09-17 19:43 ` Sai Prakash Ranjan
2018-09-16 7:07 ` Sai Prakash Ranjan
[not found] ` <CAEXW_YSPNqVgoYWjVAMvGg_WoRV4SC2xDH1wQWTdQfBUOMQbbQ@mail.gmail.com>
2018-09-17 14:54 ` Kees Cook
2018-09-17 17:17 ` Sai Prakash Ranjan
2018-09-17 17:13 ` Sai Prakash Ranjan
2018-09-17 23:04 ` Steven Rostedt
2018-09-18 6:24 ` Sai Prakash Ranjan
2018-09-17 23:34 ` Steven Rostedt
2018-09-18 17:52 ` Sai Prakash Ranjan
2018-09-18 20:44 ` Steven Rostedt
2018-09-18 21:13 ` Sai Prakash Ranjan
2018-09-22 6:48 ` Sai Prakash Ranjan
2018-09-22 9:05 ` Joel Fernandes
2018-09-22 16:37 ` Sai Prakash Ranjan
2018-09-22 17:32 ` Sai Prakash Ranjan
2018-09-22 17:45 ` Sai Prakash Ranjan
2018-09-23 15:33 ` Sai Prakash Ranjan
2018-09-25 20:37 ` Joel Fernandes
2018-09-25 20:39 ` Joel Fernandes
2018-09-25 20:40 ` Joel Fernandes
2018-09-26 9:52 ` Sai Prakash Ranjan
2018-09-08 20:27 ` [PATCH 3/6] tracing: Add tp_pstore cmdline to have tracepoints go to pstore Sai Prakash Ranjan
2018-09-25 21:25 ` Joel Fernandes [this message]
2018-09-26 9:46 ` Sai Prakash Ranjan
2018-10-08 14:16 ` Sai Prakash Ranjan
2018-10-08 14:36 ` Steven Rostedt
2018-10-08 22:40 ` Joel Fernandes
2018-10-09 18:22 ` Sai Prakash Ranjan
2018-10-10 19:37 ` Steven Rostedt
2018-09-08 20:27 ` [PATCH 4/6] arm64/io: Add tracepoint for register accesses Sai Prakash Ranjan
2018-09-08 20:27 ` [PATCH 5/6] arm64/io: Add header for instrumentation of io operations Sai Prakash Ranjan
2018-09-17 23:39 ` Steven Rostedt
2018-09-18 7:10 ` Sai Prakash Ranjan
2018-09-18 11:47 ` Will Deacon
2018-09-18 12:43 ` Sai Prakash Ranjan
2018-09-08 20:27 ` [PATCH 6/6] dynamic_debug: Add flag for dynamic event tracing Sai Prakash Ranjan
2018-09-11 15:11 ` [PATCH 0/6] Tracing register accesses with pstore and dynamic debug Will Deacon
2018-09-11 16:11 ` Sai Prakash Ranjan
2018-10-20 5:25 ` Joel Fernandes
2018-10-20 6:32 ` Sai Prakash Ranjan
2018-10-20 16:27 ` Joel Fernandes
2018-10-21 3:46 ` Sai Prakash Ranjan
2018-10-21 4:59 ` Sai Prakash Ranjan
2018-10-21 5:09 ` Joel Fernandes
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='CAEXW_YRQtJb=3V0RKHSAejfQXKssh5qBp7nmD1OUC-wTyqGDEQ@mail.gmail.com' \
--to=joel@joelfernandes.org \
--cc=anton@enomsg.org \
--cc=arnd@arndb.de \
--cc=catalin.marinas@arm.com \
--cc=ccross@android.com \
--cc=devicetree@vger.kernel.org \
--cc=jbaron@akamai.com \
--cc=jim.cromie@gmail.com \
--cc=joe@perches.com \
--cc=keescook@chromium.org \
--cc=labbott@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@redhat.com \
--cc=rnayak@codeaurora.org \
--cc=robh+dt@kernel.org \
--cc=rostedt@goodmis.org \
--cc=saiprakash.ranjan@codeaurora.org \
--cc=sibis@codeaurora.org \
--cc=tony.luck@intel.com \
--cc=vivek.gautam@codeaurora.org \
--cc=will.deacon@arm.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).