[PATCH] drm/amdkfd: don't add DOORBELL and MMIO BOs to validate list

Christian König ckoenig.leichtzumerken at gmail.com
Wed May 25 08:45:38 UTC 2022


Am 25.05.22 um 10:43 schrieb Lang Yu:
> DOORBELL and MMIO BOs never move once created.
> No need to validate them after that.

Yeah, but you still need to make sure their page tables are up to date.

So this here might break horrible.

Christian.

>
> Signed-off-by: Lang Yu <Lang.Yu at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 14 +++++++++-----
>   1 file changed, 9 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 34ba9e776521..45de9cadd771 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -808,6 +808,10 @@ static void add_kgd_mem_to_kfd_bo_list(struct kgd_mem *mem,
>   	struct ttm_validate_buffer *entry = &mem->validate_list;
>   	struct amdgpu_bo *bo = mem->bo;
>   
> +	if (mem->alloc_flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
> +				KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP))
> +		return;
> +
>   	INIT_LIST_HEAD(&entry->head);
>   	entry->num_shared = 1;
>   	entry->bo = &bo->tbo;
> @@ -824,6 +828,10 @@ static void remove_kgd_mem_from_kfd_bo_list(struct kgd_mem *mem,
>   {
>   	struct ttm_validate_buffer *bo_list_entry;
>   
> +	if (mem->alloc_flags & (KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL |
> +				KFD_IOC_ALLOC_MEM_FLAGS_MMIO_REMAP))
> +		return;
> +
>   	bo_list_entry = &mem->validate_list;
>   	mutex_lock(&process_info->lock);
>   	list_del(&bo_list_entry->head);
> @@ -1649,7 +1657,6 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
>   	unsigned long bo_size = mem->bo->tbo.base.size;
>   	struct kfd_mem_attachment *entry, *tmp;
>   	struct bo_vm_reservation_context ctx;
> -	struct ttm_validate_buffer *bo_list_entry;
>   	unsigned int mapped_to_gpu_memory;
>   	int ret;
>   	bool is_imported = false;
> @@ -1677,10 +1684,7 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
>   	}
>   
>   	/* Make sure restore workers don't access the BO any more */
> -	bo_list_entry = &mem->validate_list;
> -	mutex_lock(&process_info->lock);
> -	list_del(&bo_list_entry->head);
> -	mutex_unlock(&process_info->lock);
> +	remove_kgd_mem_from_kfd_bo_list(mem, process_info);
>   
>   	/* No more MMU notifiers */
>   	amdgpu_mn_unregister(mem->bo);



More information about the amd-gfx mailing list