[PATCH] drm/kfd: Correct pined buffer handling at kfd restore and validate process

Felix Kuehling felix.kuehling at amd.com
Mon May 13 23:17:39 UTC 2024



On 2024-05-13 11:18, Xiaogang.Chen wrote:
> From: Xiaogang Chen <xiaogang.chen at amd.com>
> 
> This reverts 8a774fe912ff09e39c2d3a3589c729330113f388 "drm/amdgpu: avoid restore
> process run into dead loop" since buffer got pined is not related whether it

Spelling: pined -> pinned

Same in the commit headline.


> needs mapping. And skip buffer validation at kfd driver if the buffer has been
> pinned.
> 
> Signed-off-by: Xiaogang Chen <Xiaogang.Chen at amd.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 3314821e4cf3..80018738bd1c 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -415,6 +415,10 @@ static int amdgpu_amdkfd_bo_validate(struct amdgpu_bo *bo, uint32_t domain,
>  		 "Called with userptr BO"))
>  		return -EINVAL;
>  
> +	/* bo has been pined, not need validate it */

pined -> pinned

With those typos fixed, the patch is

Reviewed-by: Felix Kuehling <felix.kuehling at amd.com>


> +	if (bo->tbo.pin_count)
> +		return 0;
> +
>  	amdgpu_bo_placement_from_domain(bo, domain);
>  
>  	ret = ttm_bo_validate(&bo->tbo, &bo->placement, &ctx);
> @@ -2736,7 +2740,7 @@ static int confirm_valid_user_pages_locked(struct amdkfd_process_info *process_i
>  
>  		/* keep mem without hmm range at userptr_inval_list */
>  		if (!mem->range)
> -			 continue;
> +			continue;
>  
>  		/* Only check mem with hmm range associated */
>  		valid = amdgpu_ttm_tt_get_user_pages_done(
> @@ -2981,9 +2985,6 @@ int amdgpu_amdkfd_gpuvm_restore_process_bos(void *info, struct dma_fence __rcu *
>  			if (!attachment->is_mapped)
>  				continue;
>  
> -			if (attachment->bo_va->base.bo->tbo.pin_count)
> -				continue;
> -
>  			kfd_mem_dmaunmap_attachment(mem, attachment);
>  			ret = update_gpuvm_pte(mem, attachment, &sync_obj);
>  			if (ret) {


More information about the amd-gfx mailing list