AMD General

Series is Reviewed-by: <[email protected]>

> -----Original Message-----
> From: Lin, Amber <[email protected]>
> Sent: Thursday, June 18, 2026 9:23 AM
> To: [email protected]; Zhang, Jesse(Jie) <[email protected]>
> Cc: Lin, Amber <[email protected]>
> Subject: [PATCH 2/2] drm/amdkfd: Remove extra function
>
> recover_bad_queue_mes is not needed. Call reset_queues_mes directly.
>
> Signed-off-by: Amber Lin <[email protected]>
> ---
>  .../drm/amd/amdkfd/kfd_device_queue_manager.c | 19 +++++--------------
>  1 file changed, 5 insertions(+), 14 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> index 4e60d9364e37..83be54372b18 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_device_queue_manager.c
> @@ -72,11 +72,11 @@ static int allocate_sdma_queue(struct
> device_queue_manager *dqm,
>                               struct queue *q, const uint32_t 
> *restore_sdma_id);
>
>  static int reset_queues_on_hws_hang(struct device_queue_manager *dqm, bool
> is_sdma); -static int recover_bad_queue_mes(struct device_queue_manager *dqm,
> struct queue *q);  static struct queue *find_queue_by_doorbell_offset(struct
> device_queue_manager *dqm,
>                                                  u32 doorbell_offset);
>  static void set_queue_as_reset(struct device_queue_manager *dqm, struct queue
> *q,
>                              struct qcm_process_device *qpd);
> +static int reset_queues_mes(struct device_queue_manager *dqm, struct
> +queue *q);
>
>  static inline
>  enum KFD_MQD_TYPE get_mqd_type_from_queue_type(enum kfd_queue_type
> type) @@ -333,11 +333,12 @@ static int
> remove_queue_mes_on_reset_option(struct device_queue_manager *dqm, st
>       amdgpu_mes_unlock(&adev->mes);
>       up_read(&adev->reset_domain->sem);
>
> +     /* If is_for_reset set, it is a mes internal cleanup */
>       if (!r || is_for_reset)
>               return r;
>
> -     /* remove_hw_queue failed. try to recover */
> -     r = recover_bad_queue_mes(dqm, q);
> +     /* remove_hw_queue failure indicates a queue hang. reset the queue */
> +     r = reset_queues_mes(dqm, q);
>       if (r && amdgpu_gpu_recovery) {
>               dev_err(adev->dev, "failed to remove queue from MES,
> doorbell=0x%x\n",
>                       q->properties.doorbell_off);
> @@ -488,16 +489,6 @@ static int reset_queues_mes(struct
> device_queue_manager *dqm, struct queue *q)
>       return r;
>  }
>
> -static int recover_bad_queue_mes(struct device_queue_manager *dqm, struct
> queue *q) -{
> -     struct amdgpu_device *adev = (struct amdgpu_device *)dqm->dev->adev;
> -     int r = 0;
> -
> -     r = reset_queues_mes(dqm, q);
> -
> -     return r;
> -}
> -
>  static void increment_queue_count(struct device_queue_manager *dqm,
>                                 struct qcm_process_device *qpd,
>                                 struct queue *q)
> @@ -3269,7 +3260,7 @@ int kfd_dqm_suspend_bad_queue_mes(struct kfd_node
> *knode, u32 pasid, u32 doorbel
>
>               list_for_each_entry(q, &qpd->queues_list, list) {
>                       if (q->doorbell_id == doorbell_id && 
> q->properties.is_active) {
> -                             recover_bad_queue_mes(dqm, q);
> +                             reset_queues_mes(dqm, q);
>                               q->properties.is_evicted = true;
>                               q->properties.is_active = false;
>                               decrement_queue_count(dqm, qpd, q);
> --
> 2.43.0

Reply via email to