diff options
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3180-Revert-drm-amdgpu-always-allocate-a-PASIDs-for-each-.patch')
-rw-r--r-- | meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3180-Revert-drm-amdgpu-always-allocate-a-PASIDs-for-each-.patch | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3180-Revert-drm-amdgpu-always-allocate-a-PASIDs-for-each-.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3180-Revert-drm-amdgpu-always-allocate-a-PASIDs-for-each-.patch new file mode 100644 index 00000000..dc17b02c --- /dev/null +++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.14.71/3180-Revert-drm-amdgpu-always-allocate-a-PASIDs-for-each-.patch @@ -0,0 +1,112 @@ +From 3b3291708b284b3d78f8a7b7a47f98125f3273dd Mon Sep 17 00:00:00 2001 +From: Jim Qu <Jim.Qu@amd.com> +Date: Mon, 22 Jan 2018 16:01:18 +0800 +Subject: [PATCH 3180/4131] Revert "drm/amdgpu: always allocate a PASIDs for + each VM v2" + +This reverts commit c5867fb4c587e9469aca28265ecd2ba6a74d8269. + +The original patch depend on dma-buf: make returning the +exclusive fence optional in core kernel. now revert the patch +until dma-buf patch is ready in kernel distro. + +Signed-off-by: Jim Qu <Jim.Qu@amd.com> +--- + drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c | 43 +++++++++++---------------------- + 1 file changed, 14 insertions(+), 29 deletions(-) + +diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +index 65d69a9..efa2b48 100644 +--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c ++++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c +@@ -862,7 +862,7 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) + { + struct amdgpu_device *adev = dev->dev_private; + struct amdgpu_fpriv *fpriv; +- int r, pasid; ++ int r; + + file_priv->driver_priv = NULL; + +@@ -876,25 +876,28 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) + goto out_suspend; + } + +- pasid = amdgpu_pasid_alloc(16); +- if (pasid < 0) { +- dev_warn(adev->dev, "No more PASIDs available!"); +- pasid = 0; ++ r = amdgpu_vm_init(adev, &fpriv->vm, ++ AMDGPU_VM_CONTEXT_GFX, 0); ++ if (r) { ++ kfree(fpriv); ++ goto out_suspend; + } +- r = amdgpu_vm_init(adev, &fpriv->vm, AMDGPU_VM_CONTEXT_GFX, pasid); +- if (r) +- goto error_pasid; + + fpriv->prt_va = amdgpu_vm_bo_add(adev, &fpriv->vm, NULL); + if (!fpriv->prt_va) { + r = -ENOMEM; +- goto error_vm; ++ amdgpu_vm_fini(adev, &fpriv->vm); ++ kfree(fpriv); ++ goto out_suspend; + } + + if (amdgpu_sriov_vf(adev)) { + r = amdgpu_map_static_csa(adev, &fpriv->vm, &fpriv->csa_va); +- if (r) +- goto error_vm; ++ if (r) { ++ amdgpu_vm_fini(adev, &fpriv->vm); ++ kfree(fpriv); ++ goto out_suspend; ++ } + } + + mutex_init(&fpriv->bo_list_lock); +@@ -905,16 +908,6 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv) + amdgpu_ctx_mgr_init(&fpriv->ctx_mgr); + + file_priv->driver_priv = fpriv; +- goto out_suspend; +- +-error_vm: +- amdgpu_vm_fini(adev, &fpriv->vm); +- +-error_pasid: +- if (pasid) +- amdgpu_pasid_free(pasid); +- +- kfree(fpriv); + + out_suspend: + pm_runtime_mark_last_busy(dev->dev); +@@ -938,8 +931,6 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev, + struct amdgpu_fpriv *fpriv = file_priv->driver_priv; + struct amdgpu_bo_list *list; + struct amdgpu_sem *sem; +- struct amdgpu_bo *pd; +- unsigned int pasid; + int handle; + + if (!fpriv) +@@ -964,13 +955,7 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev, + amdgpu_bo_unreserve(adev->virt.csa_obj); + } + +- pasid = fpriv->vm.pasid; +- pd = amdgpu_bo_ref(fpriv->vm.root.base.bo); +- + amdgpu_vm_fini(adev, &fpriv->vm); +- if (pasid) +- amdgpu_pasid_free_delayed(pd->tbo.resv, pasid); +- amdgpu_bo_unref(&pd); + + idr_for_each_entry(&fpriv->bo_list_handles, list, handle) + amdgpu_bo_list_free(list); +-- +2.7.4 + |