[PATCH 2/3] drm/amdgpu/gfx11: set MQD as appriopriate for queue priv

Alex Deucher alexdeucher at gmail.com
Wed Jul 16 15:19:38 UTC 2025


On Wed, Jul 16, 2025 at 5:58 AM Liang, Prike <Prike.Liang at amd.com> wrote:
>
> [Public]
>
> Regards,
>       Prike
>
> > -----Original Message-----
> > From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Lazar, Lijo
> > Sent: Wednesday, July 16, 2025 12:18 PM
> > To: Deucher, Alexander <Alexander.Deucher at amd.com>; amd-
> > gfx at lists.freedesktop.org
> > Cc: Koenig, Christian <Christian.Koenig at amd.com>
> > Subject: Re: [PATCH 2/3] drm/amdgpu/gfx11: set MQD as appriopriate for queue priv
> >
> >
> >
> > On 7/12/2025 3:21 AM, Alex Deucher wrote:
> > > Set the MQD as appropriate for the queue priv state.
> > >
> > > Acked-by: Christian König <christian.koenig at amd.com>
> > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > > ---
> > >  drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 8 ++++++--
> > >  1 file changed, 6 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > > b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > > index 37dcec2d07841..b9ba8b22a1073 100644
> > > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > > @@ -4124,6 +4124,8 @@ static int gfx_v11_0_gfx_mqd_init(struct
> > > amdgpu_device *adev, void *m,  #endif
> > >     if (prop->tmz_queue)
> > >             tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_CNTL, TMZ_MATCH,
> > 1);
> > > +   if (!prop->priv_queue)
> > > +           tmp = REG_SET_FIELD(tmp, CP_GFX_HQD_CNTL,
> > RB_NON_PRIV, 1);
> > >     mqd->cp_gfx_hqd_cntl = tmp;
> > >
> > >     /* set up cp_doorbell_control */
> > > @@ -4276,8 +4278,10 @@ static int gfx_v11_0_compute_mqd_init(struct
> > amdgpu_device *adev, void *m,
> > >     tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL,
> > UNORD_DISPATCH, 1);
> > >     tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL,
> > TUNNEL_DISPATCH,
> > >                         prop->allow_tunneling);
> > > -   tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, PRIV_STATE, 1);
> > > -   tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, KMD_QUEUE, 1);
> > > +   if (prop->priv_queue) {
> > > +           tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL,
> > PRIV_STATE, 1);
> > > +           tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL,
> > KMD_QUEUE, 1);
> > > +   }
> >
> > As per above logic, only kernel mode queues are supposed to be privileged. If so,
> > would suggest renaming the flag to kernel_q
> According to the CP guys, the privileged bit can be applied both the user queue and kernel queue. So, we may don't bound the privileged queue to the kernel queue.
> Meanwhile, the KMD_QUEUE bit may only set for the kernel queue only enabled case.

I think we want PRIV_STATE for only kernel queues.  Why would you want
it for user queues?

Alex

>
> > Thanks,
> > Lijo
> >
> > >     if (prop->tmz_queue)
> > >             tmp = REG_SET_FIELD(tmp, CP_HQD_PQ_CONTROL, TMZ, 1);
> > >     mqd->cp_hqd_pq_control = tmp;
>


More information about the amd-gfx mailing list