Commit 0597ca7b authored by Christian König's avatar Christian König
Browse files

drm/radeon: use new iterator in radeon_sync_resv

parent 8315e297
Loading
Loading
Loading
Loading
+3 −19
Original line number Diff line number Diff line
@@ -91,33 +91,17 @@ int radeon_sync_resv(struct radeon_device *rdev,
		     struct dma_resv *resv,
		     bool shared)
{
	struct dma_resv_list *flist;
	struct dma_fence *f;
	struct dma_resv_iter cursor;
	struct radeon_fence *fence;
	unsigned i;
	struct dma_fence *f;
	int r = 0;

	/* always sync to the exclusive fence */
	f = dma_resv_excl_fence(resv);
	fence = f ? to_radeon_fence(f) : NULL;
	if (fence && fence->rdev == rdev)
		radeon_sync_fence(sync, fence);
	else if (f)
		r = dma_fence_wait(f, true);

	flist = dma_resv_shared_list(resv);
	if (shared || !flist || r)
		return r;

	for (i = 0; i < flist->shared_count; ++i) {
		f = rcu_dereference_protected(flist->shared[i],
					      dma_resv_held(resv));
	dma_resv_for_each_fence(&cursor, resv, shared, f) {
		fence = to_radeon_fence(f);
		if (fence && fence->rdev == rdev)
			radeon_sync_fence(sync, fence);
		else
			r = dma_fence_wait(f, true);

		if (r)
			break;
	}