unsigned int category, const char *function_name,
                    const char *prefix, const char *format, ...);
 
-extern __printf(5, 6)
+extern __printf(3, 4)
 void drm_printk(const char *level, unsigned int category,
-               const char *function_name, const char *prefix,
                const char *format, ...);
 
 /***********************************************************************/
        drm_dev_printk(dev, KERN_ERR, DRM_UT_NONE, __func__, " *ERROR*",\
                       fmt, ##__VA_ARGS__)
 #define DRM_ERROR(fmt, ...)                                            \
-       drm_printk(KERN_ERR, DRM_UT_NONE, __func__, " *ERROR*", fmt,    \
-                  ##__VA_ARGS__)
+       drm_printk(KERN_ERR, DRM_UT_NONE, fmt,  ##__VA_ARGS__)
 
 /**
  * Rate limited error output.  Like DRM_ERROR() but won't flood the log.
 #define DRM_DEV_DEBUG(dev, fmt, args...)                               \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_CORE, __func__, "", fmt, \
                       ##args)
-#define DRM_DEBUG(fmt, args...)                                                \
-       drm_printk(KERN_DEBUG, DRM_UT_CORE, __func__, "", fmt, ##args)
+#define DRM_DEBUG(fmt, ...)                                            \
+       drm_printk(KERN_DEBUG, DRM_UT_CORE, fmt, ##__VA_ARGS__)
 
 #define DRM_DEV_DEBUG_DRIVER(dev, fmt, args...)                                \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_DRIVER, __func__, "",    \
                       fmt, ##args)
-#define DRM_DEBUG_DRIVER(fmt, args...)                                 \
-       drm_printk(KERN_DEBUG, DRM_UT_DRIVER, __func__, "", fmt, ##args)
+#define DRM_DEBUG_DRIVER(fmt, ...)                                     \
+       drm_printk(KERN_DEBUG, DRM_UT_DRIVER, fmt, ##__VA_ARGS__)
 
 #define DRM_DEV_DEBUG_KMS(dev, fmt, args...)                           \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_KMS, __func__, "", fmt,  \
                       ##args)
-#define DRM_DEBUG_KMS(fmt, args...)                                    \
-       drm_printk(KERN_DEBUG, DRM_UT_KMS, __func__, "", fmt, ##args)
+#define DRM_DEBUG_KMS(fmt, ...)                                        \
+       drm_printk(KERN_DEBUG, DRM_UT_KMS, fmt, ##__VA_ARGS__)
 
 #define DRM_DEV_DEBUG_PRIME(dev, fmt, args...)                         \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_PRIME, __func__, "",     \
                       fmt, ##args)
-#define DRM_DEBUG_PRIME(fmt, args...)                                  \
-       drm_printk(KERN_DEBUG, DRM_UT_PRIME, __func__, "", fmt, ##args)
+#define DRM_DEBUG_PRIME(fmt, ...)                                      \
+       drm_printk(KERN_DEBUG, DRM_UT_PRIME, fmt, ##__VA_ARGS__)
 
 #define DRM_DEV_DEBUG_ATOMIC(dev, fmt, args...)                                \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_ATOMIC, __func__, "",    \
                       fmt, ##args)
-#define DRM_DEBUG_ATOMIC(fmt, args...)                                 \
-       drm_printk(KERN_DEBUG, DRM_UT_ATOMIC, __func__, "", fmt, ##args)
+#define DRM_DEBUG_ATOMIC(fmt, ...)                                     \
+       drm_printk(KERN_DEBUG, DRM_UT_ATOMIC, fmt, ##__VA_ARGS__)
 
 #define DRM_DEV_DEBUG_VBL(dev, fmt, args...)                           \
        drm_dev_printk(dev, KERN_DEBUG, DRM_UT_VBL, __func__, "", fmt,  \
                       ##args)
-#define DRM_DEBUG_VBL(fmt, args...)                                    \
-       drm_printk(KERN_DEBUG, DRM_UT_VBL, __func__, "", fmt, ##args)
+#define DRM_DEBUG_VBL(fmt, ...)                                        \
+       drm_printk(KERN_DEBUG, DRM_UT_VBL, fmt, ##__VA_ARGS__)
 
 #define _DRM_DEV_DEFINE_DEBUG_RATELIMITED(dev, level, fmt, args...)    \
 ({                                                                     \