]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
drm/amdgpu: fix gpu reset crash
[karo-tx-linux.git] / drivers / gpu / drm / amd / amdgpu / amdgpu_device.c
index 61716a2d44844e5b71ed4bd6032c1f7780c3c738..eadd6e0a415261d398b5cc01ef038ba0cd9ac846 100644 (file)
@@ -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);
                        }
                }