Skip to content

Commit

Permalink
Revert "drm/amdkfd: Add CMA API"
Browse files Browse the repository at this point in the history
This reverts commit 9980ee2.

Signed-off-by: Leslie Shi <Yuliang.Shi@amd.com>
Reviewed-by: Asher Song  <asher.song@amd.com>
  • Loading branch information
Leslie Shi authored and Leslie Shi committed Aug 18, 2022
1 parent cdaecc3 commit eba10fa
Show file tree
Hide file tree
Showing 6 changed files with 5 additions and 1,003 deletions.
7 changes: 1 addition & 6 deletions drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd.h
Original file line number Diff line number Diff line change
Expand Up @@ -164,11 +164,6 @@ int amdgpu_amdkfd_flush_gpu_tlb_vmid(struct amdgpu_device *adev,
int amdgpu_amdkfd_flush_gpu_tlb_pasid(struct amdgpu_device *adev,
uint16_t pasid, enum TLB_FLUSH_TYPE flush_type);

int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem,
uint64_t src_offset, struct kgd_mem *dst_mem,
uint64_t dest_offset, uint64_t size, struct dma_fence **f,
uint64_t *actual_size);

bool amdgpu_amdkfd_is_kfd_vmid(struct amdgpu_device *adev, u32 vmid);

int amdgpu_amdkfd_pre_reset(struct amdgpu_device *adev);
Expand Down Expand Up @@ -292,7 +287,7 @@ uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *drm_priv);
size_t amdgpu_amdkfd_get_available_memory(struct amdgpu_device *adev);
int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
struct amdgpu_device *adev, uint64_t va, uint64_t size,
void *drm_priv, struct sg_table *sg, struct kgd_mem **mem,
void *drm_priv, struct kgd_mem **mem,
uint64_t *offset, uint32_t flags, bool criu_resume);
int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
struct amdgpu_device *adev, struct kgd_mem *mem, void *drm_priv,
Expand Down
86 changes: 2 additions & 84 deletions drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
Original file line number Diff line number Diff line change
Expand Up @@ -1668,11 +1668,12 @@ size_t amdgpu_amdkfd_get_available_memory(struct amdgpu_device *adev)

int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
struct amdgpu_device *adev, uint64_t va, uint64_t size,
void *drm_priv, struct sg_table *sg, struct kgd_mem **mem,
void *drm_priv, struct kgd_mem **mem,
uint64_t *offset, uint32_t flags, bool criu_resume)
{
struct amdgpu_vm *avm = drm_priv_to_vm(drm_priv);
enum ttm_bo_type bo_type = ttm_bo_type_device;
struct sg_table *sg = NULL;
uint64_t user_addr = 0;
struct amdgpu_bo *bo;
struct drm_gem_object *gobj = NULL;
Expand Down Expand Up @@ -1713,10 +1714,6 @@ int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
}
}

if (sg) {
alloc_domain = AMDGPU_GEM_DOMAIN_CPU;
bo_type = ttm_bo_type_sg;
}
*mem = kzalloc(sizeof(struct kgd_mem), GFP_KERNEL);
if (!*mem) {
ret = -ENOMEM;
Expand Down Expand Up @@ -3250,85 +3247,6 @@ int amdgpu_amdkfd_remove_gws_from_process(void *info, void *mem)
return 0;
}

int amdgpu_amdkfd_copy_mem_to_mem(struct kgd_dev *kgd, struct kgd_mem *src_mem,
uint64_t src_offset, struct kgd_mem *dst_mem,
uint64_t dst_offset, uint64_t size,
struct dma_fence **f, uint64_t *actual_size)
{
struct amdgpu_device *adev = NULL;
struct amdgpu_copy_mem src, dst;
struct ww_acquire_ctx ticket;
struct list_head list, duplicates;
struct ttm_validate_buffer resv_list[2];
struct dma_fence *fence = NULL;
int i, r;

if (!kgd || !src_mem || !dst_mem || !actual_size)
return -EINVAL;

*actual_size = 0;

adev = get_amdgpu_device(kgd);
INIT_LIST_HEAD(&list);
INIT_LIST_HEAD(&duplicates);

src.bo = &src_mem->bo->tbo;
dst.bo = &dst_mem->bo->tbo;
src.mem = &src.bo->mem;
dst.mem = &dst.bo->mem;
src.offset = src_offset;
dst.offset = dst_offset;

resv_list[0].bo = src.bo;
resv_list[1].bo = dst.bo;

for (i = 0; i < 2; i++) {
resv_list[i].num_shared = 1;
list_add_tail(&resv_list[i].head, &list);
}

r = ttm_eu_reserve_buffers(&ticket, &list, false, &duplicates);
if (r) {
pr_err("Copy buffer failed. Unable to reserve bo (%d)\n", r);
return r;
}

/* The process to which the Source and Dest BOs belong to could be
* evicted and the BOs invalidated. So validate BOs before use
*/
r = amdgpu_amdkfd_bo_validate(src_mem->bo, src_mem->domain, false);
if (r) {
pr_err("CMA fail: SRC BO validate failed %d\n", r);
goto validate_fail;
}


r = amdgpu_amdkfd_bo_validate(dst_mem->bo, dst_mem->domain, false);
if (r) {
pr_err("CMA fail: DST BO validate failed %d\n", r);
goto validate_fail;
}


r = amdgpu_ttm_copy_mem_to_mem(adev, &src, &dst, size, false, NULL,
&fence);
if (r)
pr_err("Copy buffer failed %d\n", r);
else
*actual_size = size;
if (fence) {
amdgpu_bo_fence(src_mem->bo, fence, true);
amdgpu_bo_fence(dst_mem->bo, fence, true);
}
if (f)
*f = dma_fence_get(fence);
dma_fence_put(fence);

validate_fail:
ttm_eu_backoff_reservation(&ticket, &list);
return r;
}

/* Returns GPU-specific tiling mode information */
int amdgpu_amdkfd_get_tile_config(struct amdgpu_device *adev,
struct tile_config *config)
Expand Down
Loading

0 comments on commit eba10fa

Please sign in to comment.