aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hellström2008-03-06 10:35:56 -0600
committerThomas Hellstrom2008-03-30 08:11:47 -0500
commitb8567bafff58cfb9d77145088fd5b8ad2e5cde6b (patch)
treee51881c524cdf1340b883188b86f27a118fea434
parentcf3c0123a038a825d478fa10e29cd7490bab369e (diff)
downloadexternal-libdrm-b8567bafff58cfb9d77145088fd5b8ad2e5cde6b.tar.gz
external-libdrm-b8567bafff58cfb9d77145088fd5b8ad2e5cde6b.tar.xz
external-libdrm-b8567bafff58cfb9d77145088fd5b8ad2e5cde6b.zip
Don't call fence::poll during irq if there are no waiters.
-rw-r--r--linux-core/i915_fence.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/linux-core/i915_fence.c b/linux-core/i915_fence.c
index de64a4f2..e403be6a 100644
--- a/linux-core/i915_fence.c
+++ b/linux-core/i915_fence.c
@@ -162,11 +162,13 @@ static int i915_fence_emit_sequence(struct drm_device *dev, uint32_t class,
162 162
163void i915_fence_handler(struct drm_device *dev) 163void i915_fence_handler(struct drm_device *dev)
164{ 164{
165 struct drm_i915_private *dev_priv = (struct drm_i915_private *) dev->dev_private;
165 struct drm_fence_manager *fm = &dev->fm; 166 struct drm_fence_manager *fm = &dev->fm;
166 struct drm_fence_class_manager *fc = &fm->fence_class[0]; 167 struct drm_fence_class_manager *fc = &fm->fence_class[0];
167 168
168 write_lock(&fm->lock); 169 write_lock(&fm->lock);
169 i915_fence_poll(dev, 0, fc->waiting_types); 170 if (likely(dev_priv->fence_irq_on))
171 i915_fence_poll(dev, 0, fc->waiting_types);
170 write_unlock(&fm->lock); 172 write_unlock(&fm->lock);
171} 173}
172 174