[PATCH 6/7] SWDEV-275015 - drm/amdkfd: Add fence tracking
Roy Sun
Roy.Sun at amd.com
Mon Mar 22 02:54:10 UTC 2021
From: David M Nieto <david.nieto at amd.com>
Add fence tracking for amdgpu resources on gpuvm creation
Signed-off-by: David M Nieto <david.nieto at amd.com>
---
.../gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 17 +++++++++++++----
1 file changed, 13 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 e93850f2f3b1..26e84c2d6316 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -1042,13 +1042,16 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, u32 pasid,
struct dma_fence **ef)
{
struct amdgpu_device *adev = get_amdgpu_device(kgd);
+ struct amdgpu_fpriv *fpriv;
struct amdgpu_vm *new_vm;
int ret;
- new_vm = kzalloc(sizeof(*new_vm), GFP_KERNEL);
- if (!new_vm)
+ fpriv = kzalloc(sizeof(*fpriv), GFP_KERNEL);
+ if (!fpriv)
return -ENOMEM;
+ new_vm = &fpriv->vm;
+
/* Initialize AMDGPU part of the VM */
ret = amdgpu_vm_init(adev, new_vm, AMDGPU_VM_CONTEXT_COMPUTE, pasid);
if (ret) {
@@ -1063,12 +1066,14 @@ int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, u32 pasid,
*vm = (void *) new_vm;
+ amdgpu_smi_create_proc_node(adev, fpriv, pasid);
+
return 0;
init_kfd_vm_fail:
amdgpu_vm_fini(adev, new_vm);
amdgpu_vm_init_fail:
- kfree(new_vm);
+ kfree(fpriv);
return ret;
}
@@ -1142,6 +1147,8 @@ void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm)
{
struct amdgpu_device *adev = get_amdgpu_device(kgd);
struct amdgpu_vm *avm = (struct amdgpu_vm *)vm;
+ struct amdgpu_fpriv *fpriv =
+ container_of(avm, struct amdgpu_fpriv, vm);
if (WARN_ON(!kgd || !vm))
return;
@@ -1149,8 +1156,10 @@ void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm)
pr_debug("Destroying process vm %p\n", vm);
/* Release the VM context */
+ amdgpu_smi_remove_proc_node(adev, fpriv);
+
amdgpu_vm_fini(adev, avm);
- kfree(vm);
+ kfree(fpriv);
}
void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *vm)
--
2.29.0
More information about the amd-gfx
mailing list