[Intel-gfx] [PATCH 03/21] drm/i915: Remove the dedicated hangcheck workqueue
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Mon Jun 6 12:52:33 UTC 2016
On 03/06/16 17:08, Chris Wilson wrote:
> The queue only ever contains at most one item and has no special flags.
> It is just a very simple wrapper around the system-wq - a complication
> with no benefits.
>
> v2: Use the system_long_wq as we may wish to capture the error state
> after detecting the hang - which may take a bit of time.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/i915_drv.c | 8 --------
> drivers/gpu/drm/i915/i915_drv.h | 1 -
> drivers/gpu/drm/i915/i915_irq.c | 7 ++++---
> 3 files changed, 4 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
> index 2f8b2545e3de..3c8c75c77574 100644
> --- a/drivers/gpu/drm/i915/i915_drv.c
> +++ b/drivers/gpu/drm/i915/i915_drv.c
> @@ -1143,15 +1143,8 @@ static int i915_workqueues_init(struct drm_i915_private *dev_priv)
> if (dev_priv->hotplug.dp_wq == NULL)
> goto out_free_wq;
>
> - dev_priv->gpu_error.hangcheck_wq =
> - alloc_ordered_workqueue("i915-hangcheck", 0);
> - if (dev_priv->gpu_error.hangcheck_wq == NULL)
> - goto out_free_dp_wq;
> -
> return 0;
>
> -out_free_dp_wq:
> - destroy_workqueue(dev_priv->hotplug.dp_wq);
> out_free_wq:
> destroy_workqueue(dev_priv->wq);
> out_err:
> @@ -1162,7 +1155,6 @@ out_err:
>
> static void i915_workqueues_cleanup(struct drm_i915_private *dev_priv)
> {
> - destroy_workqueue(dev_priv->gpu_error.hangcheck_wq);
> destroy_workqueue(dev_priv->hotplug.dp_wq);
> destroy_workqueue(dev_priv->wq);
> }
> diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
> index be533de7383b..9471ebc99624 100644
> --- a/drivers/gpu/drm/i915/i915_drv.h
> +++ b/drivers/gpu/drm/i915/i915_drv.h
> @@ -1365,7 +1365,6 @@ struct i915_gpu_error {
> /* Hang gpu twice in this window and your context gets banned */
> #define DRM_I915_CTX_BAN_PERIOD DIV_ROUND_UP(8*DRM_I915_HANGCHECK_PERIOD, 1000)
>
> - struct workqueue_struct *hangcheck_wq;
> struct delayed_work hangcheck_work;
>
> /* For reset and error_state handling. */
> diff --git a/drivers/gpu/drm/i915/i915_irq.c b/drivers/gpu/drm/i915/i915_irq.c
> index 1303d7c034d3..a09310701999 100644
> --- a/drivers/gpu/drm/i915/i915_irq.c
> +++ b/drivers/gpu/drm/i915/i915_irq.c
> @@ -3248,7 +3248,7 @@ out:
>
> void i915_queue_hangcheck(struct drm_i915_private *dev_priv)
> {
> - struct i915_gpu_error *e = &dev_priv->gpu_error;
> + unsigned long delay;
>
> if (!i915.enable_hangcheck)
> return;
> @@ -3258,8 +3258,9 @@ void i915_queue_hangcheck(struct drm_i915_private *dev_priv)
> * we will ignore a hung ring if a second ring is kept busy.
> */
>
> - queue_delayed_work(e->hangcheck_wq, &e->hangcheck_work,
> - round_jiffies_up_relative(DRM_I915_HANGCHECK_JIFFIES));
> + delay = round_jiffies_up_relative(DRM_I915_HANGCHECK_JIFFIES);
> + queue_delayed_work(system_long_wq,
> + &dev_priv->gpu_error.hangcheck_work, delay);
> }
>
> static void ibx_irq_reset(struct drm_device *dev)
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the Intel-gfx
mailing list