/* Make sure restore workers don't access the BO any more */
mutex_lock(&process_info->lock);
- list_del(&mem->validate_list);
+ if (!list_empty(&mem->validate_list))
+ list_del_init(&mem->validate_list);
mutex_unlock(&process_info->lock);
+ ret = reserve_bo_and_cond_vms(mem, NULL, BO_VM_ALL, &ctx);
+ if (unlikely(ret))
+ return ret;
+
/* Cleanup user pages and MMU notifiers */
if (amdgpu_ttm_tt_get_usermm(mem->bo->tbo.ttm)) {
amdgpu_hmm_unregister(mem->bo);
- mutex_lock(&process_info->notifier_lock);
amdgpu_hmm_range_free(mem->range);
- mutex_unlock(&process_info->notifier_lock);
+ mem->range = NULL;
}
- ret = reserve_bo_and_cond_vms(mem, NULL, BO_VM_ALL, &ctx);
- if (unlikely(ret))
- return ret;
-
amdgpu_amdkfd_remove_eviction_fence(mem->bo,
process_info->eviction_fence);
pr_debug("Release VA 0x%llx - 0x%llx\n", mem->va,