diff mbox

drm/i915: Squash GEM load failure message (again)

Message ID 20180609111058.2660-1-chris@chris-wilson.co.uk (mailing list archive)
State New, archived
Headers show

Commit Message

Chris Wilson June 9, 2018, 11:10 a.m. UTC
Due to a silent conflict (silent because we are trying to fix the CI
test that is meant to exercising these failures!) between commit
51e645b6652c ("drm/i915: Mark the GPU as wedged without error on fault
injection") and commit 8571a05a9dd0 ("drm/i915: Use GEM suspend when
aborting initialisation"), we failed to actually squash the error
message after injecting the load failure.

Rearrange the code to export i915_load_failure() for better logging of
real errors (and quiet logging of injected errors).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>
---
 drivers/gpu/drm/i915/i915_drv.c | 20 ++++++--------------
 drivers/gpu/drm/i915/i915_drv.h | 11 +++++++++++
 drivers/gpu/drm/i915/i915_gem.c |  5 ++---
 3 files changed, 19 insertions(+), 17 deletions(-)

Comments

Michał Winiarski June 11, 2018, 8:57 a.m. UTC | #1
On Sat, Jun 09, 2018 at 12:10:58PM +0100, Chris Wilson wrote:
> Due to a silent conflict (silent because we are trying to fix the CI
> test that is meant to exercising these failures!) between commit
> 51e645b6652c ("drm/i915: Mark the GPU as wedged without error on fault
> injection") and commit 8571a05a9dd0 ("drm/i915: Use GEM suspend when
> aborting initialisation"), we failed to actually squash the error
> message after injecting the load failure.
> 
> Rearrange the code to export i915_load_failure() for better logging of
> real errors (and quiet logging of injected errors).
> 
> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Michał Winiarski <michal.winiarski@intel.com>

Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>

-Michał

> ---
>  drivers/gpu/drm/i915/i915_drv.c | 20 ++++++--------------
>  drivers/gpu/drm/i915/i915_drv.h | 11 +++++++++++
>  drivers/gpu/drm/i915/i915_gem.c |  5 ++---
>  3 files changed, 19 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 0a1b09bb658f..6ca949a2cb58 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -73,6 +73,12 @@ bool __i915_inject_load_failure(const char *func, int line)
>  
>  	return false;
>  }
> +
> +bool i915_error_injected(void)
> +{
> +	return i915_load_fail_count && !i915_modparams.inject_load_failure;
> +}
> +
>  #endif
>  
>  #define FDO_BUG_URL "https://bugs.freedesktop.org/enter_bug.cgi?product=DRI"
> @@ -115,20 +121,6 @@ __i915_printk(struct drm_i915_private *dev_priv, const char *level,
>  	va_end(args);
>  }
>  
> -static bool i915_error_injected(struct drm_i915_private *dev_priv)
> -{
> -#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
> -	return i915_load_fail_count && !i915_modparams.inject_load_failure;
> -#else
> -	return false;
> -#endif
> -}
> -
> -#define i915_load_error(i915, fmt, ...)					 \
> -	__i915_printk(i915,						 \
> -		      i915_error_injected(i915) ? KERN_DEBUG : KERN_ERR, \
> -		      fmt, ##__VA_ARGS__)
> -
>  /* Map PCH device id to PCH type, or PCH_NONE if unknown. */
>  static enum intel_pch
>  intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index c4073666f1ca..8f017b1468f5 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -108,13 +108,24 @@
>  	I915_STATE_WARN((x), "%s", "WARN_ON(" __stringify(x) ")")
>  
>  #if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
> +
>  bool __i915_inject_load_failure(const char *func, int line);
>  #define i915_inject_load_failure() \
>  	__i915_inject_load_failure(__func__, __LINE__)
> +
> +bool i915_error_injected(void);
> +
>  #else
> +
>  #define i915_inject_load_failure() false
> +#define i915_error_injected() false
> +
>  #endif
>  
> +#define i915_load_error(i915, fmt, ...)					 \
> +	__i915_printk(i915, i915_error_injected() ? KERN_DEBUG : KERN_ERR, \
> +		      fmt, ##__VA_ARGS__)
> +
>  typedef struct {
>  	uint32_t val;
>  } uint_fixed_16_16_t;
> diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
> index 4187e0688e50..0f28b5ddfd15 100644
> --- a/drivers/gpu/drm/i915/i915_gem.c
> +++ b/drivers/gpu/drm/i915/i915_gem.c
> @@ -5491,8 +5491,6 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
>  	}
>  
>  	if (i915_inject_load_failure()) {
> -		DRM_DEBUG_DRIVER("Marking the driver as wedged\n");
> -		i915_gem_set_wedged(dev_priv);  /* Fail silently! */
>  		ret = -EIO;
>  		goto err_init_hw;
>  	}
> @@ -5543,7 +5541,8 @@ int i915_gem_init(struct drm_i915_private *dev_priv)
>  		 * for all other failure, such as an allocation failure, bail.
>  		 */
>  		if (!i915_terminally_wedged(&dev_priv->gpu_error)) {
> -			DRM_ERROR("Failed to initialize GPU, declaring it wedged\n");
> +			i915_load_error(dev_priv,
> +					"Failed to initialize GPU, declaring it wedged!\n");
>  			i915_gem_set_wedged(dev_priv);
>  		}
>  		ret = 0;
> -- 
> 2.17.1
>
Chris Wilson June 11, 2018, 9:06 a.m. UTC | #2
Quoting Michał Winiarski (2018-06-11 09:57:26)
> On Sat, Jun 09, 2018 at 12:10:58PM +0100, Chris Wilson wrote:
> > Due to a silent conflict (silent because we are trying to fix the CI
> > test that is meant to exercising these failures!) between commit
> > 51e645b6652c ("drm/i915: Mark the GPU as wedged without error on fault
> > injection") and commit 8571a05a9dd0 ("drm/i915: Use GEM suspend when
> > aborting initialisation"), we failed to actually squash the error
> > message after injecting the load failure.
> > 
> > Rearrange the code to export i915_load_failure() for better logging of
> > real errors (and quiet logging of injected errors).
> > 
> > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
> > Cc: Michał Winiarski <michal.winiarski@intel.com>
> 
> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>

Thankyou, let's hope this time it sticks!
Applied, will push later on.
-Chris
diff mbox

Patch

diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 0a1b09bb658f..6ca949a2cb58 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -73,6 +73,12 @@  bool __i915_inject_load_failure(const char *func, int line)
 
 	return false;
 }
+
+bool i915_error_injected(void)
+{
+	return i915_load_fail_count && !i915_modparams.inject_load_failure;
+}
+
 #endif
 
 #define FDO_BUG_URL "https://bugs.freedesktop.org/enter_bug.cgi?product=DRI"
@@ -115,20 +121,6 @@  __i915_printk(struct drm_i915_private *dev_priv, const char *level,
 	va_end(args);
 }
 
-static bool i915_error_injected(struct drm_i915_private *dev_priv)
-{
-#if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
-	return i915_load_fail_count && !i915_modparams.inject_load_failure;
-#else
-	return false;
-#endif
-}
-
-#define i915_load_error(i915, fmt, ...)					 \
-	__i915_printk(i915,						 \
-		      i915_error_injected(i915) ? KERN_DEBUG : KERN_ERR, \
-		      fmt, ##__VA_ARGS__)
-
 /* Map PCH device id to PCH type, or PCH_NONE if unknown. */
 static enum intel_pch
 intel_pch_type(const struct drm_i915_private *dev_priv, unsigned short id)
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index c4073666f1ca..8f017b1468f5 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -108,13 +108,24 @@ 
 	I915_STATE_WARN((x), "%s", "WARN_ON(" __stringify(x) ")")
 
 #if IS_ENABLED(CONFIG_DRM_I915_DEBUG)
+
 bool __i915_inject_load_failure(const char *func, int line);
 #define i915_inject_load_failure() \
 	__i915_inject_load_failure(__func__, __LINE__)
+
+bool i915_error_injected(void);
+
 #else
+
 #define i915_inject_load_failure() false
+#define i915_error_injected() false
+
 #endif
 
+#define i915_load_error(i915, fmt, ...)					 \
+	__i915_printk(i915, i915_error_injected() ? KERN_DEBUG : KERN_ERR, \
+		      fmt, ##__VA_ARGS__)
+
 typedef struct {
 	uint32_t val;
 } uint_fixed_16_16_t;
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 4187e0688e50..0f28b5ddfd15 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -5491,8 +5491,6 @@  int i915_gem_init(struct drm_i915_private *dev_priv)
 	}
 
 	if (i915_inject_load_failure()) {
-		DRM_DEBUG_DRIVER("Marking the driver as wedged\n");
-		i915_gem_set_wedged(dev_priv);  /* Fail silently! */
 		ret = -EIO;
 		goto err_init_hw;
 	}
@@ -5543,7 +5541,8 @@  int i915_gem_init(struct drm_i915_private *dev_priv)
 		 * for all other failure, such as an allocation failure, bail.
 		 */
 		if (!i915_terminally_wedged(&dev_priv->gpu_error)) {
-			DRM_ERROR("Failed to initialize GPU, declaring it wedged\n");
+			i915_load_error(dev_priv,
+					"Failed to initialize GPU, declaring it wedged!\n");
 			i915_gem_set_wedged(dev_priv);
 		}
 		ret = 0;