drm/amdgpu: Make sure to reserve BOs before adding or removing
BOs need to be reserved before they are added or removed, so ensure that they are reserved during kfd_mem_attach and kfd_mem_detach Signed-off-by: Kent Russell <kent.russell@amd.com> Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
a6283010e2
commit
7ef6b7f844
@ -734,14 +734,19 @@ static int kfd_mem_attach(struct amdgpu_device *adev, struct kgd_mem *mem,
|
||||
}
|
||||
|
||||
/* Add BO to VM internal data structures */
|
||||
ret = amdgpu_bo_reserve(bo[i], false);
|
||||
if (ret) {
|
||||
pr_debug("Unable to reserve BO during memory attach");
|
||||
goto unwind;
|
||||
}
|
||||
attachment[i]->bo_va = amdgpu_vm_bo_add(adev, vm, bo[i]);
|
||||
amdgpu_bo_unreserve(bo[i]);
|
||||
if (unlikely(!attachment[i]->bo_va)) {
|
||||
ret = -ENOMEM;
|
||||
pr_err("Failed to add BO object to VM. ret == %d\n",
|
||||
ret);
|
||||
goto unwind;
|
||||
}
|
||||
|
||||
attachment[i]->va = va;
|
||||
attachment[i]->pte_flags = get_pte_flags(adev, mem);
|
||||
attachment[i]->adev = adev;
|
||||
@ -757,7 +762,9 @@ unwind:
|
||||
if (!attachment[i])
|
||||
continue;
|
||||
if (attachment[i]->bo_va) {
|
||||
amdgpu_bo_reserve(bo[i], true);
|
||||
amdgpu_vm_bo_rmv(adev, attachment[i]->bo_va);
|
||||
amdgpu_bo_unreserve(bo[i]);
|
||||
list_del(&attachment[i]->list);
|
||||
}
|
||||
if (bo[i])
|
||||
@ -1568,12 +1575,12 @@ int amdgpu_amdkfd_gpuvm_free_memory_of_gpu(
|
||||
pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va,
|
||||
mem->va + bo_size * (1 + mem->aql_queue));
|
||||
|
||||
ret = unreserve_bo_and_vms(&ctx, false, false);
|
||||
|
||||
/* Remove from VM internal data structures */
|
||||
list_for_each_entry_safe(entry, tmp, &mem->attachments, list)
|
||||
kfd_mem_detach(entry);
|
||||
|
||||
ret = unreserve_bo_and_vms(&ctx, false, false);
|
||||
|
||||
/* Free the sync object */
|
||||
amdgpu_sync_free(&mem->sync);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user