[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87blk6cosb.fsf@jogness.linutronix.de>
Date: Thu, 23 Jul 2020 16:08:44 +0206
From: John Ogness <john.ogness@...utronix.de>
To: Steven Rostedt <rostedt@...dmis.org>
Cc: Vincent Whitchurch <vincent.whitchurch@...s.com>,
jbaron@...mai.com, mingo@...hat.com, kernel@...s.com,
corbet@....net, linux-kernel@...r.kernel.org,
Petr Mladek <pmladek@...e.com>,
Sergey Senozhatsky <sergey.senozhatsky@...il.com>
Subject: Re: [PATCH] dynamic debug: allow printing to trace event
On 2020-07-22, Steven Rostedt <rostedt@...dmis.org> wrote:
>>> +static void dynamic_printk(unsigned int flags, const char *fmt, ...)
>>> +{
>>> + if (flags & _DPRINTK_FLAGS_TRACE) {
>>> + va_list args;
>>> +
>>> + va_start(args, fmt);
>>> + /*
>>> + * All callers include the KERN_DEBUG prefix to keep the
>>> + * vprintk case simple; strip it out for tracing.
>>> + */
>>> + dynamic_trace(fmt + strlen(KERN_DEBUG), args);
>>
>> Do we really need a separate tracing event for this? Why not just:
>>
>> ftrace_vprintk(fmt + strlen(KERN_DEBUG), args);
>
> It must be an event, one that can be enabled or disabled separately
> from trace_printk().
>
> If you are asking if this could be something like trace_printk(),
> which ftrace_vprintk() is. The reason for that nasty banner when
> people use trace_printk() is to keep developers from using it as their
> personal debugging tool in production.
>
> A trace_printk() can not be discretely disabled. It's either totally
> on, or totally off. And since it is used for debugging, if there's
> trace_printk()s all over the kernel, you will have to deal with the
> noise of everyone else's trace_printk(), making trace_printk()
> useless.
I understand and agree with your concern about trace_printk(). But it
seems to me that trace_printk() via pr_debug() should be OK because
there is discrete control per message implemented. Yes, more code is
necessary to distinguish between the two, such as letting dynamic_printk
use an internal function that does not trigger a splat. But I think that
is reasonable.
For me a trace event represents a specific point in the kernel code. But
this new printk trace event, instead, represents general log
redirection. I do not oppose it, but it feels like a hack to me. In
contrast, simply setting a dynamic printk flag to write the message
string to the trace buffer (without also activating some pseudo trace
event) feels more natural.
Just sharing my thoughts, as requested.
John Ogness
Powered by blists - more mailing lists