Re: [PATCH v3 1/2] drm: Introduce DRM_DEV_* log messages
From: Chris Wilson <hidden>
Date: 2016-08-12 20:53:31
Also in:
dri-devel
On Fri, Aug 12, 2016 at 04:29:37PM -0400, Sean Paul wrote:
quoted hunk
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 <redacted> --- 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 <redacted> -Chris -- Chris Wilson, Intel Open Source Technology Centre