[PATCH v2 2/3] drm/amdgpu: Use preemptible placement for KFD
Christian König
ckoenig.leichtzumerken at gmail.com
Fri May 21 08:40:34 UTC 2021
Am 21.05.21 um 04:22 schrieb Felix Kuehling:
> KFD userptr BOs and SG BOs used for DMA mappings can be preempted with
> CWSR. Therefore we can use preemptible placement and avoid unwanted
> evictions due to GTT accounting.
>
> Signed-off-by: Felix Kuehling <Felix.Kuehling at amd.com>
Acked-by: Christian König <christian.koenig at amd.com>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 7 ++++---
> 1 file changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> index 928e8d57cd08..2b8b89535198 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
> @@ -621,8 +621,8 @@ kfd_mem_attach_userptr(struct amdgpu_device *adev, struct kgd_mem *mem,
>
> ret = amdgpu_gem_object_create(adev, bo_size, 1,
> AMDGPU_GEM_DOMAIN_CPU,
> - 0, ttm_bo_type_sg,
> - mem->bo->tbo.base.resv,
> + AMDGPU_GEM_CREATE_PREEMPTIBLE,
> + ttm_bo_type_sg, mem->bo->tbo.base.resv,
> &gobj);
> if (ret)
> return ret;
> @@ -662,6 +662,7 @@ kfd_mem_attach_dmabuf(struct amdgpu_device *adev, struct kgd_mem *mem,
> dma_buf_put(mem->dmabuf);
>
> *bo = gem_to_amdgpu_bo(gobj);
> + (*bo)->flags |= AMDGPU_GEM_CREATE_PREEMPTIBLE;
> (*bo)->parent = amdgpu_bo_ref(mem->bo);
>
> return 0;
> @@ -1410,7 +1411,7 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
> } else if (flags & KFD_IOC_ALLOC_MEM_FLAGS_USERPTR) {
> domain = AMDGPU_GEM_DOMAIN_GTT;
> alloc_domain = AMDGPU_GEM_DOMAIN_CPU;
> - alloc_flags = 0;
> + alloc_flags = AMDGPU_GEM_CREATE_PREEMPTIBLE;
> if (!offset || !*offset)
> return -EINVAL;
> user_addr = untagged_addr(*offset);
More information about the amd-gfx
mailing list