[RFC PATCH 05/18] drm/ttm: Add option to evict no BOs in operation

Christian König christian.koenig at amd.com
Thu Apr 25 06:20:15 UTC 2024


Am 24.04.24 um 18:56 schrieb Friedrich Vock:
> When undoing evictions because of decreased memory pressure, it makes no
> sense to try evicting other buffers.

That duplicates some functionality.

If a driver doesn't want eviction to happen it just needs to mark the 
desired placements as non-evictable with the TTM_PL_FLAG_DESIRED flag.

Regards,
Christian.

>
> Signed-off-by: Friedrich Vock <friedrich.vock at gmx.de>
> ---
>   drivers/gpu/drm/ttm/ttm_bo.c | 2 ++
>   include/drm/ttm/ttm_bo.h     | 2 ++
>   2 files changed, 4 insertions(+)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index 9a0efbf79316c..3b89fabc2f00a 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -764,6 +764,8 @@ static int ttm_bo_mem_force_space(struct ttm_buffer_object *bo,
>   			break;
>   		if (unlikely(ret != -ENOSPC))
>   			return ret;
> +		if (ctx->no_evict)
> +			return -ENOSPC;
>   		ret = ttm_mem_evict_first(bdev, man, place, ctx,
>   					  ticket);
>   		if (unlikely(ret != 0))
> diff --git a/include/drm/ttm/ttm_bo.h b/include/drm/ttm/ttm_bo.h
> index 8a1a29c6fbc50..a8f21092403d6 100644
> --- a/include/drm/ttm/ttm_bo.h
> +++ b/include/drm/ttm/ttm_bo.h
> @@ -192,6 +192,7 @@ struct ttm_operation_ctx {
>   	bool gfp_retry_mayfail;
>   	bool allow_res_evict;
>   	bool force_alloc;
> +	bool no_evict;
>   	struct dma_resv *resv;
>   	uint64_t bytes_moved;
>   };
> @@ -358,6 +359,7 @@ static inline void *ttm_kmap_obj_virtual(struct ttm_bo_kmap_obj *map,
>   	return map->virtual;
>   }
>
> +
>   int ttm_bo_wait_ctx(struct ttm_buffer_object *bo,
>   		    struct ttm_operation_ctx *ctx);
>   int ttm_bo_validate(struct ttm_buffer_object *bo,
> --
> 2.44.0
>



More information about the dri-devel mailing list