Commit 8fe301ad authored by Chris Wilson's avatar Chris Wilson Committed by Daniel Vetter
Browse files

drm/i915: Simplify fence finding

As the fences are stored in LRU order, we can simply reuse the oldest if
we do not have an unused register.

Signed-off-by: default avatarChris Wilson <>
Signed-off-by: default avatarDaniel Vetter <>
parent 1c293ea3
......@@ -2352,7 +2352,7 @@ static struct drm_i915_fence_reg *
i915_find_fence_reg(struct drm_device *dev)
struct drm_i915_private *dev_priv = dev->dev_private;
struct drm_i915_fence_reg *reg, *first, *avail;
struct drm_i915_fence_reg *reg, *avail;
int i;
/* First try to find a free reg */
......@@ -2370,24 +2370,14 @@ i915_find_fence_reg(struct drm_device *dev)
return NULL;
/* None available, try to steal one or wait for a user to finish */
avail = first = NULL;
list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) {
if (reg->pin_count)
if (first == NULL)
first = reg;
if (reg->obj->last_fenced_seqno == 0) {
avail = reg;
return reg;
if (avail == NULL)
avail = first;
return avail;
return NULL;
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment