|
@@ -3307,6 +3307,9 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
|
|
atomic_inc(&adev->gpu_reset_counter);
|
|
atomic_inc(&adev->gpu_reset_counter);
|
|
adev->in_gpu_reset = 1;
|
|
adev->in_gpu_reset = 1;
|
|
|
|
|
|
|
|
+ /* Block kfd */
|
|
|
|
+ amdgpu_amdkfd_pre_reset(adev);
|
|
|
|
+
|
|
/* block TTM */
|
|
/* block TTM */
|
|
resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
|
|
resched = ttm_bo_lock_delayed_workqueue(&adev->mman.bdev);
|
|
|
|
|
|
@@ -3363,6 +3366,8 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
|
|
dev_info(adev->dev, "GPU reset(%d) succeeded!\n",atomic_read(&adev->gpu_reset_counter));
|
|
dev_info(adev->dev, "GPU reset(%d) succeeded!\n",atomic_read(&adev->gpu_reset_counter));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ /*unlock kfd */
|
|
|
|
+ amdgpu_amdkfd_post_reset(adev);
|
|
amdgpu_vf_error_trans_all(adev);
|
|
amdgpu_vf_error_trans_all(adev);
|
|
adev->in_gpu_reset = 0;
|
|
adev->in_gpu_reset = 0;
|
|
mutex_unlock(&adev->lock_reset);
|
|
mutex_unlock(&adev->lock_reset);
|