[PATCH] drm/amdgpu: Set TTM_PAGE_FLAG_SG earlier for userprt BOs

Christian König ckoenig.leichtzumerken at gmail.com
Wed Jun 16 08:45:29 UTC 2021


Am 16.06.21 um 10:36 schrieb xinhui pan:
> Because TTM do page counting on userptr BOs which is actually not
> needed. To avoid that, lets set TTM_PAGE_FLAG_SG after tt_create and
> before tt_populate.
>
> Signed-off-by: xinhui pan <xinhui.pan at amd.com>

Reviewed-by: Christian König <christian.koenig at amd.com>

> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> index 0887942b4622..97c83164ce38 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c
> @@ -1147,8 +1147,6 @@ static int amdgpu_ttm_tt_populate(struct ttm_device *bdev,
>   		ttm->sg = kzalloc(sizeof(struct sg_table), GFP_KERNEL);
>   		if (!ttm->sg)
>   			return -ENOMEM;
> -
> -		ttm->page_flags |= TTM_PAGE_FLAG_SG;
>   		return 0;
>   	}
>   
> @@ -1174,7 +1172,6 @@ static void amdgpu_ttm_tt_unpopulate(struct ttm_device *bdev,
>   		amdgpu_ttm_tt_set_user_pages(ttm, NULL);
>   		kfree(ttm->sg);
>   		ttm->sg = NULL;
> -		ttm->page_flags &= ~TTM_PAGE_FLAG_SG;
>   		return;
>   	}
>   
> @@ -1208,6 +1205,9 @@ int amdgpu_ttm_tt_set_userptr(struct ttm_buffer_object *bo,
>   			return -ENOMEM;
>   	}
>   
> +	/* Set TTM_PAGE_FLAG_SG before populate but after create. */
> +	bo->ttm->page_flags |= TTM_PAGE_FLAG_SG;
> +
>   	gtt = (void *)bo->ttm;
>   	gtt->userptr = addr;
>   	gtt->userflags = flags;



More information about the amd-gfx mailing list