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

Reply via email to