We only want to stop the work queues, not mess with the
fences, etc.

v2: add the job back to the pending list.

Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c 
b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
index 362ab2b344984..05efa31c3f6a0 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
@@ -6310,7 +6310,10 @@ static void amdgpu_device_halt_activities(struct 
amdgpu_device *adev,
                        if (!amdgpu_ring_sched_ready(ring))
                                continue;
 
-                       drm_sched_stop(&ring->sched, job ? &job->base : NULL);
+                       drm_sched_wqueue_stop(&ring->sched);
+                       /* add the job back to the pending list */
+                       if (job && job->base.sched == &ring->sched)
+                               list_add(&job->base.list, 
&job->base.sched->pending_list);
 
                        if (need_emergency_restart)
                                amdgpu_job_stop_all_jobs_on_sched(&ring->sched);
@@ -6394,7 +6397,7 @@ static int amdgpu_device_sched_resume(struct list_head 
*device_list,
                        if (!amdgpu_ring_sched_ready(ring))
                                continue;
 
-                       drm_sched_start(&ring->sched, 0);
+                       drm_sched_wqueue_start(&ring->sched);
                }
 
                if (!drm_drv_uses_atomic_modeset(adev_to_drm(tmp_adev)) && 
!job_signaled)
-- 
2.52.0

Reply via email to