On Mon, May 25, 2026 at 5:39 AM Zhang, Jesse(Jie) <[email protected]> wrote:
>
> 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;
We don't have the queue and pipe info to do the reset via MMIO at this stage.
Alex
>
> > +
> > + 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
>