aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2015-04-07 16:21:08 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-04-10 10:37:31 +0200
commit423795cbac3b6b1b9fea6845a9233ba2dcc61142 (patch)
tree47429bb2244377648e754b3bc79aa37efa7d2b85
parentdrm/i915: Tidy gen8 IRQ handler (diff)
downloadlinux-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.c7
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);