Skip to contentSkip to conversation

drm: Neaten and reduce object size

PATCH Applied Joe Perches 4 participants 13 messages Sep 26, 2016 – Sep 29, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

cover drm: Neaten and reduce object size

Joe Perches (2):
drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE
drm: Simplify drm_printk to reduce object size quite a bit

 drivers/gpu/drm/drm_drv.c               |  5 +--
 drivers/gpu/drm/i915/intel_guc_loader.c | 22 +++++++------
 include/drm/drmP.h                      | 56 ++++++++++++++++-----------------
 3 files changed, 42 insertions(+), 41 deletions(-)
Signature · 6 lines
2.10.0.rc2.1.g053435c

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#1 lore raw

PATCH 1/2 drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

Use a bit more consistent style with kernel loglevels without using macro argument concatenation.

Miscellanea:

o Single statement macros don't need do {} while (0)

---
 drivers/gpu/drm/i915/intel_guc_loader.c | 22 ++++++++++++----------
 include/drm/drmP.h                      | 26 +++++++++++++-------------
 2 files changed, 25 insertions(+), 23 deletions(-)
drivers/gpu/drm/i915/intel_guc_loader.c +12 -10
index 6fd39efb7894..bc4f9895f356 100644
@@ -566,7 +566,7 @@ int intel_guc_setup(struct drm_device *dev)
 	else if (err == 0)
 		DRM_INFO("GuC firmware load skipped\n");
 	else if (ret != -EIO)
-		DRM_NOTE("GuC firmware load failed: %d\n", err);
+		DRM_NOTICE("GuC firmware load failed: %d\n", err);
 	else
 		DRM_WARN("GuC firmware load failed: %d\n", err);
 
@@ -574,7 +574,7 @@ int intel_guc_setup(struct drm_device *dev)
 		if (fw_path == NULL)
 			DRM_INFO("GuC submission without firmware not supported\n");
 		if (ret == 0)
-			DRM_NOTE("Falling back from GuC submission to execlist mode\n");
+			DRM_NOTICE("Falling back from GuC submission to execlist mode\n");
 		else
 			DRM_ERROR("GuC init failed: %d\n", ret);
 	}
@@ -606,7 +606,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	/* Check the size of the blob before examining buffer contents */
 	if (fw->size < sizeof(struct guc_css_header)) {
-		DRM_NOTE("Firmware header is missing\n");
+		DRM_NOTICE("Firmware header is missing\n");
 		goto fail;
 	}
 
@@ -618,7 +618,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 		css->key_size_dw - css->exponent_size_dw) * sizeof(u32);
 
 	if (guc_fw->header_size != sizeof(struct guc_css_header)) {
-		DRM_NOTE("CSS header definition mismatch\n");
+		DRM_NOTICE("CSS header definition mismatch\n");
 		goto fail;
 	}
 
@@ -628,7 +628,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	/* now RSA */
 	if (css->key_size_dw != UOS_RSA_SCRATCH_MAX_COUNT) {
-		DRM_NOTE("RSA key size is bad\n");
+		DRM_NOTICE("RSA key size is bad\n");
 		goto fail;
 	}
 	guc_fw->rsa_offset = guc_fw->ucode_offset + guc_fw->ucode_size;
@@ -637,14 +637,14 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 	/* At least, it should have header, uCode and RSA. Size of all three. */
 	size = guc_fw->header_size + guc_fw->ucode_size + guc_fw->rsa_size;
 	if (fw->size < size) {
-		DRM_NOTE("Missing firmware components\n");
+		DRM_NOTICE("Missing firmware components\n");
 		goto fail;
 	}
 
 	/* Header and uCode will be loaded to WOPCM. Size of the two. */
 	size = guc_fw->header_size + guc_fw->ucode_size;
 	if (size > guc_wopcm_size(to_i915(dev))) {
-		DRM_NOTE("Firmware is too large to fit in WOPCM\n");
+		DRM_NOTICE("Firmware is too large to fit in WOPCM\n");
 		goto fail;
 	}
 
@@ -659,9 +659,11 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
 	if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
 	    guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
-		DRM_NOTE("GuC firmware version %d.%d, required %d.%d\n",
-			guc_fw->guc_fw_major_found, guc_fw->guc_fw_minor_found,
-			guc_fw->guc_fw_major_wanted, guc_fw->guc_fw_minor_wanted);
+		DRM_NOTICE("GuC firmware version %d.%d, required %d.%d\n",
+			   guc_fw->guc_fw_major_found,
+			   guc_fw->guc_fw_minor_found,
+			   guc_fw->guc_fw_major_wanted,
+			   guc_fw->guc_fw_minor_wanted);
 		err = -ENOEXEC;
 		goto fail;
 	}
include/drm/drmP.h +13 -13
index c53dc90942e0..95cd04aa9bf7 100644
@@ -168,25 +168,25 @@ void drm_printk(const char *level, unsigned int category,
 /** \name Macros to make printk easier */
 /*@{*/
 
-#define _DRM_PRINTK(once, level, fmt, ...)				\
-	do {								\
-		printk##once(KERN_##level "[" DRM_NAME "] " fmt,	\
-			     ##__VA_ARGS__);				\
-	} while (0)
+#define _drm_printk(level, fmt, ...)					\
+	printk(level "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
 
 #define DRM_INFO(fmt, ...)						\
-	_DRM_PRINTK(, INFO, fmt, ##__VA_ARGS__)
-#define DRM_NOTE(fmt, ...)						\
-	_DRM_PRINTK(, NOTICE, fmt, ##__VA_ARGS__)
+	_drm_printk(KERN_INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTICE(fmt, ...)						\
+	_drm_printk(KERN_NOTICE, fmt, ##__VA_ARGS__)
 #define DRM_WARN(fmt, ...)						\
-	_DRM_PRINTK(, WARNING, fmt, ##__VA_ARGS__)
+	_drm_printk(KERN_WARNING, fmt, ##__VA_ARGS__)
+
+#define _drm_printk_once(level, fmt, ...)				\
+	printk_once(level "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
 
 #define DRM_INFO_ONCE(fmt, ...)						\
-	_DRM_PRINTK(_once, INFO, fmt, ##__VA_ARGS__)
-#define DRM_NOTE_ONCE(fmt, ...)						\
-	_DRM_PRINTK(_once, NOTICE, fmt, ##__VA_ARGS__)
+	_drm_printk_once(KERN_INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTICE_ONCE(fmt, ...)					\
+	_drm_printk_once(KERN_NOTICE, fmt, ##__VA_ARGS__)
 #define DRM_WARN_ONCE(fmt, ...)						\
-	_DRM_PRINTK(_once, WARNING, fmt, ##__VA_ARGS__)
+	_drm_printk_once(KERN_WARNING, fmt, ##__VA_ARGS__)
 
 /**
  * Error output.
Signature · 6 lines
2.10.0.rc2.1.g053435c

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel
#9 lore raw

PATCH 2/2 drm: Simplify drm_printk to reduce object size quite a bit

In reply to Joe Perches

Remove function name and special " *ERROR*" from argument list

$ size drivers/gpu/drm/built-in.o* (x86-32 defconfig, most drm selected)
   text	   data	    bss	    dec	    hex	filename
5635366	 182579	  14328	5832273	 58fe51	drivers/gpu/drm/built-in.o.new
5779552	 182579	  14328	5976459	 5b318b	drivers/gpu/drm/built-in.o.old

Using "%ps", __builtin_return_address(0) is the same as "%s", __func__ except for static inlines, but it's more or less the same output.

Miscellanea:

o Convert args... to ##__VA_ARGS__
o The equivalent DRM_DEV_<FOO> macros are rarely used and not worth conversion

---
 drivers/gpu/drm/drm_drv.c |  5 +++--
 include/drm/drmP.h        | 30 ++++++++++++++----------------
 2 files changed, 17 insertions(+), 18 deletions(-)
drivers/gpu/drm/drm_drv.c +3 -2
index 80c7f25b5b74..6efdba4993fc 100644
@@ -89,7 +89,6 @@ void drm_dev_printk(const struct device *dev, const char *level,
 EXPORT_SYMBOL(drm_dev_printk);
 
 void drm_printk(const char *level, unsigned int category,
-		const char *function_name, const char *prefix,
 		const char *format, ...)
 {
 	struct va_format vaf;
@@ -102,7 +101,9 @@ void drm_printk(const char *level, unsigned int category,
 	vaf.fmt = format;
 	vaf.va = &args;
 
-	printk("%s" DRM_PRINTK_FMT, level, function_name, prefix, &vaf);
+	printk("%s" "[" DRM_NAME ":%ps]%s %pV",
+	       level, __builtin_return_address(0),
+	       strcmp(level, KERN_ERR) == 0 ? " *ERROR*" : "", &vaf);
 
 	va_end(args);
 }
include/drm/drmP.h +14 -16
index 95cd04aa9bf7..4729c543d877 100644
@@ -140,9 +140,8 @@ void drm_dev_printk(const struct device *dev, const char *level,
 		    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, ...);
 
 /***********************************************************************/
@@ -198,8 +197,7 @@ void drm_printk(const char *level, unsigned int category,
 	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.
@@ -241,38 +239,38 @@ void drm_printk(const char *level, unsigned int category,
 #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...)	\
 ({									\
Signature · 1 line
2.10.0.rc2.1.g053435c
Reviewed-by on v1 2/2
#10 lore raw

Re: [PATCH 2/2] drm: Simplify drm_printk to reduce object size quite a bit

Quoted 9 lines · Joe Perches

Remove function name and special " *ERROR*" from argument list

$ size drivers/gpu/drm/built-in.o* (x86-32 defconfig, most drm selected)
   text	   data	    bss	    dec	    hex	filename
5635366	 182579	  14328	5832273	 58fe51	drivers/gpu/drm/built-in.o.new
5779552	 182579	  14328	5976459	 5b318b	drivers/gpu/drm/built-in.o.old

Using "%ps", __builtin_return_address(0) is the same as "%s", __func__ except for static inlines, but it's more or less the same output.

And for static inlines we more often want to know which of the many callers triggered the error. We would have to play it by ear to see which error messages need to be improved in cases where it not obvious without the context of the static inline function name.

Lgtm, reducing the call size for DRM_DEBUG is a definite improvement.

Quoted 6 lines

Miscellanea:

o Convert args... to ##__VA_ARGS__
o The equivalent DRM_DEV_<FOO> macros are rarely used and not worth conversion

Today. I would rather see us to migrate to DRM_DEV (i.e. dev_printk) so that the drm subsystem is consistent with the rest of the kernel and providing the necessary information for syslog filtering. -Chris

Signature · 1 line
Chris Wilson, Intel Open Source Technology Centre
Reviewed-by
#11 lore raw

Re: [PATCH 2/2] drm: Simplify drm_printk to reduce object size quite a bit

Quoted 11 lines · Chris Wilson
Quoted 9 lines · Joe Perches

Remove function name and special " *ERROR*" from argument list

$ size drivers/gpu/drm/built-in.o* (x86-32 defconfig, most drm selected)
   text          data     bss     dec     hex filename
5635366        182579   14328 5832273  58fe51 drivers/gpu/drm/built-in.o.new
5779552        182579   14328 5976459  5b318b drivers/gpu/drm/built-in.o.old

Using "%ps", __builtin_return_address(0) is the same as "%s", __func__ except for static inlines, but it's more or less the same output.

Quoted 8 lines

And for static inlines we more often want to know which of the many callers triggered the error. We would have to play it by ear to see which error messages need to be improved in cases where it not obvious without the context of the static inline function name.

Lgtm, reducing the call size for DRM_DEBUG is a definite improvement.

Agreed on the static inlines, hopefully we won't break anyone's log grep workflow.

I will push this to -misc in a couple days if no one objects.

Quoted 12 lines
Quoted 6 lines

Miscellanea:

o Convert args... to ##__VA_ARGS__
o The equivalent DRM_DEV_<FOO> macros are rarely used and not worth conversion

Today. I would rather see us to migrate to DRM_DEV (i.e. dev_printk) so that the drm subsystem is consistent with the rest of the kernel and providing the necessary information for syslog filtering. -Chris

Quoted 6 lines

--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#2 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

In reply to Joe Perches
Quoted 1 line · Joe Perches

Use a bit more consistent style with kernel loglevels

I'm not convinced this is worth doing if we're going to keep the WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

Sean

Quoted 140 lines

without
using macro argument concatenation.

Miscellanea:

o Single statement macros don't need do {} while (0)

---
 drivers/gpu/drm/i915/intel_guc_loader.c | 22 ++++++++++++----------
 include/drm/drmP.h                      | 26 +++++++++++++-------------
 2 files changed, 25 insertions(+), 23 deletions(-)
drivers/gpu/drm/i915/intel_guc_loader.c +12 -10
index 6fd39efb7894..bc4f9895f356 100644
@@ -566,7 +566,7 @@ int intel_guc_setup(struct drm_device *dev)
        else if (err == 0)
                DRM_INFO("GuC firmware load skipped\n");
        else if (ret != -EIO)
-               DRM_NOTE("GuC firmware load failed: %d\n", err);
+               DRM_NOTICE("GuC firmware load failed: %d\n", err);
        else
                DRM_WARN("GuC firmware load failed: %d\n", err);
 
@@ -574,7 +574,7 @@ int intel_guc_setup(struct drm_device *dev)
                if (fw_path == NULL)
                        DRM_INFO("GuC submission without firmware not supported\n");
                if (ret == 0)
-                       DRM_NOTE("Falling back from GuC submission to execlist mode\n");
+                       DRM_NOTICE("Falling back from GuC submission to execlist mode\n");
                else
                        DRM_ERROR("GuC init failed: %d\n", ret);
        }
@@ -606,7 +606,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
        /* Check the size of the blob before examining buffer contents */
        if (fw->size < sizeof(struct guc_css_header)) {
-               DRM_NOTE("Firmware header is missing\n");
+               DRM_NOTICE("Firmware header is missing\n");
                goto fail;
        }
 
@@ -618,7 +618,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
                css->key_size_dw - css->exponent_size_dw) * sizeof(u32);
 
        if (guc_fw->header_size != sizeof(struct guc_css_header)) {
-               DRM_NOTE("CSS header definition mismatch\n");
+               DRM_NOTICE("CSS header definition mismatch\n");
                goto fail;
        }
 
@@ -628,7 +628,7 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
        /* now RSA */
        if (css->key_size_dw != UOS_RSA_SCRATCH_MAX_COUNT) {
-               DRM_NOTE("RSA key size is bad\n");
+               DRM_NOTICE("RSA key size is bad\n");
                goto fail;
        }
        guc_fw->rsa_offset = guc_fw->ucode_offset + guc_fw->ucode_size;
@@ -637,14 +637,14 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
        /* At least, it should have header, uCode and RSA. Size of all three. */
        size = guc_fw->header_size + guc_fw->ucode_size + guc_fw->rsa_size;
        if (fw->size < size) {
-               DRM_NOTE("Missing firmware components\n");
+               DRM_NOTICE("Missing firmware components\n");
                goto fail;
        }
 
        /* Header and uCode will be loaded to WOPCM. Size of the two. */
        size = guc_fw->header_size + guc_fw->ucode_size;
        if (size > guc_wopcm_size(to_i915(dev))) {
-               DRM_NOTE("Firmware is too large to fit in WOPCM\n");
+               DRM_NOTICE("Firmware is too large to fit in WOPCM\n");
                goto fail;
        }
 
@@ -659,9 +659,11 @@ static void guc_fw_fetch(struct drm_device *dev, struct intel_guc_fw *guc_fw)
 
        if (guc_fw->guc_fw_major_found != guc_fw->guc_fw_major_wanted ||
            guc_fw->guc_fw_minor_found < guc_fw->guc_fw_minor_wanted) {
-               DRM_NOTE("GuC firmware version %d.%d, required %d.%d\n",
-                       guc_fw->guc_fw_major_found, guc_fw->guc_fw_minor_found,
-                       guc_fw->guc_fw_major_wanted, guc_fw->guc_fw_minor_wanted);
+               DRM_NOTICE("GuC firmware version %d.%d, required %d.%d\n",
+                          guc_fw->guc_fw_major_found,
+                          guc_fw->guc_fw_minor_found,
+                          guc_fw->guc_fw_major_wanted,
+                          guc_fw->guc_fw_minor_wanted);
                err = -ENOEXEC;
                goto fail;
        }
include/drm/drmP.h +13 -14
index c53dc90942e0..95cd04aa9bf7 100644
@@ -168,25 +168,25 @@ void drm_printk(const char *level, unsigned int category,
 /** \name Macros to make printk easier */
 /*@{*/
 
-#define _DRM_PRINTK(once, level, fmt, ...)                             \
-       do {                                                            \
-               printk##once(KERN_##level "[" DRM_NAME "] " fmt,        \
-                            ##__VA_ARGS__);                            \
-       } while (0)
+#define _drm_printk(level, fmt, ...)                                   \
+       printk(level "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
 
 #define DRM_INFO(fmt, ...)                                             \
-       _DRM_PRINTK(, INFO, fmt, ##__VA_ARGS__)
-#define DRM_NOTE(fmt, ...)                                             \
-       _DRM_PRINTK(, NOTICE, fmt, ##__VA_ARGS__)
+       _drm_printk(KERN_INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTICE(fmt, ...)                                           \
+       _drm_printk(KERN_NOTICE, fmt, ##__VA_ARGS__)
 #define DRM_WARN(fmt, ...)                                             \
-       _DRM_PRINTK(, WARNING, fmt, ##__VA_ARGS__)
+       _drm_printk(KERN_WARNING, fmt, ##__VA_ARGS__)
+
+#define _drm_printk_once(level, fmt, ...)                              \
+       printk_once(level "[" DRM_NAME "] " fmt, ##__VA_ARGS__)
 
 #define DRM_INFO_ONCE(fmt, ...)                                                \
-       _DRM_PRINTK(_once, INFO, fmt, ##__VA_ARGS__)
-#define DRM_NOTE_ONCE(fmt, ...)                                                \
-       _DRM_PRINTK(_once, NOTICE, fmt, ##__VA_ARGS__)
+       _drm_printk_once(KERN_INFO, fmt, ##__VA_ARGS__)
+#define DRM_NOTICE_ONCE(fmt, ...)                                      \
+       _drm_printk_once(KERN_NOTICE, fmt, ##__VA_ARGS__)
 #define DRM_WARN_ONCE(fmt, ...)                                                \
-       _DRM_PRINTK(_once, WARNING, fmt, ##__VA_ARGS__)
+       _drm_printk_once(KERN_WARNING, fmt, ##__VA_ARGS__)
 
 /**
  * Error output.
--

2.10.0.rc2.1.g053435c

Quoted 4 lines

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

#3 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

Quoted 5 lines · Sean Paul
Quoted 3 lines · Joe Perches

Use a bit more consistent style with kernel loglevels I'm not convinced this is worth doing if we're going to keep the

WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

What is used is pr_warn and dev_warn, not pr_warning and dev_warning

Well, there are still a few pr_warning uses, but those will eventually be removed/converted.

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#4 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

Quoted 9 lines · Joe Perches
Quoted 5 lines · Sean Paul
Quoted 3 lines · Joe Perches

Use a bit more consistent style with kernel loglevels I'm not convinced this is worth doing if we're going to keep the

WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

DRM_WARN is to DRM_WARNING like DRM_INFO is to DRM_INFORMATION and DRM_NOTE is to DRM_NOTICE... is what I'm thinking and seemingly so does Sean. Fwiw that part seem cosmetic/unrelated to the rest of the patch, so it might be worth keeping separate ?

-Emil
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

#5 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

Quoted 10 lines · Emil Velikov
Quoted 7 lines · Joe Perches
Quoted 5 lines · Sean Paul
Quoted 1 line · Joe Perches

Use a bit more consistent style with kernel loglevels

I'm not convinced this is worth doing if we're going to keep the WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

DRM_WARN is to DRM_WARNING like DRM_INFO is to DRM_INFORMATION and DRM_NOTE is to DRM_NOTICE...

DRM_INFORMATION doesn't exist in the kernel tree.

Quoted 3 lines

is what I'm thinking and seemingly so
does Sean. Fwiw that part seem cosmetic/unrelated to the rest of the patch, so it might be worth keeping separate ?

To me, simplifying the macro means using the common kernel macro forms.

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

#6 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

Quoted 12 lines · Joe Perches
Quoted 10 lines · Emil Velikov
Quoted 7 lines · Joe Perches
Quoted 5 lines · Sean Paul
Quoted 1 line · Joe Perches

Use a bit more consistent style with kernel loglevels

I'm not convinced this is worth doing if we're going to keep the WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

DRM_WARN is to DRM_WARNING like DRM_INFO is to DRM_INFORMATION and DRM_NOTE is to DRM_NOTICE...

Quoted 9 lines

DRM_INFORMATION doesn't exist in the kernel tree.

Quoted 3 lines

is what I'm thinking and seemingly so
does Sean. Fwiw that part seem cosmetic/unrelated to the rest of the patch, so it might be worth keeping separate ?

To me, simplifying the macro means using the common kernel macro forms.

"unify" might be better, but I agree.

Either way there's no point in elaborating on the point me(Sean?) meant since it's just going to get shoot down like a dog ;-)

Regards,
Emil
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

#8 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

In reply to Emil Velikov
Quoted 10 lines · Emil Velikov
Quoted 7 lines · Joe Perches
Quoted 5 lines · Sean Paul
Quoted 1 line · Joe Perches

Use a bit more consistent style with kernel loglevels

I'm not convinced this is worth doing if we're going to keep the WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

DRM_WARN is to DRM_WARNING like DRM_INFO is to DRM_INFORMATION and DRM_NOTE is to DRM_NOTICE...

DRM_INFORMATION doesn't exist in the kernel tree.

Quoted 3 lines

is what I'm thinking and seemingly so
does Sean. Fwiw that part seem cosmetic/unrelated to the rest of the patch, so it might be worth keeping separate ?

To me, simplifying the macro means using the common kernel macro forms.

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

#7 lore raw

Re: [PATCH 1/2] drm: Simplify logging macros, convert DRM_NOTE to DRM_NOTICE

In reply to Emil Velikov
Quoted 19 lines · Emil Velikov
Quoted 18 lines · Joe Perches
Quoted 10 lines · Emil Velikov
Quoted 7 lines · Joe Perches
Quoted 5 lines · Sean Paul
Quoted 1 line · Joe Perches

Use a bit more consistent style with kernel loglevels

I'm not convinced this is worth doing if we're going to keep the WARN/WARNING discrepancy, and I don't think we should switch DRM_WARN to DRM_WARNING since it's so widely used.

There is no DRM_WARN inconsistency.

DRM_WARN is to DRM_WARNING like DRM_INFO is to DRM_INFORMATION and DRM_NOTE is to DRM_NOTICE...

DRM_INFORMATION doesn't exist in the kernel tree.

Quoted 3 lines

is what I'm thinking and seemingly so
does Sean. Fwiw that part seem cosmetic/unrelated to the rest of the patch, so it might be worth keeping separate ?

Quoted 7 lines
Quoted 3 lines

To me, simplifying the macro means using the common kernel macro forms.

"unify" might be better, but I agree.

Either way there's no point in elaborating on the point me(Sean?) meant since it's just going to get shoot down like a dog ;-)

Yeah, I can see both sides, and I suppose I don't really care either way. Given that DRM_NOTE/NOTICE is only used 7 places (in one file), I doubt there are going to be any strong feelings.

Sean

Quoted 3 lines

Regards,
Emil

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Applied
#12 lore raw

Re: [PATCH 2/2] drm: Simplify drm_printk to reduce object size quite a bit

In reply to Sean Paul
Quoted 17 lines · Sean Paul
Quoted 16 lines · Chris Wilson
Quoted 9 lines · Joe Perches

Remove function name and special " *ERROR*" from argument list

$ size drivers/gpu/drm/built-in.o* (x86-32 defconfig, most drm selected)
   text          data     bss     dec     hex filename
5635366        182579   14328 5832273  58fe51 drivers/gpu/drm/built-in.o.new
5779552        182579   14328 5976459  5b318b drivers/gpu/drm/built-in.o.old

Using "%ps", __builtin_return_address(0) is the same as "%s", __func__ except for static inlines, but it's more or less the same output.

And for static inlines we more often want to know which of the many callers triggered the error. We would have to play it by ear to see which error messages need to be improved in cases where it not obvious without the context of the static inline function name.

Quoted 8 lines
Quoted 3 lines

Lgtm, reducing the call size for DRM_DEBUG is a definite improvement.

Agreed on the static inlines, hopefully we won't break anyone's log grep workflow.

I will push this to -misc in a couple days if no one objects.

Applied, thanks!

Sean

Quoted 21 lines
Quoted 18 lines
Quoted 6 lines

Miscellanea:

o Convert args... to ##__VA_ARGS__
o The equivalent DRM_DEV_<FOO> macros are rarely used and not worth conversion

Today. I would rather see us to migrate to DRM_DEV (i.e. dev_printk) so that the drm subsystem is consistent with the rest of the kernel and providing the necessary information for syslog filtering. -Chris

--
Chris Wilson, Intel Open Source Technology Centre
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel