A few nitpicks below. > diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c > index 5201f82..2dbf8f7 100644 > --- a/drivers/gpu/drm/i915/i915_gem.c > +++ b/drivers/gpu/drm/i915/i915_gem.c > @@ -2461,13 +2461,15 @@ i915_gem_object_flush_fence(struct > drm_i915_gem_object *obj, > obj->fenced_gpu_access = false; > } > > + if (obj->last_fenced_seqno && > + ring_passed_seqno(obj->ring, obj->last_fenced_seqno)) > + obj->last_fenced_seqno = 0;
This only avoids running the request retiring logic. Without this there are a few more things to simplify, I think: > if (obj->last_fenced_seqno && pipelined != obj->ring) { > - if (!ring_passed_seqno(obj->ring, obj->last_fenced_seqno)) { > - ret = i915_wait_request(obj->ring, > - obj->last_fenced_seqno); > - if (ret) > - return ret; > - } > + ret = i915_wait_request(obj->ring, > + obj->last_fenced_seqno); > + if (ret) > + return ret; > > obj->last_fenced_seqno = 0; Can't we move that (and the other copies) to move_off_active? > @@ -2648,15 +2650,18 @@ i915_gem_object_get_fence(struct drm_i915_gem_object > *obj, > old->last_fenced_seqno); > } Above here is the imo unnecessary clause mentioned in a previous patch. > > + obj->last_fenced_seqno = old->last_fenced_seqno; > drm_gem_object_unreference(&old->base); > - } else if (obj->last_fenced_seqno == 0) > - pipelined = NULL; > + } > > reg->obj = obj; > list_move_tail(®->lru_list, &dev_priv->mm.fence_list); > obj->fence_reg = reg - dev_priv->fence_regs; > > update: > + if (obj->last_fenced_seqno == 0) > + pipelined = NULL; > + > reg->setup_seqno = > pipelined ? i915_gem_next_request_seqno(pipelined) : 0; > reg->setup_ring = pipelined; -- Daniel Vetter Mail: dan...@ffwll.ch Mobile: +41 (0)79 365 57 48 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx