提交 2200edac 编写于 作者: C Chunming Zhou 提交者: Alex Deucher

drm/amdgpu: force completion for gpu reset

After all hw jobs are reset, hw fence is meaningless, so force_completion

Cc: William Lewis <minutemaidpark@hotmail.com>
Signed-off-by: NChunming Zhou <David1.Zhou@amd.com>
Reviewed-by: NChristian König <christian.koenig@amd.com>
Signed-off-by: NAlex Deucher <alexander.deucher@amd.com>
上级 a3c47d6b
...@@ -1947,7 +1947,8 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev) ...@@ -1947,7 +1947,8 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
continue; continue;
kthread_park(ring->sched.thread); kthread_park(ring->sched.thread);
} }
/* after all hw jobs are reset, hw fence is meaningless, so force_completion */
amdgpu_fence_driver_force_completion(adev);
/* save scratch */ /* save scratch */
amdgpu_atombios_scratch_regs_save(adev); amdgpu_atombios_scratch_regs_save(adev);
...@@ -2005,7 +2006,7 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev) ...@@ -2005,7 +2006,7 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
} }
} }
} else { } else {
amdgpu_fence_driver_force_completion(adev); dev_err(adev->dev, "asic resume failed (%d).\n", r);
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
if (adev->rings[i]) { if (adev->rings[i]) {
kthread_unpark(adev->rings[i]->sched.thread); kthread_unpark(adev->rings[i]->sched.thread);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册