On 2026-09-02 08:49, Prike Liang wrote: > Suspend the drm internal clients has a deadlock risk as acquiring > it while holding the reset domain lock inverts the ordering > established elsewhere (clientlist_mutex -> ... -> reset_domain->sem). > > Reset AMDGPU can prevent the user space clients further accessing by > using the reset semaphore, so removing the drm_client_dev_suspend() | > resume() in the reset path. That is only true for ioctl paths. amdgpu_userq_restore_worker is a workqueue, not an ioctl. It never takes reset_domain->sem. The removed
suspend/resume call was the only thing blocking it during reset. Thanks, Vitaly > Signed-off-by: Prike Liang <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 4 ---- > 1 file changed, 4 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index d7640da9f6de..bd4eb97336b1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -5210,8 +5210,6 @@ int amdgpu_device_reinit_after_reset(struct > amdgpu_reset_context *reset_context) > if (r) > goto out; > > - drm_client_dev_resume(adev_to_drm(tmp_adev)); > - > /* > * The GPU enters bad state once faulty pages > * by ECC has reached the threshold, and ras > @@ -5544,8 +5542,6 @@ static void amdgpu_device_halt_activities(struct > amdgpu_device *adev, > */ > amdgpu_unregister_gpu_instance(tmp_adev); > > - drm_client_dev_suspend(adev_to_drm(tmp_adev)); > - > /* disable ras on ALL IPs */ > if (!need_emergency_restart && !amdgpu_reset_in_dpc(adev)) > amdgpu_ras_suspend(tmp_adev);
