All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] drm/amdgpu:  Unmap CSA under SR-IOV in KFD path
@ 2019-04-28 10:25 Trigger Huang
       [not found] ` <1556447115-1689-1-git-send-email-Trigger.Huang-5C7GfCeVMHo@public.gmane.org>
  0 siblings, 1 reply; 9+ messages in thread
From: Trigger Huang @ 2019-04-28 10:25 UTC (permalink / raw)
  To: amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW; +Cc: Trigger.Huang-5C7GfCeVMHo

In amdgpu open path, CSA will be mappened in VM, so when opening
KFD, calling mdgpu_vm_make_compute  will fail because it found this
VM is not a clean VM with some mappings, as a result, it will lead
to failed to create process VM object

The fix is try to unmap CSA, and actually CSA is not needed in
compute VF world switch

Signed-off-by: Trigger Huang <Trigger.Huang@amd.com>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c | 10 ++++++++++
 drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c          |  2 +-
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
index 697b8ef..e0bc457 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_amdkfd_gpuvm.c
@@ -956,6 +956,16 @@ int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
 	if (avm->process_info)
 		return -EINVAL;
 
+	/* Delete CSA mapping to make sure this VM is a clean VM  before
+	 *  converting VM
+	 */
+	if (amdgpu_sriov_vf(adev) && drv_priv->csa_va) {
+		amdgpu_bo_reserve(adev->virt.csa_obj, true);
+		amdgpu_vm_bo_rmv(adev, drv_priv->csa_va);
+		drv_priv->csa_va = NULL;
+		amdgpu_bo_unreserve(adev->virt.csa_obj);
+	}
+
 	/* Convert VM into a compute VM */
 	ret = amdgpu_vm_make_compute(adev, avm, pasid);
 	if (ret)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index da7b4fe..361c2e5 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -1069,7 +1069,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
 
 	amdgpu_vm_bo_rmv(adev, fpriv->prt_va);
 
-	if (amdgpu_sriov_vf(adev)) {
+	if (amdgpu_sriov_vf(adev) && fpriv->csa_va) {
 		/* TODO: how to handle reserve failure */
 		BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, true));
 		amdgpu_vm_bo_rmv(adev, fpriv->csa_va);
-- 
2.7.4

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/amd-gfx

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2019-04-30 10:34 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-28 10:25 [PATCH] drm/amdgpu: Unmap CSA under SR-IOV in KFD path Trigger Huang
     [not found] ` <1556447115-1689-1-git-send-email-Trigger.Huang-5C7GfCeVMHo@public.gmane.org>
2019-04-29 12:43   ` Christian König
2019-04-29 23:34   ` Kuehling, Felix
     [not found]     ` <be96ca90-23c2-e442-42d0-7889436b0393-5C7GfCeVMHo@public.gmane.org>
2019-04-30  9:22       ` Christian König
     [not found]         ` <749d808b-5afc-488e-6d31-fae5e8dac208-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-04-30  9:53           ` Huang, Trigger
     [not found]             ` <MN2PR12MB3408BADD8375F5B6D6090244FE3A0-rweVpJHSKTo4ZTiO+qW6TgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-04-30  9:58               ` Koenig, Christian
     [not found]                 ` <0df2a92e-c021-66f7-f6ba-4984e24d5d6c-5C7GfCeVMHo@public.gmane.org>
2019-04-30 10:28                   ` Huang, Trigger
     [not found]                     ` <MN2PR12MB3408B8667025191A35674764FE3A0-rweVpJHSKTo4ZTiO+qW6TgdYzm3356FpvxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2019-04-30 10:31                       ` Christian König
     [not found]                         ` <f3ed2a39-920a-9f32-9f92-342fec294c77-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2019-04-30 10:34                           ` Huang, Trigger

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.