Skip to content

Commit

Permalink
drm/nouveau: move fence sequence check to start of loop
Browse files Browse the repository at this point in the history
I want to be able to use REF_CNT from other places in the kernel without
pushing a fence object onto the list of emitted fences.

The current code makes an assumption that every time the acked sequence is
bumped that there's at least one fence on the list that'll be signalled.

This will no longer be true in the near future.

Signed-off-by: Ben Skeggs <[email protected]>
  • Loading branch information
Ben Skeggs committed Mar 22, 2012
1 parent b5b2e59 commit b08abd4
Showing 1 changed file with 5 additions and 6 deletions.
11 changes: 5 additions & 6 deletions drivers/gpu/drm/nouveau/nouveau_fence.c
Original file line number Diff line number Diff line change
Expand Up @@ -93,18 +93,17 @@ nouveau_fence_update(struct nouveau_channel *chan)
}

list_for_each_entry_safe(fence, tmp, &chan->fence.pending, entry) {
sequence = fence->sequence;
if (fence->sequence > chan->fence.sequence_ack)
break;

fence->signalled = true;
list_del(&fence->entry);

if (unlikely(fence->work))
if (fence->work)
fence->work(fence->priv, true);

kref_put(&fence->refcount, nouveau_fence_del);

if (sequence == chan->fence.sequence_ack)
break;
}

out:
spin_unlock(&chan->fence.lock);
}
Expand Down

0 comments on commit b08abd4

Please sign in to comment.