diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gem.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_gem.c | 32 | 
1 files changed, 15 insertions, 17 deletions
diff --git a/drivers/gpu/drm/msm/msm_gem.c b/drivers/gpu/drm/msm/msm_gem.c index 8cf6362e64bf..5a6a79fbc9d6 100644 --- a/drivers/gpu/drm/msm/msm_gem.c +++ b/drivers/gpu/drm/msm/msm_gem.c @@ -9,6 +9,8 @@  #include <linux/dma-buf.h>  #include <linux/pfn_t.h> +#include <drm/drm_prime.h> +  #include "msm_drv.h"  #include "msm_fence.h"  #include "msm_gem.h" @@ -50,7 +52,7 @@ static void sync_for_device(struct msm_gem_object *msm_obj)  {  	struct device *dev = msm_obj->base.dev->dev; -	if (get_dma_ops(dev)) { +	if (get_dma_ops(dev) && IS_ENABLED(CONFIG_ARM64)) {  		dma_sync_sg_for_device(dev, msm_obj->sgt->sgl,  			msm_obj->sgt->nents, DMA_BIDIRECTIONAL);  	} else { @@ -63,7 +65,7 @@ static void sync_for_cpu(struct msm_gem_object *msm_obj)  {  	struct device *dev = msm_obj->base.dev->dev; -	if (get_dma_ops(dev)) { +	if (get_dma_ops(dev) && IS_ENABLED(CONFIG_ARM64)) {  		dma_sync_sg_for_cpu(dev, msm_obj->sgt->sgl,  			msm_obj->sgt->nents, DMA_BIDIRECTIONAL);  	} else { @@ -700,13 +702,13 @@ void msm_gem_vunmap(struct drm_gem_object *obj, enum msm_gem_lock subclass)  int msm_gem_sync_object(struct drm_gem_object *obj,  		struct msm_fence_context *fctx, bool exclusive)  { -	struct reservation_object_list *fobj; +	struct dma_resv_list *fobj;  	struct dma_fence *fence;  	int i, ret; -	fobj = reservation_object_get_list(obj->resv); +	fobj = dma_resv_get_list(obj->resv);  	if (!fobj || (fobj->shared_count == 0)) { -		fence = reservation_object_get_excl(obj->resv); +		fence = dma_resv_get_excl(obj->resv);  		/* don't need to wait on our own fences, since ring is fifo */  		if (fence && (fence->context != fctx->context)) {  			ret = dma_fence_wait(fence, true); @@ -720,7 +722,7 @@ int msm_gem_sync_object(struct drm_gem_object *obj,  	for (i = 0; i < fobj->shared_count; i++) {  		fence = rcu_dereference_protected(fobj->shared[i], -						reservation_object_held(obj->resv)); +						dma_resv_held(obj->resv));  		if (fence->context != fctx->context) {  			ret = dma_fence_wait(fence, true);  			if (ret) @@ -738,9 +740,9 @@ void msm_gem_move_to_active(struct drm_gem_object *obj,  	WARN_ON(msm_obj->madv != MSM_MADV_WILLNEED);  	msm_obj->gpu = gpu;  	if (exclusive) -		reservation_object_add_excl_fence(obj->resv, fence); +		dma_resv_add_excl_fence(obj->resv, fence);  	else -		reservation_object_add_shared_fence(obj->resv, fence); +		dma_resv_add_shared_fence(obj->resv, fence);  	list_del_init(&msm_obj->mm_list);  	list_add_tail(&msm_obj->mm_list, &gpu->active_list);  } @@ -765,7 +767,7 @@ int msm_gem_cpu_prep(struct drm_gem_object *obj, uint32_t op, ktime_t *timeout)  		op & MSM_PREP_NOSYNC ? 0 : timeout_to_jiffies(timeout);  	long ret; -	ret = reservation_object_wait_timeout_rcu(obj->resv, write, +	ret = dma_resv_wait_timeout_rcu(obj->resv, write,  						  true,  remain);  	if (ret == 0)  		return remain == 0 ? -EBUSY : -ETIMEDOUT; @@ -797,8 +799,8 @@ static void describe_fence(struct dma_fence *fence, const char *type,  void msm_gem_describe(struct drm_gem_object *obj, struct seq_file *m)  {  	struct msm_gem_object *msm_obj = to_msm_bo(obj); -	struct reservation_object *robj = obj->resv; -	struct reservation_object_list *fobj; +	struct dma_resv *robj = obj->resv; +	struct dma_resv_list *fobj;  	struct dma_fence *fence;  	struct msm_gem_vma *vma;  	uint64_t off = drm_vma_node_start(&obj->vma_node); @@ -975,7 +977,6 @@ int msm_gem_new_handle(struct drm_device *dev, struct drm_file *file,  static int msm_gem_new_impl(struct drm_device *dev,  		uint32_t size, uint32_t flags, -		struct reservation_object *resv,  		struct drm_gem_object **obj,  		bool struct_mutex_locked)  { @@ -1002,9 +1003,6 @@ static int msm_gem_new_impl(struct drm_device *dev,  	msm_obj->flags = flags;  	msm_obj->madv = MSM_MADV_WILLNEED; -	if (resv) -		msm_obj->base.resv = resv; -  	INIT_LIST_HEAD(&msm_obj->submit_entry);  	INIT_LIST_HEAD(&msm_obj->vmas); @@ -1046,7 +1044,7 @@ static struct drm_gem_object *_msm_gem_new(struct drm_device *dev,  	if (size == 0)  		return ERR_PTR(-EINVAL); -	ret = msm_gem_new_impl(dev, size, flags, NULL, &obj, struct_mutex_locked); +	ret = msm_gem_new_impl(dev, size, flags, &obj, struct_mutex_locked);  	if (ret)  		goto fail; @@ -1123,7 +1121,7 @@ struct drm_gem_object *msm_gem_import(struct drm_device *dev,  	size = PAGE_ALIGN(dmabuf->size); -	ret = msm_gem_new_impl(dev, size, MSM_BO_WC, dmabuf->resv, &obj, false); +	ret = msm_gem_new_impl(dev, size, MSM_BO_WC, &obj, false);  	if (ret)  		goto fail;  |