diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 4 | 
1 files changed, 4 insertions, 0 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index b2e96682b9bb..83b0c5d86e48 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -2055,6 +2055,8 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm)  	spin_lock_init(&vm->status_lock);  	INIT_LIST_HEAD(&vm->freed);  	INIT_LIST_HEAD(&vm->done); +	INIT_LIST_HEAD(&vm->pt_freed); +	INIT_WORK(&vm->pt_free_work, amdgpu_vm_pt_free_work);  	/* create scheduler entities for page table updates */  	r = drm_sched_entity_init(&vm->immediate, DRM_SCHED_PRIORITY_NORMAL, @@ -2256,6 +2258,8 @@ void amdgpu_vm_fini(struct amdgpu_device *adev, struct amdgpu_vm *vm)  	amdgpu_amdkfd_gpuvm_destroy_cb(adev, vm); +	flush_work(&vm->pt_free_work); +  	root = amdgpu_bo_ref(vm->root.bo);  	amdgpu_bo_reserve(root, true);  	amdgpu_vm_set_pasid(adev, vm, 0); | 
