Re: [PATCH v2] dynamic debug: allow printing to trace event

From: Vincent Whitchurch
Date: Tue Aug 25 2020 - 11:32:37 EST


On Fri, Aug 14, 2020 at 11:30:34PM +0200, Jason Baron wrote:
> On 8/14/20 1:15 PM, Steven Rostedt wrote:
> > On Fri, 14 Aug 2020 15:31:51 +0200
> > Vincent Whitchurch <vincent.whitchurch@xxxxxxxx> wrote:
> >> index aa9ff9e1c0b3..f599ed21ecc5 100644
> >> --- a/include/linux/dynamic_debug.h
> >> +++ b/include/linux/dynamic_debug.h
> >> @@ -27,13 +27,16 @@ struct _ddebug {
> >> * writes commands to <debugfs>/dynamic_debug/control
> >> */
> >> #define _DPRINTK_FLAGS_NONE 0
> >> -#define _DPRINTK_FLAGS_PRINT (1<<0) /* printk() a message using the format */
> >> +#define _DPRINTK_FLAGS_PRINTK (1<<0) /* printk() a message using the format */
> >
> > The above looks like a cleanup unrelated to this patch, and probably
> > should be on its own.
>
> I read it as we used to have this one thing called 'print', which really meant
> printk, but now that we also have the ability to output to the trace buffer,
> what does 'print' mean now? So I read it as being part of this change.

Yes, that's what was intended, but I think it makes sense to split it
out as Steven suggested so I've done that now (and also renamed the
combined flag to the less ambiguous _DPRINTK_FLAGS_ENABLE).

>
> >
> >> #define _DPRINTK_FLAGS_INCL_MODNAME (1<<1)
> >> #define _DPRINTK_FLAGS_INCL_FUNCNAME (1<<2)
> >> #define _DPRINTK_FLAGS_INCL_LINENO (1<<3)
> >> #define _DPRINTK_FLAGS_INCL_TID (1<<4)
> >> +#define _DPRINTK_FLAGS_TRACE (1<<5)
> >> +#define _DPRINTK_FLAGS_PRINT (_DPRINTK_FLAGS_PRINTK | \
> >> + _DPRINTK_FLAGS_TRACE)
>
>
> Is _DPRINTK_FLAGS_PRINT actually used anywhere? Looks to me like
> it can be removed.

It's used from DYNAMIC_DEBUG_BRANCH() as well as from
lib/dynamic_debug.c to check if the location is enabled.

> This is a feature I've wanted for dynamic debug for a while. Thanks for
> implementing it!
>
> Dynamic can be enabled on the command line in order to print things early
> in boot (I think ftrace can as well), I want to make sure that there are
> no ordering issues here? And things wouldn't blow up if we enable printing
> to the ftrace buffer early on via dyanmic debug?

I tried enabling all dynamic debug locations and tracing via the command
line and that worked fine:

dyndbg="file * +x" trace_event=printk:*