Re: [PATCH 1/2] drm: Only #define DEBUG if CONFIG_DYNAMIC_DEBUG is disabled

From: Joe Perches
Date: Wed Dec 05 2018 - 21:51:50 EST


On Thu, 2018-12-06 at 10:40 +0800, Zhang, Jerry(Junwei) wrote:
> On 12/6/18 12:56 AM, Michel Dänzer wrote:
> > From: Michel Dänzer <michel.daenzer@xxxxxxx>
> >
> > The following cases are possible for pr_debug():
> >
> > 1. CONFIG_DYNAMIC_DEBUG disabled
> > a) DEBUG not defined: pr_debug() translates to no_printk(...), i.e.
> > it never generates any output.
> > b) DEBUG defined: pr_debug() translates to printk(KERN_DEBUG ...),
> > i.e. it generates output which doesn't appear in dmesg by default,
> > can be enabled dynamically.
> >
> > 2. CONFIG_DYNAMIC_DEBUG enabled: pr_debug() translates to
> > dynamic_pr_debug()
> > a) DEBUG not defined: dynamic_pr_debug() generates no output by
> > default, can be enabled dynamically.
> > b) DEBUG defined: dynamic_pr_debug() generates output by default,
> > can be disabled dynamically.
> >
> > The intention for drm_debug_printer() is to generate output which
> > doesn't appear in dmesg by default, but can be enabled dynamically, i.e.
> > cases 1b) and 2a). However, defining DEBUG unconditionally gave us 2b)
> > instead of 2a) with CONFIG_DYNAMIC_DEBUG enabled.
> >
> > Fixes: 79a5ad2fdb3c ("drm: Enable pr_debug() for drm_printer")

I very much doubt this is a fix.

Did you read the commit log for this commit?

It says "make sure it will always produce output"

And why didn't you cc Chris Wilson, the author of that patch?

> > Signed-off-by: Michel Dänzer <michel.daenzer@xxxxxxx>
> Reviewed-by: Junwei Zhang <Jerry.Zhang@xxxxxxx>
>
> > ---
> > drivers/gpu/drm/drm_print.c | 6 ++++--
> > 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
> > index 0e7fc3e7dfb4..ee56e4a1b343 100644
> > --- a/drivers/gpu/drm/drm_print.c
> > +++ b/drivers/gpu/drm/drm_print.c
> > @@ -23,11 +23,13 @@
> > * Rob Clark <robdclark@xxxxxxxxx>
> > */
> >
> > -#define DEBUG /* for pr_debug() */
> > -
> > #include <stdarg.h>
> > #include <linux/seq_file.h>
> > #include <drm/drmP.h>
> > +
> > +#ifndef CONFIG_DYNAMIC_DEBUG
> > +#define DEBUG /* for pr_debug() */
> > +#endif
> > #include <drm/drm_print.h>
> >
> > void __drm_puts_coredump(struct drm_printer *p, const char *str)