Re: [PATCH] drm/ttm: fix pipelined gutting for evictions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am 2020-07-23 um 5:00 a.m. schrieb Christian König:
> We can't pipeline that during eviction because the memory needs
> to be available immediately.
>
> Signed-off-by: Christian König <christian.koenig@xxxxxxx>

Looks good to me.

Reviewed-by: Felix Kuehling <Felix.Kuehling@xxxxxxx>


Alex, in this case the synchronous ttm_bo_wait would be triggering the
eviction fence rather than a delayed delete.

Scheduling an eviction worker, like we currently do, would only add
unnecessary latency here. The best place to do the HMM migration to
system memory synchronously and minimize the wait time here may be in
amdgpu_eviction_flags. That way all the SDMA copies to system memory
pages would already be in the pipe by the time we get to the ttm_bo_wait.

Regards,
  Felix


> ---
>  drivers/gpu/drm/ttm/ttm_bo.c | 12 ++++++++++--
>  1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index bc2230ecb7e3..122040056a07 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -651,8 +651,16 @@ static int ttm_bo_evict(struct ttm_buffer_object *bo,
>  	placement.num_busy_placement = 0;
>  	bdev->driver->evict_flags(bo, &placement);
>  
> -	if (!placement.num_placement && !placement.num_busy_placement)
> -		return ttm_bo_pipeline_gutting(bo);
> +	if (!placement.num_placement && !placement.num_busy_placement) {
> +		ttm_bo_wait(bo, false, false);
> +
> +		ttm_tt_destroy(bo->ttm);
> +
> +		memset(&bo->mem, 0, sizeof(bo->mem));
> +		bo->mem.mem_type = TTM_PL_SYSTEM;
> +		bo->ttm = NULL;
> +		return 0;
> +	}
>  
>  	evict_mem = bo->mem;
>  	evict_mem.mm_node = NULL;
_______________________________________________
dri-devel mailing list
dri-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/dri-devel




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux