AMD General
Ping, reviews are appreciated.
Regards,
Prike
> -----Original Message-----
> From: Liang, Prike <[email protected]>
> Sent: Tuesday, September 29, 2026 11:47 AM
> To: [email protected]
> Cc: Deucher, Alexander <[email protected]>; Koenig, Christian
> <[email protected]>; Prosyak, Vitaly <[email protected]>; Liang,
> Prike <[email protected]>
> Subject: [PATCH v2 07/14] drm/amdgpu: finish GPU recovery callbacks before
> restarting schedulers
>
> Run GPU post-reset callbacks, including KFD and display-audio resume, before
> restarting DRM scheduler workqueues. IP hardware initialization already
> happens
> inside ASIC recovery; this change orders the remaining callbacks before new
> scheduler submissions. Preserve the emergency-stop and guity job completition
> path's callbacks without starting schedulers,
>
> Signed-off-by: Prike Liang <[email protected]>
> ---
> drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 13 +++++++------
> 1 file changed, 7 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index fa67de6d066c..83d98c9191b0 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -5783,8 +5783,10 @@ int amdgpu_device_gpu_recover(struct amdgpu_device
> *adev,
>
> amdgpu_device_halt_activities(adev, job, reset_context, &device_list,
> hive, need_emergency_restart);
> - if (need_emergency_restart)
> - goto skip_sched_resume;
> + if (need_emergency_restart) {
> + amdgpu_device_gpu_resume(adev, &device_list,
> need_emergency_restart);
> + goto reset_unlock;
> + }
> /*
> * Must check guilty signal here since after this point all old
> * HW fences are force signaled.
> @@ -5794,18 +5796,17 @@ int amdgpu_device_gpu_recover(struct
> amdgpu_device *adev,
> if (job && (dma_fence_get_status(&job->hw_fence->base) > 0)) {
> job_signaled = true;
> dev_info(adev->dev, "Guilty job already signaled, skipping HW
> reset");
> - goto skip_hw_reset;
> + goto post_resume;
> }
>
> r = amdgpu_device_asic_reset(adev, &device_list, reset_context);
> if (r)
> goto reset_unlock;
> -skip_hw_reset:
> +post_resume:
> + amdgpu_device_gpu_resume(adev, &device_list, need_emergency_restart);
> r = amdgpu_device_sched_resume(&device_list, reset_context,
> job_signaled);
> if (r)
> goto reset_unlock;
> -skip_sched_resume:
> - amdgpu_device_gpu_resume(adev, &device_list, need_emergency_restart);
> reset_unlock:
> amdgpu_device_recovery_put_reset_lock(adev, &device_list);
> amdgpu_ras_post_reset(adev, &device_list);
> --
> 2.34.1