diff options
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c')
| -rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 15 | 
1 files changed, 11 insertions, 4 deletions
| diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index 5cacf5717016..0b87798daebd 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c @@ -654,11 +654,10 @@ int amdgpu_vm_validate(struct amdgpu_device *adev, struct amdgpu_vm *vm,   * Check if all VM PDs/PTs are ready for updates   *   * Returns: - * True if VM is not evicting. + * True if VM is not evicting and all VM entities are not stopped   */  bool amdgpu_vm_ready(struct amdgpu_vm *vm)  { -	bool empty;  	bool ret;  	amdgpu_vm_eviction_lock(vm); @@ -666,10 +665,18 @@ bool amdgpu_vm_ready(struct amdgpu_vm *vm)  	amdgpu_vm_eviction_unlock(vm);  	spin_lock(&vm->status_lock); -	empty = list_empty(&vm->evicted); +	ret &= list_empty(&vm->evicted);  	spin_unlock(&vm->status_lock); -	return ret && empty; +	spin_lock(&vm->immediate.lock); +	ret &= !vm->immediate.stopped; +	spin_unlock(&vm->immediate.lock); + +	spin_lock(&vm->delayed.lock); +	ret &= !vm->delayed.stopped; +	spin_unlock(&vm->delayed.lock); + +	return ret;  }  /** | 
