[PATCH] drm/ttm: fix incorrect TT->SYSTEM move handling
Dave Airlie
airlied at gmail.com
Wed Sep 16 19:27:33 UTC 2020
On Thu, 17 Sep 2020 at 00:24, Christian König
<ckoenig.leichtzumerken at gmail.com> wrote:
>
> When we move from the SYSTEM domain to the TT domain
> we still need to potentially change the caching state.
>
> This is most likely the source of a bunch of problems with
> AGP and USWC together with hibernation and swap.
I'm going to need more commentary, because I've been staring at this
code a lot in the past few days and I'm although I dislike this path,
I'm not sure what this brings.
The current code flow to me is for SYSTEM->TT domain
ttm_tt_create
ttm_tt_set_placement_caching (new placement)
ttm_tt_bind (can cause populate)
move_notify
replace pointers
evicted = false
return
The new flow looks like
ttm_tt_create
ttm_tt_set_placement_caching (new placement)
ttm_tt_bind (can cause populate)
move_notify
(via ttm_bo_move_ttm)
ttm_tt_set_placement_caching (new placement)
ttm_tt_bind
replace pointers
(back to main code)
evicted = false
return
Is the second set placement caching doing something different here? or
is there something that happens in move notify that we need to set
things afterwards?
Dave.
>
> Signed-off-by: Christian König <christian.koenig at amd.com>
> CC: stable at vger.kernel.org
> ---
> drivers/gpu/drm/ttm/ttm_bo.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c
> index ffbdc20d8e8d..5f7efc90970e 100644
> --- a/drivers/gpu/drm/ttm/ttm_bo.c
> +++ b/drivers/gpu/drm/ttm/ttm_bo.c
> @@ -264,13 +264,6 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
> if (ret)
> goto out_err;
> }
> -
> - if (bo->mem.mem_type == TTM_PL_SYSTEM) {
> - if (bdev->driver->move_notify)
> - bdev->driver->move_notify(bo, evict, mem);
> - bo->mem = *mem;
> - goto moved;
> - }
> }
>
> if (bdev->driver->move_notify)
> @@ -293,7 +286,6 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo,
> goto out_err;
> }
>
> -moved:
> bo->evicted = false;
>
> ctx->bytes_moved += bo->num_pages << PAGE_SHIFT;
> --
> 2.17.1
>
More information about the dri-devel
mailing list