diff options
-rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c index b25d22971513..f7cd3461dc4f 100644 --- a/drivers/gpu/drm/i915/i915_gem.c +++ b/drivers/gpu/drm/i915/i915_gem.c | |||
@@ -2352,7 +2352,7 @@ static struct drm_i915_fence_reg * | |||
2352 | i915_find_fence_reg(struct drm_device *dev) | 2352 | i915_find_fence_reg(struct drm_device *dev) |
2353 | { | 2353 | { |
2354 | struct drm_i915_private *dev_priv = dev->dev_private; | 2354 | struct drm_i915_private *dev_priv = dev->dev_private; |
2355 | struct drm_i915_fence_reg *reg, *first, *avail; | 2355 | struct drm_i915_fence_reg *reg, *avail; |
2356 | int i; | 2356 | int i; |
2357 | 2357 | ||
2358 | /* First try to find a free reg */ | 2358 | /* First try to find a free reg */ |
@@ -2370,24 +2370,14 @@ i915_find_fence_reg(struct drm_device *dev) | |||
2370 | return NULL; | 2370 | return NULL; |
2371 | 2371 | ||
2372 | /* None available, try to steal one or wait for a user to finish */ | 2372 | /* None available, try to steal one or wait for a user to finish */ |
2373 | avail = first = NULL; | ||
2374 | list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) { | 2373 | list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) { |
2375 | if (reg->pin_count) | 2374 | if (reg->pin_count) |
2376 | continue; | 2375 | continue; |
2377 | 2376 | ||
2378 | if (first == NULL) | 2377 | return reg; |
2379 | first = reg; | ||
2380 | |||
2381 | if (reg->obj->last_fenced_seqno == 0) { | ||
2382 | avail = reg; | ||
2383 | break; | ||
2384 | } | ||
2385 | } | 2378 | } |
2386 | 2379 | ||
2387 | if (avail == NULL) | 2380 | return NULL; |
2388 | avail = first; | ||
2389 | |||
2390 | return avail; | ||
2391 | } | 2381 | } |
2392 | 2382 | ||
2393 | /** | 2383 | /** |