})
 
 /* GPUVM API */
-int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, u32 pasid,
-                                       void **vm, void **process_info,
-                                       struct dma_fence **ef);
 int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
                                        struct file *filp, u32 pasid,
                                        void **vm, void **process_info,
                                        struct dma_fence **ef);
-void amdgpu_amdkfd_gpuvm_destroy_process_vm(struct kgd_dev *kgd, void *vm);
 void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *vm);
 uint64_t amdgpu_amdkfd_gpuvm_get_process_page_dir(void *vm);
 int amdgpu_amdkfd_gpuvm_alloc_memory_of_gpu(
 
        return ret;
 }
 
-int amdgpu_amdkfd_gpuvm_create_process_vm(struct kgd_dev *kgd, u32 pasid,
-                                         void **vm, void **process_info,
-                                         struct dma_fence **ef)
-{
-       struct amdgpu_device *adev = get_amdgpu_device(kgd);
-       struct amdgpu_vm *new_vm;
-       int ret;
-
-       new_vm = kzalloc(sizeof(*new_vm), GFP_KERNEL);
-       if (!new_vm)
-               return -ENOMEM;
-
-       /* Initialize AMDGPU part of the VM */
-       ret = amdgpu_vm_init(adev, new_vm, AMDGPU_VM_CONTEXT_COMPUTE, pasid);
-       if (ret) {
-               pr_err("Failed init vm ret %d\n", ret);
-               goto amdgpu_vm_init_fail;
-       }
-
-       /* Initialize KFD part of the VM and process info */
-       ret = init_kfd_vm(new_vm, process_info, ef);
-       if (ret)
-               goto init_kfd_vm_fail;
-
-       *vm = (void *) new_vm;
-
-       return 0;
-
-init_kfd_vm_fail:
-       amdgpu_vm_fini(adev, new_vm);
-amdgpu_vm_init_fail:
-       kfree(new_vm);
-       return ret;
-}
-
 int amdgpu_amdkfd_gpuvm_acquire_process_vm(struct kgd_dev *kgd,
                                           struct file *filp, u32 pasid,
                                           void **vm, void **process_info,
        }
 }
 
-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;
-
-       if (WARN_ON(!kgd || !vm))
-               return;
-
-       pr_debug("Destroying process vm %p\n", vm);
-
-       /* Release the VM context */
-       amdgpu_vm_fini(adev, avm);
-       kfree(vm);
-}
-
 void amdgpu_amdkfd_gpuvm_release_process_vm(struct kgd_dev *kgd, void *vm)
 {
        struct amdgpu_device *adev = get_amdgpu_device(kgd);
 
                                        pdd->dev->kgd, pdd->vm);
                        fput(pdd->drm_file);
                }
-               else if (pdd->vm)
-                       amdgpu_amdkfd_gpuvm_destroy_process_vm(
-                               pdd->dev->kgd, pdd->vm);
 
                if (pdd->qpd.cwsr_kaddr && !pdd->qpd.cwsr_base)
                        free_pages((unsigned long)pdd->qpd.cwsr_kaddr,
        struct kfd_dev *dev;
        int ret;
 
+       if (!drm_file)
+               return -EINVAL;
+
        if (pdd->vm)
-               return drm_file ? -EBUSY : 0;
+               return -EBUSY;
 
        p = pdd->process;
        dev = pdd->dev;
 
-       if (drm_file)
-               ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(
-                       dev->kgd, drm_file, p->pasid,
-                       &pdd->vm, &p->kgd_process_info, &p->ef);
-       else
-               ret = amdgpu_amdkfd_gpuvm_create_process_vm(dev->kgd, p->pasid,
-                       &pdd->vm, &p->kgd_process_info, &p->ef);
+       ret = amdgpu_amdkfd_gpuvm_acquire_process_vm(
+               dev->kgd, drm_file, p->pasid,
+               &pdd->vm, &p->kgd_process_info, &p->ef);
        if (ret) {
                pr_err("Failed to create process VM object\n");
                return ret;
 err_init_cwsr:
 err_reserve_ib_mem:
        kfd_process_device_free_bos(pdd);
-       if (!drm_file)
-               amdgpu_amdkfd_gpuvm_destroy_process_vm(dev->kgd, pdd->vm);
        pdd->vm = NULL;
 
        return ret;
                return ERR_PTR(-ENOMEM);
        }
 
+       if (!pdd->vm)
+               return ERR_PTR(-ENODEV);
+
        /*
         * signal runtime-pm system to auto resume and prevent
         * further runtime suspend once device pdd is created until
        if (err)
                goto out;
 
-       err = kfd_process_device_init_vm(pdd, NULL);
-       if (err)
-               goto out;
-
        /*
         * make sure that runtime_usage counter is incremented just once
         * per pdd