diff options
Diffstat (limited to 'drivers/gpu/drm/vgem/vgem_fence.c')
| -rw-r--r-- | drivers/gpu/drm/vgem/vgem_fence.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/gpu/drm/vgem/vgem_fence.c b/drivers/gpu/drm/vgem/vgem_fence.c index bd6f75285fd9..c2a879734d40 100644 --- a/drivers/gpu/drm/vgem/vgem_fence.c +++ b/drivers/gpu/drm/vgem/vgem_fence.c @@ -130,6 +130,7 @@ int vgem_fence_attach_ioctl(struct drm_device *dev,  	struct vgem_file *vfile = file->driver_priv;  	struct dma_resv *resv;  	struct drm_gem_object *obj; +	enum dma_resv_usage usage;  	struct dma_fence *fence;  	int ret; @@ -151,18 +152,18 @@ int vgem_fence_attach_ioctl(struct drm_device *dev,  	/* Check for a conflicting fence */  	resv = obj->resv; -	if (!dma_resv_test_signaled(resv, arg->flags & VGEM_FENCE_WRITE)) { +	usage = dma_resv_usage_rw(arg->flags & VGEM_FENCE_WRITE); +	if (!dma_resv_test_signaled(resv, usage)) {  		ret = -EBUSY;  		goto err_fence;  	}  	/* Expose the fence via the dma-buf */ -	ret = 0;  	dma_resv_lock(resv, NULL); -	if (arg->flags & VGEM_FENCE_WRITE) -		dma_resv_add_excl_fence(resv, fence); -	else if ((ret = dma_resv_reserve_shared(resv, 1)) == 0) -		dma_resv_add_shared_fence(resv, fence); +	ret = dma_resv_reserve_fences(resv, 1); +	if (!ret) +		dma_resv_add_fence(resv, fence, arg->flags & VGEM_FENCE_WRITE ? +				   DMA_RESV_USAGE_WRITE : DMA_RESV_USAGE_READ);  	dma_resv_unlock(resv);  	/* Record the fence in our idr for later signaling */  |