All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jani Nikula <jani.nikula@linux.intel.com>
To: Damien Lespiau <damien.lespiau@intel.com>,
	dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 08/11] drm: Pull the test on drm_debug in the logging macros
Date: Tue, 25 Mar 2014 11:56:24 +0200	[thread overview]
Message-ID: <87bnwuvbxz.fsf@intel.com> (raw)
In-Reply-To: <1395676398-7058-9-git-send-email-damien.lespiau@intel.com>

On Mon, 24 Mar 2014, Damien Lespiau <damien.lespiau@intel.com> wrote:
> In the logging code, we are currently checking is we need to output in

s/is/if/

> drm_ut_debug_printk(). This is too late. The problem is that when we write
> something like:
>
>     DRM_DEBUG_DRIVER("ELD on [CONNECTOR:%d:%s], [ENCODER:%d:%s]\n",
>                      connector->base.id,
>                      drm_get_connector_name(connector),
>                      connector->encoder->base.id,
>                      drm_get_encoder_name(connector->encoder));
>
> We start by evaluating the arguments (so call drm_get_connector_name() and
> drm_get_connector_name()) before ending up in drm_ut_debug_printk() which will
> then does nothing.

s/does/do/

> This means we execute a lot of instructions (drm_get_connector_name(), in turn,
> calls snprintf() for example) to happily discard them in the normal case,
> drm.debug=0.
>
> So, let's put the test on drm_debug earlier, in the macros themselves.
> Sprinkle an unlikely() as well for good measure.

Bikeshed, is it likely that the unlikely matters all that much?
https://lwn.net/Articles/70473/

I won't insist on removing them, it's more the casual nature of the
"sprinkling unlikely for good measure" that bugs me.


BR,
Jani.


>
> Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
> ---
>  drivers/gpu/drm/drm_stub.c | 26 ++++++++++++--------------
>  include/drm/drmP.h         | 27 +++++++++++++++------------
>  2 files changed, 27 insertions(+), 26 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_stub.c b/drivers/gpu/drm/drm_stub.c
> index dc2c609..81ed832 100644
> --- a/drivers/gpu/drm/drm_stub.c
> +++ b/drivers/gpu/drm/drm_stub.c
> @@ -97,26 +97,24 @@ int drm_err(const char *func, const char *format, ...)
>  }
>  EXPORT_SYMBOL(drm_err);
>  
> -void drm_ut_debug_printk(unsigned int request_level,
> -			 const char *prefix,
> +void drm_ut_debug_printk(const char *prefix,
>  			 const char *function_name,
>  			 const char *format, ...)
>  {
>  	struct va_format vaf;
>  	va_list args;
>  
> -	if (drm_debug & request_level) {
> -		va_start(args, format);
> -		vaf.fmt = format;
> -		vaf.va = &args;
> -
> -		if (function_name)
> -			printk(KERN_DEBUG "[%s:%s], %pV", prefix,
> -			       function_name, &vaf);
> -		else
> -			printk(KERN_DEBUG "%pV", &vaf);
> -		va_end(args);
> -	}
> +	va_start(args, format);
> +	vaf.fmt = format;
> +	vaf.va = &args;
> +
> +	if (function_name)
> +		printk(KERN_DEBUG "[%s:%s], %pV", prefix,
> +		       function_name, &vaf);
> +	else
> +		printk(KERN_DEBUG "%pV", &vaf);
> +
> +	va_end(args);
>  }
>  EXPORT_SYMBOL(drm_ut_debug_printk);
>  
> diff --git a/include/drm/drmP.h b/include/drm/drmP.h
> index 3055b36..87b558a 100644
> --- a/include/drm/drmP.h
> +++ b/include/drm/drmP.h
> @@ -121,9 +121,8 @@ struct videomode;
>  #define DRM_UT_KMS		0x04
>  #define DRM_UT_PRIME		0x08
>  
> -extern __printf(4, 5)
> -void drm_ut_debug_printk(unsigned int request_level,
> -			 const char *prefix,
> +extern __printf(3, 4)
> +void drm_ut_debug_printk(const char *prefix,
>  			 const char *function_name,
>  			 const char *format, ...);
>  extern __printf(2, 3)
> @@ -209,24 +208,28 @@ int drm_err(const char *func, const char *format, ...);
>  #if DRM_DEBUG_CODE
>  #define DRM_DEBUG(fmt, args...)						\
>  	do {								\
> -		drm_ut_debug_printk(DRM_UT_CORE, DRM_NAME, 		\
> -					__func__, fmt, ##args);		\
> +		if (unlikely(drm_debug & DRM_UT_CORE))			\
> +			drm_ut_debug_printk(DRM_NAME, __func__,		\
> +					    fmt, ##args);		\
>  	} while (0)
>  
>  #define DRM_DEBUG_DRIVER(fmt, args...)					\
>  	do {								\
> -		drm_ut_debug_printk(DRM_UT_DRIVER, DRM_NAME,		\
> -					__func__, fmt, ##args);		\
> +		if (unlikely(drm_debug & DRM_UT_DRIVER))		\
> +			drm_ut_debug_printk(DRM_NAME, __func__,		\
> +					    fmt, ##args);		\
>  	} while (0)
> -#define DRM_DEBUG_KMS(fmt, args...)				\
> +#define DRM_DEBUG_KMS(fmt, args...)					\
>  	do {								\
> -		drm_ut_debug_printk(DRM_UT_KMS, DRM_NAME, 		\
> -					 __func__, fmt, ##args);	\
> +		if (unlikely(drm_debug & DRM_UT_KMS))			\
> +			drm_ut_debug_printk(DRM_NAME, __func__,		\
> +					    fmt, ##args);		\
>  	} while (0)
>  #define DRM_DEBUG_PRIME(fmt, args...)					\
>  	do {								\
> -		drm_ut_debug_printk(DRM_UT_PRIME, DRM_NAME,		\
> -					__func__, fmt, ##args);		\
> +		if (unlikely(drm_debug & DRM_UT_PRIME))			\
> +			drm_ut_debug_printk(DRM_NAME, __func__,		\
> +					    fmt, ##args);		\
>  	} while (0)
>  #else
>  #define DRM_DEBUG_DRIVER(fmt, args...) do { } while (0)
> -- 
> 1.8.3.1
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Jani Nikula, Intel Open Source Technology Center

  reply	other threads:[~2014-03-25  9:56 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-24 15:53 [PATCH 00/11] A few patches around DRM logging Damien Lespiau
2014-03-24 15:53 ` [PATCH 01/11] drm: Refresh the explanation of debug categories Damien Lespiau
2014-03-24 15:53 ` [PATCH 02/11] drm: Remove the unused (and unusable) DRM_LOG_MODE() Damien Lespiau
2014-03-24 15:53 ` [PATCH 03/11] drm/exynos: Replace DRM_LOG_KMS() by DRM_DEBUG_KMS() Damien Lespiau
2014-03-24 15:53 ` [PATCH 04/11] drm/gma500: " Damien Lespiau
2014-03-24 20:39   ` Daniel Vetter
2014-03-24 21:12     ` Patrik Jakobsson
2014-03-24 15:53 ` [PATCH 05/11] drm/i915: " Damien Lespiau
2014-03-24 15:53 ` [PATCH 06/11] staging: imx-drm: " Damien Lespiau
2014-03-25  9:24   ` Philipp Zabel
2014-03-24 15:53 ` [PATCH 07/11] drm: Remove the now unused DRM_LOG* macros Damien Lespiau
2014-03-24 15:53 ` [PATCH 08/11] drm: Pull the test on drm_debug in the logging macros Damien Lespiau
2014-03-25  9:56   ` Jani Nikula [this message]
2014-03-25 10:44     ` Daniel Vetter
2014-03-24 15:53 ` [PATCH 09/11] drm: drm_ut_debug_printk() isn't called with NULL anywmore Damien Lespiau
2014-03-24 15:53 ` [PATCH 10/11] drm: Remove the prefix argument of drm_ut_debug_printk() Damien Lespiau
2014-03-24 15:53 ` [PATCH 11/11] drm: Remove the ', ' after the function name in debug logs Damien Lespiau
2014-03-24 20:41 ` [PATCH 00/11] A few patches around DRM logging Daniel Vetter
2014-03-25  1:00 ` Patrik Jakobsson
2014-03-25  6:35 ` Inki Dae
2014-03-28  3:09   ` Dave Airlie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87bnwuvbxz.fsf@intel.com \
    --to=jani.nikula@linux.intel.com \
    --cc=damien.lespiau@intel.com \
    --cc=dri-devel@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.