From: Dave Airlie Date: Thu, 24 Sep 2020 05:18:02 +0000 (+1000) Subject: drm/ttm: handle the SYSTEM->TT path in same place as others. X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=6236d953f7aca13403a1fada9d1dd12978cf93e8;p=linux.git drm/ttm: handle the SYSTEM->TT path in same place as others. This just consolidates the code making the flow easier to understand and also helps when moving move to the driver side. Reviewed-by: Christian König . Signed-off-by: Dave Airlie Link: https://patchwork.freedesktop.org/patch/msgid/20200924051845.397177-3-airlied@gmail.com --- diff --git a/drivers/gpu/drm/ttm/ttm_bo.c b/drivers/gpu/drm/ttm/ttm_bo.c index 77a998b818433..e11e8eaa6602c 100644 --- a/drivers/gpu/drm/ttm/ttm_bo.c +++ b/drivers/gpu/drm/ttm/ttm_bo.c @@ -265,24 +265,22 @@ 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) bdev->driver->move_notify(bo, evict, mem); - if (old_man->use_tt && new_man->use_tt) - ret = ttm_bo_move_ttm(bo, ctx, mem); - else if (bdev->driver->move) + if (old_man->use_tt && new_man->use_tt) { + if (bo->mem.mem_type == TTM_PL_SYSTEM) { + ttm_bo_assign_mem(bo, mem); + ret = 0; + } else + ret = ttm_bo_move_ttm(bo, ctx, mem); + } else if (bdev->driver->move) { ret = bdev->driver->move(bo, evict, ctx, mem); - else + } else { ret = ttm_bo_move_memcpy(bo, ctx, mem); + } if (ret) { if (bdev->driver->move_notify) { @@ -294,7 +292,6 @@ static int ttm_bo_handle_move_mem(struct ttm_buffer_object *bo, goto out_err; } -moved: ctx->bytes_moved += bo->num_pages << PAGE_SHIFT; return 0;