[Nouveau] [PATCH 5/9] drm/nouveau: stop using ttm_bo_wait

Christian König ckoenig.leichtzumerken at gmail.com
Wed Jan 11 09:52:16 UTC 2023


Hi guys,

can I get a quick ack for this?

The patch has no functional change and is just a cleanup.

Thanks,
Christian.

Am 25.11.22 um 11:21 schrieb Christian König:
> TTM is just wrapping core DMA functionality here, remove the mid-layer.
> No functional change.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> ---
>   drivers/gpu/drm/nouveau/nouveau_bo.c  |  6 +++++-
>   drivers/gpu/drm/nouveau/nouveau_gem.c | 11 ++++++++---
>   2 files changed, 13 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/nouveau/nouveau_bo.c b/drivers/gpu/drm/nouveau/nouveau_bo.c
> index 335fa91ca4ad..288eebc70a67 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_bo.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_bo.c
> @@ -922,6 +922,7 @@ static void nouveau_bo_move_ntfy(struct ttm_buffer_object *bo,
>   	struct nouveau_mem *mem = new_reg ? nouveau_mem(new_reg) : NULL;
>   	struct nouveau_bo *nvbo = nouveau_bo(bo);
>   	struct nouveau_vma *vma;
> +	long ret;
>   
>   	/* ttm can now (stupidly) pass the driver bos it didn't create... */
>   	if (bo->destroy != nouveau_bo_del_ttm)
> @@ -936,7 +937,10 @@ static void nouveau_bo_move_ntfy(struct ttm_buffer_object *bo,
>   		}
>   	} else {
>   		list_for_each_entry(vma, &nvbo->vma_list, head) {
> -			WARN_ON(ttm_bo_wait(bo, false, false));
> +			ret = dma_resv_wait_timeout(bo->base.resv,
> +						    DMA_RESV_USAGE_BOOKKEEP,
> +						    false, 15 * HZ);
> +			WARN_ON(ret <= 0);
>   			nouveau_vma_unmap(vma);
>   		}
>   	}
> diff --git a/drivers/gpu/drm/nouveau/nouveau_gem.c b/drivers/gpu/drm/nouveau/nouveau_gem.c
> index ac5793c96957..f77e44958037 100644
> --- a/drivers/gpu/drm/nouveau/nouveau_gem.c
> +++ b/drivers/gpu/drm/nouveau/nouveau_gem.c
> @@ -645,7 +645,7 @@ nouveau_gem_pushbuf_reloc_apply(struct nouveau_cli *cli,
>   				struct drm_nouveau_gem_pushbuf_reloc *reloc,
>   				struct drm_nouveau_gem_pushbuf_bo *bo)
>   {
> -	int ret = 0;
> +	long ret = 0;
>   	unsigned i;
>   
>   	for (i = 0; i < req->nr_relocs; i++) {
> @@ -703,9 +703,14 @@ nouveau_gem_pushbuf_reloc_apply(struct nouveau_cli *cli,
>   				data |= r->vor;
>   		}
>   
> -		ret = ttm_bo_wait(&nvbo->bo, false, false);
> +		ret = dma_resv_wait_timeout(nvbo->bo.base.resv,
> +					    DMA_RESV_USAGE_BOOKKEEP,
> +					    false, 15 * HZ);
> +		if (ret == 0)
> +			ret = -EBUSY;
>   		if (ret) {
> -			NV_PRINTK(err, cli, "reloc wait_idle failed: %d\n", ret);
> +			NV_PRINTK(err, cli, "reloc wait_idle failed: %ld\n",
> +				  ret);
>   			break;
>   		}
>   



More information about the Nouveau mailing list