|
@@ -2583,7 +2583,7 @@ int amdgpu_gpu_reset(struct amdgpu_device *adev)
|
|
|
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
|
|
|
struct amdgpu_ring *ring = adev->rings[i];
|
|
|
|
|
|
- if (!ring)
|
|
|
+ if (!ring || !ring->sched.thread)
|
|
|
continue;
|
|
|
kthread_park(ring->sched.thread);
|
|
|
amd_sched_hw_job_reset(&ring->sched);
|
|
@@ -2678,7 +2678,8 @@ retry:
|
|
|
}
|
|
|
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
|
|
|
struct amdgpu_ring *ring = adev->rings[i];
|
|
|
- if (!ring)
|
|
|
+
|
|
|
+ if (!ring || !ring->sched.thread)
|
|
|
continue;
|
|
|
|
|
|
amd_sched_job_recovery(&ring->sched);
|
|
@@ -2687,7 +2688,7 @@ retry:
|
|
|
} else {
|
|
|
dev_err(adev->dev, "asic resume failed (%d).\n", r);
|
|
|
for (i = 0; i < AMDGPU_MAX_RINGS; ++i) {
|
|
|
- if (adev->rings[i]) {
|
|
|
+ if (adev->rings[i] && adev->rings[i]->sched.thread) {
|
|
|
kthread_unpark(adev->rings[i]->sched.thread);
|
|
|
}
|
|
|
}
|