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);

Reply via email to