diff mbox

[v2] drm/i915/guc: Don't try to enable GuC logging when we're not using GuC

Message ID 20180320084929.5038-1-michal.winiarski@intel.com (mailing list archive)
State New, archived
Headers show

Commit Message

Michał Winiarski March 20, 2018, 8:49 a.m. UTC
When changing the default values for guc_log_level, we accidentally left
the log enabled on non-guc platforms. Let's fix that.

v2: Define the levels used and remove (now obsolete) comments (Chris)

Fixes: 9605d1ce7c6b ("drm/i915/guc: Default to non-verbose GuC logging")
Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
---
 drivers/gpu/drm/i915/intel_guc_log.c |  3 +--
 drivers/gpu/drm/i915/intel_guc_log.h | 10 ++++++----
 drivers/gpu/drm/i915/intel_uc.c      | 21 ++++++++++-----------
 3 files changed, 17 insertions(+), 17 deletions(-)

Comments

Chris Wilson March 20, 2018, 11 a.m. UTC | #1
Quoting Michał Winiarski (2018-03-20 08:49:29)
> When changing the default values for guc_log_level, we accidentally left
> the log enabled on non-guc platforms. Let's fix that.
> 
> v2: Define the levels used and remove (now obsolete) comments (Chris)
> 
> Fixes: 9605d1ce7c6b ("drm/i915/guc: Default to non-verbose GuC logging")
> Reported-by: Chris Wilson <chris@chris-wilson.co.uk>
> Signed-off-by: Michał Winiarski <michal.winiarski@intel.com>
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Sagar Arun Kamble <sagar.a.kamble@intel.com>
> Cc: Michal Wajdeczko <michal.wajdeczko@intel.com>
> ---
>  drivers/gpu/drm/i915/intel_guc_log.c |  3 +--
>  drivers/gpu/drm/i915/intel_guc_log.h | 10 ++++++----
>  drivers/gpu/drm/i915/intel_uc.c      | 21 ++++++++++-----------
>  3 files changed, 17 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
> index 4cb422ceb283..16d206680edf 100644
> --- a/drivers/gpu/drm/i915/intel_guc_log.c
> +++ b/drivers/gpu/drm/i915/intel_guc_log.c
> @@ -515,8 +515,7 @@ int intel_guc_log_level_set(struct intel_guc_log *log, u64 val)
>          * GuC is recognizing log levels starting from 0 to max, we're using 0
>          * as indication that logging should be disabled.
>          */
> -       if (val < GUC_LOG_LEVEL_DISABLED ||
> -           val > GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX))
> +       if (val < GUC_LOG_LEVEL_DISABLED || val > GUC_LOG_LEVEL_MAX)
>                 return -EINVAL;
>  
>         mutex_lock(&dev_priv->drm.struct_mutex);
> diff --git a/drivers/gpu/drm/i915/intel_guc_log.h b/drivers/gpu/drm/i915/intel_guc_log.h
> index af1532c0d3e4..5793db8f9c09 100644
> --- a/drivers/gpu/drm/i915/intel_guc_log.h
> +++ b/drivers/gpu/drm/i915/intel_guc_log.h
> @@ -46,14 +46,16 @@ struct intel_guc;
>   * log enabling, and separate bit for default logging - which "conveniently"
>   * ignores the enable bit.
>   */
> -#define GUC_LOG_LEVEL_DISABLED                 0
> -#define GUC_LOG_LEVEL_TO_ENABLED(x)            ((x) > 0)
> -#define GUC_LOG_LEVEL_TO_VERBOSE(x)            ((x) > 1)
> +#define GUC_LOG_LEVEL_DISABLED         0
> +#define GUC_LOG_LEVEL_NON_VERBOSE      1
> +#define GUC_LOG_LEVEL_TO_ENABLED(x)    ((x) > GUC_LOG_LEVEL_DISABLED)
> +#define GUC_LOG_LEVEL_TO_VERBOSE(x)    ((x) > GUC_LOG_LEVEL_NON_VERBOSE)

Since this pair is boolean, may is suggest IS_ENABLED, IS_VERBOSE
respectively?

>  #define GUC_LOG_LEVEL_TO_VERBOSITY(x) ({               \
>         typeof(x) _x = (x);                             \
>         GUC_LOG_LEVEL_TO_VERBOSE(_x) ? _x - 2 : 0;      \
>  })
> -#define GUC_VERBOSITY_TO_LOG_LEVEL(x)          ((x) + 2)
> +#define GUC_VERBOSITY_TO_LOG_LEVEL(x)  ((x) + 2)
> +#define GUC_LOG_LEVEL_MAX GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)

Then you have

bool: IS_ENABLED, IS_VERBOSE;
int: TO_VERBOSITY, TO_LOG_LEVEL;

>  
>  struct intel_guc_log {
>         u32 flags;
> diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
> index 34e847d0ee4c..b525411ae631 100644
> --- a/drivers/gpu/drm/i915/intel_uc.c
> +++ b/drivers/gpu/drm/i915/intel_uc.c
> @@ -69,14 +69,15 @@ static int __get_platform_enable_guc(struct drm_i915_private *dev_priv)
>  
>  static int __get_default_guc_log_level(struct drm_i915_private *dev_priv)
>  {
> -       int guc_log_level = 1; /* non-verbose */
> +       int guc_log_level;
>  
> -       /* Enable if we're running on platform with GuC and debug config */
> -       if (HAS_GUC(dev_priv) && intel_uc_is_using_guc() &&
> -           (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
> -            IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)))
> -               guc_log_level =
> -                       GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX);
> +       if (!HAS_GUC(dev_priv) || !intel_uc_is_using_guc())
> +               guc_log_level = GUC_LOG_LEVEL_DISABLED;

Ok. That'll quieten down the surprise.

> +       else if (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
> +                IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))
> +               guc_log_level = GUC_LOG_LEVEL_MAX;

Noisy for CI.

> +       else
> +               guc_log_level = GUC_LOG_LEVEL_NON_VERBOSE;

Otherwise silent until asked.

>  
>         /* Any platform specific fine-tuning can be done here */
>  
> @@ -143,13 +144,11 @@ static void sanitize_options_early(struct drm_i915_private *dev_priv)
>                 i915_modparams.guc_log_level = 0;
>         }
>  
> -       if (i915_modparams.guc_log_level >
> -           GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)) {
> +       if (i915_modparams.guc_log_level > GUC_LOG_LEVEL_MAX) {
>                 DRM_WARN("Incompatible option detected: %s=%d, %s!\n",
>                          "guc_log_level", i915_modparams.guc_log_level,
>                          "verbosity too high");
> -               i915_modparams.guc_log_level =
> -                       GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX);
> +               i915_modparams.guc_log_level = GUC_LOG_LEVEL_MAX;
>         }

Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk>
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/intel_guc_log.c b/drivers/gpu/drm/i915/intel_guc_log.c
index 4cb422ceb283..16d206680edf 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.c
+++ b/drivers/gpu/drm/i915/intel_guc_log.c
@@ -515,8 +515,7 @@  int intel_guc_log_level_set(struct intel_guc_log *log, u64 val)
 	 * GuC is recognizing log levels starting from 0 to max, we're using 0
 	 * as indication that logging should be disabled.
 	 */
-	if (val < GUC_LOG_LEVEL_DISABLED ||
-	    val > GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX))
+	if (val < GUC_LOG_LEVEL_DISABLED || val > GUC_LOG_LEVEL_MAX)
 		return -EINVAL;
 
 	mutex_lock(&dev_priv->drm.struct_mutex);
diff --git a/drivers/gpu/drm/i915/intel_guc_log.h b/drivers/gpu/drm/i915/intel_guc_log.h
index af1532c0d3e4..5793db8f9c09 100644
--- a/drivers/gpu/drm/i915/intel_guc_log.h
+++ b/drivers/gpu/drm/i915/intel_guc_log.h
@@ -46,14 +46,16 @@  struct intel_guc;
  * log enabling, and separate bit for default logging - which "conveniently"
  * ignores the enable bit.
  */
-#define GUC_LOG_LEVEL_DISABLED			0
-#define GUC_LOG_LEVEL_TO_ENABLED(x)		((x) > 0)
-#define GUC_LOG_LEVEL_TO_VERBOSE(x)		((x) > 1)
+#define GUC_LOG_LEVEL_DISABLED		0
+#define GUC_LOG_LEVEL_NON_VERBOSE	1
+#define GUC_LOG_LEVEL_TO_ENABLED(x)	((x) > GUC_LOG_LEVEL_DISABLED)
+#define GUC_LOG_LEVEL_TO_VERBOSE(x)	((x) > GUC_LOG_LEVEL_NON_VERBOSE)
 #define GUC_LOG_LEVEL_TO_VERBOSITY(x) ({		\
 	typeof(x) _x = (x);				\
 	GUC_LOG_LEVEL_TO_VERBOSE(_x) ? _x - 2 : 0;	\
 })
-#define GUC_VERBOSITY_TO_LOG_LEVEL(x)		((x) + 2)
+#define GUC_VERBOSITY_TO_LOG_LEVEL(x)	((x) + 2)
+#define GUC_LOG_LEVEL_MAX GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)
 
 struct intel_guc_log {
 	u32 flags;
diff --git a/drivers/gpu/drm/i915/intel_uc.c b/drivers/gpu/drm/i915/intel_uc.c
index 34e847d0ee4c..b525411ae631 100644
--- a/drivers/gpu/drm/i915/intel_uc.c
+++ b/drivers/gpu/drm/i915/intel_uc.c
@@ -69,14 +69,15 @@  static int __get_platform_enable_guc(struct drm_i915_private *dev_priv)
 
 static int __get_default_guc_log_level(struct drm_i915_private *dev_priv)
 {
-	int guc_log_level = 1; /* non-verbose */
+	int guc_log_level;
 
-	/* Enable if we're running on platform with GuC and debug config */
-	if (HAS_GUC(dev_priv) && intel_uc_is_using_guc() &&
-	    (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
-	     IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM)))
-		guc_log_level =
-			GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX);
+	if (!HAS_GUC(dev_priv) || !intel_uc_is_using_guc())
+		guc_log_level = GUC_LOG_LEVEL_DISABLED;
+	else if (IS_ENABLED(CONFIG_DRM_I915_DEBUG) ||
+		 IS_ENABLED(CONFIG_DRM_I915_DEBUG_GEM))
+		guc_log_level = GUC_LOG_LEVEL_MAX;
+	else
+		guc_log_level = GUC_LOG_LEVEL_NON_VERBOSE;
 
 	/* Any platform specific fine-tuning can be done here */
 
@@ -143,13 +144,11 @@  static void sanitize_options_early(struct drm_i915_private *dev_priv)
 		i915_modparams.guc_log_level = 0;
 	}
 
-	if (i915_modparams.guc_log_level >
-	    GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX)) {
+	if (i915_modparams.guc_log_level > GUC_LOG_LEVEL_MAX) {
 		DRM_WARN("Incompatible option detected: %s=%d, %s!\n",
 			 "guc_log_level", i915_modparams.guc_log_level,
 			 "verbosity too high");
-		i915_modparams.guc_log_level =
-			GUC_VERBOSITY_TO_LOG_LEVEL(GUC_LOG_VERBOSITY_MAX);
+		i915_modparams.guc_log_level = GUC_LOG_LEVEL_MAX;
 	}
 
 	DRM_DEBUG_DRIVER("guc_log_level=%d (enabled:%s, verbose:%s, verbosity:%d)\n",