drm/i915: Remove the dedicated hangcheck workqueue
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@chris-wilson.co.uk> Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com> Link: http://patchwork.freedesktop.org/patch/msgid/1467390209-3576-3-git-send-email-chris@chris-wilson.co.uk
This commit is contained in:
Родитель
05535726d3
Коммит
7774002586
|
@ -1175,15 +1175,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:
|
||||
|
@ -1194,7 +1187,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);
|
||||
}
|
||||
|
|
|
@ -1374,7 +1374,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. */
|
||||
|
|
|
@ -3249,7 +3249,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;
|
||||
|
@ -3259,8 +3259,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)
|
||||
|
|
Загрузка…
Ссылка в новой задаче