drm/ttm: allow fence to be added as shared

This patch adds a new flag to the ttm_validate_buffer list to
add the fence as shared to the reservation object.

Signed-off-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
diff --git a/drivers/gpu/drm/ttm/ttm_execbuf_util.c b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
index adafc0f..8ce508e 100644
--- a/drivers/gpu/drm/ttm/ttm_execbuf_util.c
+++ b/drivers/gpu/drm/ttm/ttm_execbuf_util.c
@@ -119,8 +119,14 @@
 			ret = -EBUSY;
 		}
 
-		if (!ret)
-			continue;
+		if (!ret) {
+			if (!entry->shared)
+				continue;
+
+			ret = reservation_object_reserve_shared(bo->resv);
+			if (!ret)
+				continue;
+		}
 
 		/* uh oh, we lost out, drop every reservation and try
 		 * to only reserve this buffer, then start over if
@@ -136,6 +142,9 @@
 			ret = 0;
 		}
 
+		if (!ret && entry->shared)
+			ret = reservation_object_reserve_shared(bo->resv);
+
 		if (unlikely(ret != 0)) {
 			if (ret == -EINTR)
 				ret = -ERESTARTSYS;
@@ -183,7 +192,10 @@
 
 	list_for_each_entry(entry, list, head) {
 		bo = entry->bo;
-		reservation_object_add_excl_fence(bo->resv, fence);
+		if (entry->shared)
+			reservation_object_add_shared_fence(bo->resv, fence);
+		else
+			reservation_object_add_excl_fence(bo->resv, fence);
 		ttm_bo_add_to_lru(bo);
 		__ttm_bo_unreserve(bo);
 	}