On Fri, 27 Apr 2012 15:17:42 +0200
Daniel Vetter <daniel.vet...@ffwll.ch> wrote:

> Slightly cleans up the code and could be useful for e.g. Ben
> Widawsky's hw context patches.
> 
> v2: New colours!
> 
> Cc: Ben Widawsky <b...@bwidawsk.net>

Unfortunately, I have been unable to make use of this patch. In all my
attempts, doing intel_gpu_reset (with nothing else) will result in the
next operation causing a hangcheck anyway. I think we should dig a bit
more into this before we both.

> Signed-Off-by: Daniel Vetter <daniel.vet...@ffwll.ch>
> ---
>  drivers/gpu/drm/i915/i915_drv.c |   43 ++++++++++++++++++++++++--------------
>  1 files changed, 27 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index f5450bb..c4251a1 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -768,6 +768,29 @@ static int gen6_do_reset(struct drm_device *dev, u8 
> flags)
>       return ret;
>  }
>  
> +static int intel_gpu_reset(struct drm_device *dev, u8 flags)
> +{
> +     int ret = -ENODEV;
> +
> +     switch (INTEL_INFO(dev)->gen) {
> +     case 7:
> +     case 6:
> +             ret = gen6_do_reset(dev, flags);
> +             break;
> +     case 5:
> +             ret = ironlake_do_reset(dev, flags);
> +             break;
> +     case 4:
> +             ret = i965_do_reset(dev, flags);
> +             break;
> +     case 2:
> +             ret = i8xx_do_reset(dev, flags);
> +             break;
> +     }
> +
> +     return ret;
> +}
> +
>  /**
>   * i915_reset - reset chip after a hang
>   * @dev: drm device to reset
> @@ -798,23 +821,11 @@ int i915_reset(struct drm_device *dev, u8 flags)
>       i915_gem_reset(dev);
>  
>       ret = -ENODEV;
> -     if (get_seconds() - dev_priv->last_gpu_reset < 5) {
> +     if (get_seconds() - dev_priv->last_gpu_reset < 5)
>               DRM_ERROR("GPU hanging too fast, declaring wedged!\n");
> -     } else switch (INTEL_INFO(dev)->gen) {
> -     case 7:
> -     case 6:
> -             ret = gen6_do_reset(dev, flags);
> -             break;
> -     case 5:
> -             ret = ironlake_do_reset(dev, flags);
> -             break;
> -     case 4:
> -             ret = i965_do_reset(dev, flags);
> -             break;
> -     case 2:
> -             ret = i8xx_do_reset(dev, flags);
> -             break;
> -     }
> +     else
> +             ret = intel_gpu_reset(dev, flags);
> +
>       dev_priv->last_gpu_reset = get_seconds();
>       if (ret) {
>               DRM_ERROR("Failed to reset chip.\n");

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to