aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
index 61d94c745672..49f93ee019e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_kms.c
@@ -655,6 +655,14 @@ int amdgpu_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
655 goto out_suspend; 655 goto out_suspend;
656 } 656 }
657 657
658 fpriv->prt_va = amdgpu_vm_bo_add(adev, &fpriv->vm, NULL);
659 if (!fpriv->prt_va) {
660 r = -ENOMEM;
661 amdgpu_vm_fini(adev, &fpriv->vm);
662 kfree(fpriv);
663 goto out_suspend;
664 }
665
658 if (amdgpu_sriov_vf(adev)) { 666 if (amdgpu_sriov_vf(adev)) {
659 r = amdgpu_map_static_csa(adev, &fpriv->vm); 667 r = amdgpu_map_static_csa(adev, &fpriv->vm);
660 if (r) 668 if (r)
@@ -699,6 +707,8 @@ void amdgpu_driver_postclose_kms(struct drm_device *dev,
699 amdgpu_uvd_free_handles(adev, file_priv); 707 amdgpu_uvd_free_handles(adev, file_priv);
700 amdgpu_vce_free_handles(adev, file_priv); 708 amdgpu_vce_free_handles(adev, file_priv);
701 709
710 amdgpu_vm_bo_rmv(adev, fpriv->prt_va);
711
702 if (amdgpu_sriov_vf(adev)) { 712 if (amdgpu_sriov_vf(adev)) {
703 /* TODO: how to handle reserve failure */ 713 /* TODO: how to handle reserve failure */
704 BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, false)); 714 BUG_ON(amdgpu_bo_reserve(adev->virt.csa_obj, false));