AMD General

> -----Original Message-----
> From: amd-gfx <[email protected]> On Behalf Of Alex
> Deucher
> Sent: Friday, May 22, 2026 8:20 AM
> To: [email protected]; Koenig, Christian
> <[email protected]>; Khatri, Sunil <[email protected]>; Lin, Amber
> <[email protected]>; Zhang, Jesse(Jie) <[email protected]>; Liu,
> Shaoyun <[email protected]>
> Cc: Deucher, Alexander <[email protected]>
> Subject: [PATCH 21/42] drm/amdgpu/userq: add mes userq reset callback
>
> Enable per queue reset for MES managed queues.
>
> Signed-off-by: Alex Deucher <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/mes_userqueue.c | 21 +++++++++++++++++++++
>  1 file changed, 21 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> index 14db2124ff81c..4f285a8218ddb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> +++ b/drivers/gpu/drm/amd/amdgpu/mes_userqueue.c
> @@ -177,6 +177,26 @@ static int mes_userq_unmap(struct
> amdgpu_usermode_queue *queue)
>       return r;
>  }
>
> +static int 4(struct amdgpu_usermode_queue *queue) {
> +     struct amdgpu_userq_mgr *uq_mgr = queue->userq_mgr;
> +     struct amdgpu_device *adev = uq_mgr->adev;
> +     struct mes_reset_queue_input queue_input;
> +     int r;
> +
> +     /* XXX: add a FW version check for SDMA per queue reset */
> +     memset(&queue_input, 0x0, sizeof(struct mes_reset_queue_input));
> +     queue_input.doorbell_offset = queue->doorbell_index;
> +     queue_input.queue_type = queue->queue_type;
[Zhang, Jesse(Jie)] should we use mmio for userq ?
queue_input.use_mmio = adev->gfx.mec.use_mmio_for_reset;

> +
> +     amdgpu_mes_lock(&adev->mes);
> +     r = adev->mes.funcs->reset_hw_queue(&adev->mes, &queue_input);
> +     amdgpu_mes_unlock(&adev->mes);
> +     if (r)
> +             return r;
> +     return mes_userq_unmap(queue);
> +}
> +
>  static int mes_userq_create_ctx_space(struct amdgpu_userq_mgr *uq_mgr,
>                                     struct amdgpu_usermode_queue *queue,
>                                     struct drm_amdgpu_userq_in *mqd_user) @@ -
> 528,4 +548,5 @@ const struct amdgpu_userq_funcs userq_mes_funcs = {
>       .detect_and_reset = mes_userq_detect_and_reset,
>       .preempt = mes_userq_preempt,
>       .restore = mes_userq_restore,
> +     .reset = mes_userq_reset,
>  };
> --
> 2.54.0

Reply via email to