diff options
author | Thomas Hellström | 2008-03-06 10:35:56 -0600 |
---|---|---|
committer | Thomas Hellstrom | 2008-03-30 08:11:47 -0500 |
commit | b8567bafff58cfb9d77145088fd5b8ad2e5cde6b (patch) | |
tree | e51881c524cdf1340b883188b86f27a118fea434 | |
parent | cf3c0123a038a825d478fa10e29cd7490bab369e (diff) | |
download | external-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.c | 4 |
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 | ||
163 | void i915_fence_handler(struct drm_device *dev) | 163 | void 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 | ||