diff mbox series

[1/5] drm/ttm: cleanup ttm_resource_compat

Message ID 20210831112110.113196-1-christian.koenig@amd.com (mailing list archive)
State New, archived
Headers show
Series [1/5] drm/ttm: cleanup ttm_resource_compat | expand

Commit Message

Christian König Aug. 31, 2021, 11:21 a.m. UTC
Move that function into the resource handling and remove an unused parameter.

Signed-off-by: Christian König <christian.koenig@amd.com>
---
 drivers/gpu/drm/ttm/ttm_bo.c       | 48 +----------------------------
 drivers/gpu/drm/ttm/ttm_resource.c | 49 ++++++++++++++++++++++++++++++
 drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 15 ++++-----
 include/drm/ttm/ttm_bo_api.h       | 12 --------
 include/drm/ttm/ttm_resource.h     |  3 ++
 5 files changed, 59 insertions(+), 68 deletions(-)

Comments

Huang Rui Sept. 2, 2021, 8:45 a.m. UTC | #1
On Tue, Aug 31, 2021 at 07:21:06PM +0800, Christian König wrote:
> Move that function into the resource handling and remove an unused parameter.
> 
> Signed-off-by: Christian König <christian.koenig@amd.com>

Looks this patch is separate from others in this series.

new_flags won't be used anymore.

Reviewed-by: Huang Rui <ray.huang@amd.com>

> ---
>  drivers/gpu/drm/ttm/ttm_bo.c       | 48 +----------------------------
>  drivers/gpu/drm/ttm/ttm_resource.c | 49 ++++++++++++++++++++++++++++++
>  drivers/gpu/drm/vmwgfx/vmwgfx_bo.c | 15 ++++-----
>  include/drm/ttm/ttm_bo_api.h       | 12 --------
>  include/drm/ttm/ttm_resource.h     |  3 ++
>  5 files changed, 59 insertions(+), 68 deletions(-)
> 
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 3573f9e393be..0a3127436f61 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -924,57 +924,11 @@ static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
>  	return ret;
>  }
>  
> -static bool ttm_bo_places_compat(const struct ttm_place *places,
> -				 unsigned num_placement,
> -				 struct ttm_resource *mem,
> -				 uint32_t *new_flags)
> -{
> -	unsigned i;
> -
> -	if (mem->placement & TTM_PL_FLAG_TEMPORARY)
> -		return false;
> -
> -	for (i = 0; i < num_placement; i++) {
> -		const struct ttm_place *heap = &places[i];
> -
> -		if ((mem->start < heap->fpfn ||
> -		     (heap->lpfn != 0 && (mem->start + mem->num_pages) > heap->lpfn)))
> -			continue;
> -
> -		*new_flags = heap->flags;
> -		if ((mem->mem_type == heap->mem_type) &&
> -		    (!(*new_flags & TTM_PL_FLAG_CONTIGUOUS) ||
> -		     (mem->placement & TTM_PL_FLAG_CONTIGUOUS)))
> -			return true;
> -	}
> -	return false;
> -}
> -
> -bool ttm_bo_mem_compat(struct ttm_placement *placement,
> -		       struct ttm_resource *mem,
> -		       uint32_t *new_flags)
> -{
> -	if (ttm_bo_places_compat(placement->placement, placement->num_placement,
> -				 mem, new_flags))
> -		return true;
> -
> -	if ((placement->busy_placement != placement->placement ||
> -	     placement->num_busy_placement > placement->num_placement) &&
> -	    ttm_bo_places_compat(placement->busy_placement,
> -				 placement->num_busy_placement,
> -				 mem, new_flags))
> -		return true;
> -
> -	return false;
> -}
> -EXPORT_SYMBOL(ttm_bo_mem_compat);
> -
>  int ttm_bo_validate(struct ttm_buffer_object *bo,
>  		    struct ttm_placement *placement,
>  		    struct ttm_operation_ctx *ctx)
>  {
>  	int ret;
> -	uint32_t new_flags;
>  
>  	dma_resv_assert_held(bo->base.resv);
>  
> @@ -987,7 +941,7 @@ int ttm_bo_validate(struct ttm_buffer_object *bo,
>  	/*
>  	 * Check whether we need to move buffer.
>  	 */
> -	if (!ttm_bo_mem_compat(placement, bo->resource, &new_flags)) {
> +	if (!ttm_resource_compat(bo->resource, placement)) {
>  		ret = ttm_bo_move_buffer(bo, placement, ctx);
>  		if (ret)
>  			return ret;
> diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
> index 2431717376e7..035d71332d18 100644
> --- a/drivers/gpu/drm/ttm/ttm_resource.c
> +++ b/drivers/gpu/drm/ttm/ttm_resource.c
> @@ -67,6 +67,55 @@ void ttm_resource_free(struct ttm_buffer_object *bo, struct ttm_resource **res)
>  }
>  EXPORT_SYMBOL(ttm_resource_free);
>  
> +static bool ttm_resource_places_compat(struct ttm_resource *res,
> +				       const struct ttm_place *places,
> +				       unsigned num_placement)
> +{
> +	unsigned i;
> +
> +	if (res->placement & TTM_PL_FLAG_TEMPORARY)
> +		return false;
> +
> +	for (i = 0; i < num_placement; i++) {
> +		const struct ttm_place *heap = &places[i];
> +
> +		if (res->start < heap->fpfn || (heap->lpfn &&
> +		    (res->start + res->num_pages) > heap->lpfn))
> +			continue;
> +
> +		if ((res->mem_type == heap->mem_type) &&
> +		    (!(heap->flags & TTM_PL_FLAG_CONTIGUOUS) ||
> +		     (res->placement & TTM_PL_FLAG_CONTIGUOUS)))
> +			return true;
> +	}
> +	return false;
> +}
> +
> +/**
> + * ttm_resource_compat - check if resource is compatible with placement
> + *
> + * @res: the resource to check
> + * @placement: the placement to check against
> + *
> + * Returns true if the placement is compatible.
> + */
> +bool ttm_resource_compat(struct ttm_resource *res,
> +			 struct ttm_placement *placement)
> +{
> +	if (ttm_resource_places_compat(res, placement->placement,
> +				       placement->num_placement))
> +		return true;
> +
> +	if ((placement->busy_placement != placement->placement ||
> +	     placement->num_busy_placement > placement->num_placement) &&
> +	    ttm_resource_places_compat(res, placement->busy_placement,
> +				       placement->num_busy_placement))
> +		return true;
> +
> +	return false;
> +}
> +EXPORT_SYMBOL(ttm_resource_compat);
> +
>  /**
>   * ttm_resource_manager_init
>   *
> diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> index 9e3e1429db94..fd007f1c1776 100644
> --- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
> @@ -94,7 +94,6 @@ int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
>  	struct ttm_operation_ctx ctx = {interruptible, false };
>  	struct ttm_buffer_object *bo = &buf->base;
>  	int ret;
> -	uint32_t new_flags;
>  
>  	vmw_execbuf_release_pinned_bo(dev_priv);
>  
> @@ -103,8 +102,8 @@ int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
>  		goto err;
>  
>  	if (buf->base.pin_count > 0)
> -		ret = ttm_bo_mem_compat(placement, bo->resource,
> -					&new_flags) == true ? 0 : -EINVAL;
> +		ret = ttm_resource_compat(bo->resource, placement)
> +			? 0 : -EINVAL;
>  	else
>  		ret = ttm_bo_validate(bo, placement, &ctx);
>  
> @@ -136,7 +135,6 @@ int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
>  	struct ttm_operation_ctx ctx = {interruptible, false };
>  	struct ttm_buffer_object *bo = &buf->base;
>  	int ret;
> -	uint32_t new_flags;
>  
>  	vmw_execbuf_release_pinned_bo(dev_priv);
>  
> @@ -145,8 +143,8 @@ int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
>  		goto err;
>  
>  	if (buf->base.pin_count > 0) {
> -		ret = ttm_bo_mem_compat(&vmw_vram_gmr_placement, bo->resource,
> -					&new_flags) == true ? 0 : -EINVAL;
> +		ret = ttm_resource_compat(bo->resource, &vmw_vram_gmr_placement)
> +			? 0 : -EINVAL;
>  		goto out_unreserve;
>  	}
>  
> @@ -208,7 +206,6 @@ int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
>  	struct ttm_placement placement;
>  	struct ttm_place place;
>  	int ret = 0;
> -	uint32_t new_flags;
>  
>  	place = vmw_vram_placement.placement[0];
>  	place.lpfn = bo->resource->num_pages;
> @@ -236,8 +233,8 @@ int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
>  	}
>  
>  	if (buf->base.pin_count > 0)
> -		ret = ttm_bo_mem_compat(&placement, bo->resource,
> -					&new_flags) == true ? 0 : -EINVAL;
> +		ret = ttm_resource_compat(bo->resource, &placement)
> +			? 0 : -EINVAL;
>  	else
>  		ret = ttm_bo_validate(bo, &placement, &ctx);
>  
> diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
> index f681bbdbc698..76d7c33884da 100644
> --- a/include/drm/ttm/ttm_bo_api.h
> +++ b/include/drm/ttm/ttm_bo_api.h
> @@ -264,18 +264,6 @@ static inline int ttm_bo_wait_ctx(struct ttm_buffer_object *bo, struct ttm_opera
>  	return ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu);
>  }
>  
> -/**
> - * ttm_bo_mem_compat - Check if proposed placement is compatible with a bo
> - *
> - * @placement:  Return immediately if buffer is busy.
> - * @mem:  The struct ttm_resource indicating the region where the bo resides
> - * @new_flags: Describes compatible placement found
> - *
> - * Returns true if the placement is compatible
> - */
> -bool ttm_bo_mem_compat(struct ttm_placement *placement, struct ttm_resource *mem,
> -		       uint32_t *new_flags);
> -
>  /**
>   * ttm_bo_validate
>   *
> diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
> index 140b6b9a8bbe..32c5edd9e8b5 100644
> --- a/include/drm/ttm/ttm_resource.h
> +++ b/include/drm/ttm/ttm_resource.h
> @@ -40,6 +40,7 @@ struct ttm_resource_manager;
>  struct ttm_resource;
>  struct ttm_place;
>  struct ttm_buffer_object;
> +struct ttm_placement;
>  struct dma_buf_map;
>  struct io_mapping;
>  struct sg_table;
> @@ -266,6 +267,8 @@ int ttm_resource_alloc(struct ttm_buffer_object *bo,
>  		       const struct ttm_place *place,
>  		       struct ttm_resource **res);
>  void ttm_resource_free(struct ttm_buffer_object *bo, struct ttm_resource **res);
> +bool ttm_resource_compat(struct ttm_resource *res,
> +			 struct ttm_placement *placement);
>  
>  void ttm_resource_manager_init(struct ttm_resource_manager *man,
>  			       unsigned long p_size);
> -- 
> 2.25.1
>
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
index 3573f9e393be..0a3127436f61 100644
--- a/drivers/gpu/drm/ttm/ttm_bo.c
+++ b/drivers/gpu/drm/ttm/ttm_bo.c
@@ -924,57 +924,11 @@  static int ttm_bo_move_buffer(struct ttm_buffer_object *bo,
 	return ret;
 }
 
-static bool ttm_bo_places_compat(const struct ttm_place *places,
-				 unsigned num_placement,
-				 struct ttm_resource *mem,
-				 uint32_t *new_flags)
-{
-	unsigned i;
-
-	if (mem->placement & TTM_PL_FLAG_TEMPORARY)
-		return false;
-
-	for (i = 0; i < num_placement; i++) {
-		const struct ttm_place *heap = &places[i];
-
-		if ((mem->start < heap->fpfn ||
-		     (heap->lpfn != 0 && (mem->start + mem->num_pages) > heap->lpfn)))
-			continue;
-
-		*new_flags = heap->flags;
-		if ((mem->mem_type == heap->mem_type) &&
-		    (!(*new_flags & TTM_PL_FLAG_CONTIGUOUS) ||
-		     (mem->placement & TTM_PL_FLAG_CONTIGUOUS)))
-			return true;
-	}
-	return false;
-}
-
-bool ttm_bo_mem_compat(struct ttm_placement *placement,
-		       struct ttm_resource *mem,
-		       uint32_t *new_flags)
-{
-	if (ttm_bo_places_compat(placement->placement, placement->num_placement,
-				 mem, new_flags))
-		return true;
-
-	if ((placement->busy_placement != placement->placement ||
-	     placement->num_busy_placement > placement->num_placement) &&
-	    ttm_bo_places_compat(placement->busy_placement,
-				 placement->num_busy_placement,
-				 mem, new_flags))
-		return true;
-
-	return false;
-}
-EXPORT_SYMBOL(ttm_bo_mem_compat);
-
 int ttm_bo_validate(struct ttm_buffer_object *bo,
 		    struct ttm_placement *placement,
 		    struct ttm_operation_ctx *ctx)
 {
 	int ret;
-	uint32_t new_flags;
 
 	dma_resv_assert_held(bo->base.resv);
 
@@ -987,7 +941,7 @@  int ttm_bo_validate(struct ttm_buffer_object *bo,
 	/*
 	 * Check whether we need to move buffer.
 	 */
-	if (!ttm_bo_mem_compat(placement, bo->resource, &new_flags)) {
+	if (!ttm_resource_compat(bo->resource, placement)) {
 		ret = ttm_bo_move_buffer(bo, placement, ctx);
 		if (ret)
 			return ret;
diff --git a/drivers/gpu/drm/ttm/ttm_resource.c b/drivers/gpu/drm/ttm/ttm_resource.c
index 2431717376e7..035d71332d18 100644
--- a/drivers/gpu/drm/ttm/ttm_resource.c
+++ b/drivers/gpu/drm/ttm/ttm_resource.c
@@ -67,6 +67,55 @@  void ttm_resource_free(struct ttm_buffer_object *bo, struct ttm_resource **res)
 }
 EXPORT_SYMBOL(ttm_resource_free);
 
+static bool ttm_resource_places_compat(struct ttm_resource *res,
+				       const struct ttm_place *places,
+				       unsigned num_placement)
+{
+	unsigned i;
+
+	if (res->placement & TTM_PL_FLAG_TEMPORARY)
+		return false;
+
+	for (i = 0; i < num_placement; i++) {
+		const struct ttm_place *heap = &places[i];
+
+		if (res->start < heap->fpfn || (heap->lpfn &&
+		    (res->start + res->num_pages) > heap->lpfn))
+			continue;
+
+		if ((res->mem_type == heap->mem_type) &&
+		    (!(heap->flags & TTM_PL_FLAG_CONTIGUOUS) ||
+		     (res->placement & TTM_PL_FLAG_CONTIGUOUS)))
+			return true;
+	}
+	return false;
+}
+
+/**
+ * ttm_resource_compat - check if resource is compatible with placement
+ *
+ * @res: the resource to check
+ * @placement: the placement to check against
+ *
+ * Returns true if the placement is compatible.
+ */
+bool ttm_resource_compat(struct ttm_resource *res,
+			 struct ttm_placement *placement)
+{
+	if (ttm_resource_places_compat(res, placement->placement,
+				       placement->num_placement))
+		return true;
+
+	if ((placement->busy_placement != placement->placement ||
+	     placement->num_busy_placement > placement->num_placement) &&
+	    ttm_resource_places_compat(res, placement->busy_placement,
+				       placement->num_busy_placement))
+		return true;
+
+	return false;
+}
+EXPORT_SYMBOL(ttm_resource_compat);
+
 /**
  * ttm_resource_manager_init
  *
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
index 9e3e1429db94..fd007f1c1776 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_bo.c
@@ -94,7 +94,6 @@  int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
 	struct ttm_operation_ctx ctx = {interruptible, false };
 	struct ttm_buffer_object *bo = &buf->base;
 	int ret;
-	uint32_t new_flags;
 
 	vmw_execbuf_release_pinned_bo(dev_priv);
 
@@ -103,8 +102,8 @@  int vmw_bo_pin_in_placement(struct vmw_private *dev_priv,
 		goto err;
 
 	if (buf->base.pin_count > 0)
-		ret = ttm_bo_mem_compat(placement, bo->resource,
-					&new_flags) == true ? 0 : -EINVAL;
+		ret = ttm_resource_compat(bo->resource, placement)
+			? 0 : -EINVAL;
 	else
 		ret = ttm_bo_validate(bo, placement, &ctx);
 
@@ -136,7 +135,6 @@  int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
 	struct ttm_operation_ctx ctx = {interruptible, false };
 	struct ttm_buffer_object *bo = &buf->base;
 	int ret;
-	uint32_t new_flags;
 
 	vmw_execbuf_release_pinned_bo(dev_priv);
 
@@ -145,8 +143,8 @@  int vmw_bo_pin_in_vram_or_gmr(struct vmw_private *dev_priv,
 		goto err;
 
 	if (buf->base.pin_count > 0) {
-		ret = ttm_bo_mem_compat(&vmw_vram_gmr_placement, bo->resource,
-					&new_flags) == true ? 0 : -EINVAL;
+		ret = ttm_resource_compat(bo->resource, &vmw_vram_gmr_placement)
+			? 0 : -EINVAL;
 		goto out_unreserve;
 	}
 
@@ -208,7 +206,6 @@  int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
 	struct ttm_placement placement;
 	struct ttm_place place;
 	int ret = 0;
-	uint32_t new_flags;
 
 	place = vmw_vram_placement.placement[0];
 	place.lpfn = bo->resource->num_pages;
@@ -236,8 +233,8 @@  int vmw_bo_pin_in_start_of_vram(struct vmw_private *dev_priv,
 	}
 
 	if (buf->base.pin_count > 0)
-		ret = ttm_bo_mem_compat(&placement, bo->resource,
-					&new_flags) == true ? 0 : -EINVAL;
+		ret = ttm_resource_compat(bo->resource, &placement)
+			? 0 : -EINVAL;
 	else
 		ret = ttm_bo_validate(bo, &placement, &ctx);
 
diff --git a/include/drm/ttm/ttm_bo_api.h b/include/drm/ttm/ttm_bo_api.h
index f681bbdbc698..76d7c33884da 100644
--- a/include/drm/ttm/ttm_bo_api.h
+++ b/include/drm/ttm/ttm_bo_api.h
@@ -264,18 +264,6 @@  static inline int ttm_bo_wait_ctx(struct ttm_buffer_object *bo, struct ttm_opera
 	return ttm_bo_wait(bo, ctx->interruptible, ctx->no_wait_gpu);
 }
 
-/**
- * ttm_bo_mem_compat - Check if proposed placement is compatible with a bo
- *
- * @placement:  Return immediately if buffer is busy.
- * @mem:  The struct ttm_resource indicating the region where the bo resides
- * @new_flags: Describes compatible placement found
- *
- * Returns true if the placement is compatible
- */
-bool ttm_bo_mem_compat(struct ttm_placement *placement, struct ttm_resource *mem,
-		       uint32_t *new_flags);
-
 /**
  * ttm_bo_validate
  *
diff --git a/include/drm/ttm/ttm_resource.h b/include/drm/ttm/ttm_resource.h
index 140b6b9a8bbe..32c5edd9e8b5 100644
--- a/include/drm/ttm/ttm_resource.h
+++ b/include/drm/ttm/ttm_resource.h
@@ -40,6 +40,7 @@  struct ttm_resource_manager;
 struct ttm_resource;
 struct ttm_place;
 struct ttm_buffer_object;
+struct ttm_placement;
 struct dma_buf_map;
 struct io_mapping;
 struct sg_table;
@@ -266,6 +267,8 @@  int ttm_resource_alloc(struct ttm_buffer_object *bo,
 		       const struct ttm_place *place,
 		       struct ttm_resource **res);
 void ttm_resource_free(struct ttm_buffer_object *bo, struct ttm_resource **res);
+bool ttm_resource_compat(struct ttm_resource *res,
+			 struct ttm_placement *placement);
 
 void ttm_resource_manager_init(struct ttm_resource_manager *man,
 			       unsigned long p_size);