diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2015-04-07 16:21:08 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-04-10 10:37:31 +0200 |
commit | 423795cbac3b6b1b9fea6845a9233ba2dcc61142 (patch) | |
tree | 47429bb2244377648e754b3bc79aa37efa7d2b85 | |
parent | drm/i915: Tidy gen8 IRQ handler (diff) | |
download | linux-dev-423795cbac3b6b1b9fea6845a9233ba2dcc61142.tar.xz linux-dev-423795cbac3b6b1b9fea6845a9233ba2dcc61142.zip |
drm/i915: Prefer to check for idleness in worker rather than sync-flush
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index a57fdd98b4fe..95e46c7490ab 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c @@ -2411,7 +2411,6 @@ int __i915_add_request(struct intel_engine_cs *ring, i915_queue_hangcheck(ring->dev); - cancel_delayed_work_sync(&dev_priv->mm.idle_work); queue_delayed_work(dev_priv->wq, &dev_priv->mm.retire_work, round_jiffies_up_relative(HZ)); @@ -2797,6 +2796,12 @@ i915_gem_idle_work_handler(struct work_struct *work) struct drm_i915_private *dev_priv = container_of(work, typeof(*dev_priv), mm.idle_work.work); struct drm_device *dev = dev_priv->dev; + struct intel_engine_cs *ring; + int i; + + for_each_ring(ring, dev_priv, i) + if (!list_empty(&ring->request_list)) + return; intel_mark_idle(dev); |