RE: [PATCH 1/2] drm/amdgpu: Remove separate guilty compute userq reset

"Liang, Prike" <[email protected]>
Newsgroups org.freedesktop.lists.amd-gfx
Message-ID <DS7PR12MB6005701083F93C0330D4F4C0FBC02@DS7PR12MB6005.namprd12.prod.outlook.com>
AMD General

I checked each different userq hang cases, and the guilty userq can be identified by the MES firmware and report correctly.  @Zhang, Jesse(Jie) could you further check as well at you side?

If there're some hang queues miss identified by MES firmware, then the correct thing is to further debug from MES firmware side rather than have such strange reset sequence and this reset workaround should be cleaned sooner or later.


Regards,
      Prike

> -----Original Message-----
> From: Liang, Prike <[email protected]>
> Sent: Wednesday, July 15, 2026 2:31 PM
> To: [email protected]
> Cc: Deucher, Alexander <[email protected]>; Koenig, Christian
> <[email protected]>; Liang, Prike <[email protected]>
> Subject: [PATCH 1/2] drm/amdgpu: Remove separate guilty compute userq reset
>
> amdgpu_mes_detect_and_reset_hung_queues() already detects the guilty compute
> user queue and resets it through mes_userq_reset_queue(). The additional reset via
> mes_userq_reset() is unnecessary, so remove it to unify the compute userq reset.
>
> Signed-off-by: Prike Liang <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c    | 5 -----
>  drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 2 --
>  2 files changed, 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> index 1e275c2e7dd3..4f2d5ff2f7be 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> @@ -2315,11 +2315,6 @@ int amdgpu_gfx_reset_mes_compute(struct
> amdgpu_device *adev,
>               deferred_end[n_deferred].fence = guilty_fence;
>               n_deferred++;
>       }
> -     if (uq) {
> -             r = mes_userq_reset(uq);
> -             if (r)
> -                     goto out;
> -     }
>       for (i = 0; i < num_hung; i++) {
>               struct amdgpu_ring *hr = NULL;
>               struct amdgpu_fence *hf = NULL;
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> index b6bfa3974839..fab21d4275f3 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> @@ -226,8 +226,6 @@ int mes_userq_reset_queue(struct amdgpu_device *adev,
>
>       xa_for_each(&adev->userq_doorbell_xa, uq_id, uq) {
>               if (uq->queue_type == queue_type) {
> -                     if (uq == guilty_uq)
> -                             continue;
>                       if (uq->doorbell_index == db) {
>                               uq->state = AMDGPU_USERQ_STATE_HUNG;
>                               if (use_mmio)
> --
> 2.34.1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.