Commit 0b2d2c2e authored by Andrey Grodzovsky's avatar Andrey Grodzovsky Committed by Alex Deucher

drm/amdgpu: Handle job is NULL use case in amdgpu_device_gpu_recover

This should be checked at all places job is accessed.
Signed-off-by: default avatarAndrey Grodzovsky <andrey.grodzovsky@amd.com>
Reviewed-by: default avatarChristian König <christian.koenig@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e1c14c43
...@@ -3794,14 +3794,14 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev, ...@@ -3794,14 +3794,14 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
if (hive && !mutex_trylock(&hive->reset_lock)) { if (hive && !mutex_trylock(&hive->reset_lock)) {
DRM_INFO("Bailing on TDR for s_job:%llx, hive: %llx as another already in progress", DRM_INFO("Bailing on TDR for s_job:%llx, hive: %llx as another already in progress",
job->base.id, hive->hive_id); job ? job->base.id : -1, hive->hive_id);
return 0; return 0;
} }
/* Start with adev pre asic reset first for soft reset check.*/ /* Start with adev pre asic reset first for soft reset check.*/
if (!amdgpu_device_lock_adev(adev, !hive)) { if (!amdgpu_device_lock_adev(adev, !hive)) {
DRM_INFO("Bailing on TDR for s_job:%llx, as another already in progress", DRM_INFO("Bailing on TDR for s_job:%llx, as another already in progress",
job->base.id); job ? job->base.id : -1);
return 0; return 0;
} }
...@@ -3842,7 +3842,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev, ...@@ -3842,7 +3842,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
if (!ring || !ring->sched.thread) if (!ring || !ring->sched.thread)
continue; continue;
drm_sched_stop(&ring->sched, &job->base); drm_sched_stop(&ring->sched, job ? &job->base : NULL);
} }
} }
...@@ -3867,9 +3867,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev, ...@@ -3867,9 +3867,7 @@ int amdgpu_device_gpu_recover(struct amdgpu_device *adev,
/* Guilty job will be freed after this*/ /* Guilty job will be freed after this*/
r = amdgpu_device_pre_asic_reset(adev, r = amdgpu_device_pre_asic_reset(adev, job, &need_full_reset);
job,
&need_full_reset);
if (r) { if (r) {
/*TODO Should we stop ?*/ /*TODO Should we stop ?*/
DRM_ERROR("GPU pre asic reset failed with err, %d for drm dev, %s ", DRM_ERROR("GPU pre asic reset failed with err, %d for drm dev, %s ",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment