[PATCH 03/11] drm/amdgpu/gfx: add generic handling for disable_kq
Alex Deucher
alexdeucher at gmail.com
Wed Mar 12 18:52:36 UTC 2025
On Tue, Mar 11, 2025 at 10:18 AM Liang, Prike <Prike.Liang at amd.com> wrote:
>
> [Public]
>
> > From: amd-gfx <amd-gfx-bounces at lists.freedesktop.org> On Behalf Of Alex
> > Deucher
> > Sent: Friday, March 7, 2025 11:16 PM
> > To: amd-gfx at lists.freedesktop.org
> > Cc: Deucher, Alexander <Alexander.Deucher at amd.com>
> > Subject: [PATCH 03/11] drm/amdgpu/gfx: add generic handling for disable_kq
> >
> > Add proper checks for disable_kq functionality in gfx helper functions. Add special
> > logic for families that require the clear state setup.
> >
> > v2: use ring count as per Felix suggestion
> > v3: fix num_gfx_rings handling in amdgpu_gfx_graphics_queue_acquire()
> >
> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com>
> > ---
> > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c | 8 ++++++--
> > drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h | 2 ++
> > 2 files changed, 8 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > index a194bf3347cbc..2c78185a33218 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.c
> > @@ -258,8 +258,9 @@ void amdgpu_gfx_graphics_queue_acquire(struct
> > amdgpu_device *adev)
> > }
> >
> > /* update the number of active graphics rings */
> > - adev->gfx.num_gfx_rings =
> > - bitmap_weight(adev->gfx.me.queue_bitmap,
> > AMDGPU_MAX_GFX_QUEUES);
> > + if (adev->gfx.num_gfx_rings)
> > + adev->gfx.num_gfx_rings =
> > + bitmap_weight(adev->gfx.me.queue_bitmap,
> > AMDGPU_MAX_GFX_QUEUES);
> > }
> >
> > static int amdgpu_gfx_kiq_acquire(struct amdgpu_device *adev, @@ -1544,6
> > +1545,9 @@ static ssize_t amdgpu_gfx_set_run_cleaner_shader(struct device
> > *dev,
> > if (adev->in_suspend && !adev->in_runpm)
> > return -EPERM;
> >
> > + if (adev->gfx.disable_kq)
> > + return -ENOTSUPP;
> > +
> Maybe here need to disable the flag enable_cleaner_shader as well?
We still need it, but the MES runs it when switching queues rather
than the driver in the userq case.
Alex
>
> Thanks,
> Prike
> > ret = kstrtol(buf, 0, &value);
> >
> > if (ret)
> > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> > b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> > index ddf4533614bac..8fa68a4ac34f1 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gfx.h
> > @@ -483,6 +483,8 @@ struct amdgpu_gfx {
> >
> > atomic_t total_submission_cnt;
> > struct delayed_work idle_work;
> > +
> > + bool disable_kq;
> > };
> >
> > struct amdgpu_gfx_ras_reg_entry {
> > --
> > 2.48.1
>
More information about the amd-gfx
mailing list