On 6/17/26 21:14, Timur Kristóf wrote: > Soft recovery is not the same as soft reset: > > * Soft recovery attempts to resolve a GPU hang by sending a > command to terminate shaders. > * Soft reset completely re-initializes an entire device IP block, > which may affect multiple rings and jobs at the same time. > > Signed-off-by: Timur Kristóf <[email protected]>
Reviewed-by: Christian König <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu.h | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++--- > drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +- > drivers/gpu/drm/amd/amdgpu/amdgpu_job.c | 2 +- > 4 files changed, 6 insertions(+), 6 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > index 5d7bfa59424a..cb4fa9c111eb 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h > @@ -304,7 +304,7 @@ extern uint amdgpu_hdmi_hpd_debounce_delay_ms; > > /* reset mask */ > #define AMDGPU_RESET_TYPE_FULL (1 << 0) /* full adapter reset, > mode1/mode2/BACO/etc. */ > -#define AMDGPU_RESET_TYPE_SOFT_RESET (1 << 1) /* IP level soft reset */ > +#define AMDGPU_RESET_TYPE_SOFT_RECOVERY (1 << 1) /* soft recovery, eg. kill > shaders */ > #define AMDGPU_RESET_TYPE_PER_QUEUE (1 << 2) /* per queue */ > #define AMDGPU_RESET_TYPE_PER_PIPE (1 << 3) /* per pipe */ > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > index 5ccbe6c885cf..71a6b18ccf23 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c > @@ -6884,7 +6884,7 @@ ssize_t amdgpu_get_soft_full_reset_mask(struct > amdgpu_ring *ring) > > if (unlikely(!ring->adev->debug_disable_soft_recovery) && > !amdgpu_sriov_vf(ring->adev) && ring->funcs->soft_recovery) > - size |= AMDGPU_RESET_TYPE_SOFT_RESET; > + size |= AMDGPU_RESET_TYPE_SOFT_RECOVERY; > > return size; > } > @@ -6900,8 +6900,8 @@ ssize_t amdgpu_show_reset_mask(char *buf, uint32_t > supported_reset) > > } > > - if (supported_reset & AMDGPU_RESET_TYPE_SOFT_RESET) > - size += sysfs_emit_at(buf, size, "soft "); > + if (supported_reset & AMDGPU_RESET_TYPE_SOFT_RECOVERY) > + size += sysfs_emit_at(buf, size, "soft_recovery "); > > if (supported_reset & AMDGPU_RESET_TYPE_PER_QUEUE) > size += sysfs_emit_at(buf, size, "queue "); > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > index 1781c0c3d010..53aa2d438da5 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c > @@ -2250,7 +2250,7 @@ static void amdgpu_init_debug_options(struct > amdgpu_device *adev) > } > > if (amdgpu_debug_mask & AMDGPU_DEBUG_DISABLE_GPU_SOFT_RECOVERY) { > - pr_info("debug: soft reset for GPU recovery disabled\n"); > + pr_info("debug: soft recovery disabled\n"); > adev->debug_disable_soft_recovery = true; > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > index 55172c2dcc35..ce3c209a6ba7 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_job.c > @@ -112,7 +112,7 @@ static enum drm_gpu_sched_stat amdgpu_job_timedout(struct > drm_sched_job *s_job) > amdgpu_job_core_dump(adev, job); > > if (amdgpu_gpu_recovery && > - amdgpu_ring_is_reset_type_supported(ring, > AMDGPU_RESET_TYPE_SOFT_RESET) && > + amdgpu_ring_is_reset_type_supported(ring, > AMDGPU_RESET_TYPE_SOFT_RECOVERY) && > amdgpu_ring_soft_recovery(ring, job->vmid, s_job->s_fence->parent)) > { > dev_err(adev->dev, "ring %s timeout, but soft recovered\n", > s_job->sched->name);
