[Public] > From: amd-gfx <amd-gfx-bounces@xxxxxxxxxxxxxxxxxxxxx> On Behalf Of Alex > Deucher > Sent: Friday, March 7, 2025 11:16 PM > To: amd-gfx@xxxxxxxxxxxxxxxxxxxxx > Cc: Deucher, Alexander <Alexander.Deucher@xxxxxxx> > 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@xxxxxxx> > --- > 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? 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