[Intel-gfx] [PATCH] drm/i915: Squash GEM load failure message (again)
Michał Winiarski
michal.winiarski at intel.com
Mon Jun 11 08:57:26 UTC 2018
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 at chris-wilson.co.uk>
> Cc: Michał Winiarski <michal.winiarski at intel.com>
Reviewed-by: Michał Winiarski <michal.winiarski at 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
>
More information about the Intel-gfx
mailing list