Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

drm/amdgpu: don't call drm_sched_stop/start() in asic reset

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

v2: add the job back to the pending list.
v3: return the proper job status so scheduler adds the
job back to the pending list

Acked-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>

+4 -6
+2 -2
drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
··· 6304 6304 if (!amdgpu_ring_sched_ready(ring)) 6305 6305 continue; 6306 6306 6307 - drm_sched_stop(&ring->sched, job ? &job->base : NULL); 6307 + drm_sched_wqueue_stop(&ring->sched); 6308 6308 6309 6309 if (need_emergency_restart) 6310 6310 amdgpu_job_stop_all_jobs_on_sched(&ring->sched); ··· 6388 6388 if (!amdgpu_ring_sched_ready(ring)) 6389 6389 continue; 6390 6390 6391 - drm_sched_start(&ring->sched, 0); 6391 + drm_sched_wqueue_start(&ring->sched); 6392 6392 } 6393 6393 6394 6394 if (!drm_drv_uses_atomic_modeset(adev_to_drm(tmp_adev)) && !job_signaled)
+2 -4
drivers/gpu/drm/amd/amdgpu/amdgpu_job.c
··· 92 92 struct drm_wedge_task_info *info = NULL; 93 93 struct amdgpu_task_info *ti = NULL; 94 94 struct amdgpu_device *adev = ring->adev; 95 - enum drm_gpu_sched_stat status = DRM_GPU_SCHED_STAT_RESET; 96 95 int idx, r; 97 96 98 97 if (!drm_dev_enter(adev_to_drm(adev), &idx)) { ··· 146 147 ring->sched.name); 147 148 drm_dev_wedged_event(adev_to_drm(adev), 148 149 DRM_WEDGE_RECOVERY_NONE, info); 149 - /* This is needed to add the job back to the pending list */ 150 - status = DRM_GPU_SCHED_STAT_NO_HANG; 151 150 goto exit; 152 151 } 153 152 dev_err(adev->dev, "Ring %s reset failed\n", ring->sched.name); ··· 181 184 exit: 182 185 amdgpu_vm_put_task_info(ti); 183 186 drm_dev_exit(idx); 184 - return status; 187 + /* This is needed to add the job back to the pending list */ 188 + return DRM_GPU_SCHED_STAT_NO_HANG; 185 189 } 186 190 187 191 int amdgpu_job_alloc(struct amdgpu_device *adev, struct amdgpu_vm *vm,