On Fri, Aug 12, 2016 at 04:29:37PM -0400, Sean Paul wrote: > This patch consolidates all the various log functions/macros into > one uber function, drm_printk. It also introduces some new DRM_DEV_* > variants that use dev_printk to print the device name, which helps > delineate multiple devices of the same type. > > Signed-off-by: Sean Paul <seanpaul at chromium.org> > --- > > Changes in v2: > - Use dev_printk for the dev variant (Chris Wilson) > > Changes in v3: > - Rename drm_log to drm_dev_printk (Chris Wilson) > - Break out drm_printk from drm_dev_printk to reduce > image growth due to passing NULL around (Chris Wilson) > > drivers/gpu/drm/drm_drv.c | 25 ++++++--- > include/drm/drmP.h | 140 > +++++++++++++++++++++++++++------------------- > 2 files changed, 101 insertions(+), 64 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 57ce973..e141ead 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -63,37 +63,46 @@ static struct idr drm_minors_idr; > > static struct dentry *drm_debugfs_root; > > -void drm_err(const char *format, ...) > +void drm_dev_printk(const struct device *dev, const char *level, > + unsigned int category, const char *function_name, > + const char *prefix, const char *format, ...) > { > struct va_format vaf; > va_list args; > > - va_start(args, format); > + if (category != DRM_UT_NONE && !(drm_debug & category)) > + return; > > + va_start(args, format); > vaf.fmt = format; > vaf.va = &args; > > - printk(KERN_ERR "[" DRM_NAME ":%ps] *ERROR* %pV", > - __builtin_return_address(0), &vaf); > + dev_printk(level, dev, "[" DRM_NAME ":%s]%s %pV", function_name, prefix, > + &vaf);
dev_printk does handle NULL dev, that's a relief! > > va_end(args); > } > -EXPORT_SYMBOL(drm_err); > +EXPORT_SYMBOL(drm_dev_printk); > > -void drm_ut_debug_printk(const char *function_name, const char *format, ...) > +void drm_printk(const char *level, unsigned int category, > + const char *function_name, const char *prefix, > + const char *format, ...) > { > struct va_format vaf; > va_list args; > > + if (category != DRM_UT_NONE && !(drm_debug & category)) > + return; > + > va_start(args, format); > vaf.fmt = format; > vaf.va = &args; > > - printk(KERN_DEBUG "[" DRM_NAME ":%s] %pV", function_name, &vaf); > + printk("%s[" DRM_NAME ":%s]%s %pV", level, function_name, prefix, &vaf); Ok, I just tried to make a common drm_dev_printk_emit() and made a right mess. A pair of functions is definitely better. Reviewed-by: Chris Wilson <chris at chris-wilson.co.uk> -Chris -- Chris Wilson, Intel Open Source Technology Centre