[PATCH] drm/amdgpu: Fix the ring buffer size for queue VM flush
Liang, Prike
Prike.Liang at amd.com
Mon Apr 8 05:55:23 UTC 2024
[AMD Official Use Only - General]
Thank you, Christian, for the review. I will remove the gfx_v9_0_ring_emit_vm_flush() IP type condition check before pushing the commit.
Thanks,
Prike
> -----Original Message-----
> From: Christian König <ckoenig.leichtzumerken at gmail.com>
> Sent: Thursday, April 4, 2024 8:24 PM
> To: Liang, Prike <Prike.Liang at amd.com>; amd-gfx at lists.freedesktop.org
> Cc: Deucher, Alexander <Alexander.Deucher at amd.com>
> Subject: Re: [PATCH] drm/amdgpu: Fix the ring buffer size for queue VM flush
>
> Am 26.03.24 um 09:21 schrieb Prike Liang:
> > Here are the corrections needed for the queue ring buffer size
> > calculation for the following cases:
> > - Remove the KIQ VM flush ring usage.
> > - Add the invalidate TLBs packet for gfx10 and gfx11 queue.
> > - There's no VM flush and PFP sync, so remove the gfx9 real
> > ring and compute ring buffer usage.
> >
> > Signed-off-by: Prike Liang <Prike.Liang at amd.com>
>
> Good catch, that was probably just copied over from the gfx implementation.
>
> When the function isn't used with the compute rings any more you can
> probably also remove this from gfx_v9_0_ring_emit_vm_flush():
>
> /* compute doesn't have PFP */
> if (ring->funcs->type == AMDGPU_RING_TYPE_GFX) {
>
> With or without that the patch is Reviewed-by: Christian König
> <christian.koenig at amd.com>.
>
> Thanks,
> Christian.
>
> > ---
> > drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c | 3 +--
> > drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c | 3 +--
> > drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c | 5 -----
> > 3 files changed, 2 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
> > b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
> > index d524f1a353ed..0c7312c0fa7f 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v10_0.c
> > @@ -9186,7 +9186,7 @@ static const struct amdgpu_ring_funcs
> gfx_v10_0_ring_funcs_gfx = {
> > 7 + /* PIPELINE_SYNC */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* VM_FLUSH */
> > + 4 + /* VM_FLUSH */
> > 8 + /* FENCE for VM_FLUSH */
> > 20 + /* GDS switch */
> > 4 + /* double SWITCH_BUFFER,
> > @@ -9276,7 +9276,6 @@ static const struct amdgpu_ring_funcs
> gfx_v10_0_ring_funcs_kiq = {
> > 7 + /* gfx_v10_0_ring_emit_pipeline_sync */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* gfx_v10_0_ring_emit_vm_flush */
> > 8 + 8 + 8, /* gfx_v10_0_ring_emit_fence_kiq x3 for user fence,
> vm fence */
> > .emit_ib_size = 7, /* gfx_v10_0_ring_emit_ib_compute */
> > .emit_ib = gfx_v10_0_ring_emit_ib_compute, diff --git
> > a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > index 7a906318e451..5390dd2c51da 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v11_0.c
> > @@ -6191,7 +6191,7 @@ static const struct amdgpu_ring_funcs
> gfx_v11_0_ring_funcs_gfx = {
> > 7 + /* PIPELINE_SYNC */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* VM_FLUSH */
> > + 4 + /* VM_FLUSH */
> > 8 + /* FENCE for VM_FLUSH */
> > 20 + /* GDS switch */
> > 5 + /* COND_EXEC */
> > @@ -6277,7 +6277,6 @@ static const struct amdgpu_ring_funcs
> gfx_v11_0_ring_funcs_kiq = {
> > 7 + /* gfx_v11_0_ring_emit_pipeline_sync */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* gfx_v11_0_ring_emit_vm_flush */
> > 8 + 8 + 8, /* gfx_v11_0_ring_emit_fence_kiq x3 for user fence,
> vm fence */
> > .emit_ib_size = 7, /* gfx_v11_0_ring_emit_ib_compute */
> > .emit_ib = gfx_v11_0_ring_emit_ib_compute, diff --git
> > a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > index 71b555993b7a..fce0b8238d13 100644
> > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v9_0.c
> > @@ -6872,7 +6872,6 @@ static const struct amdgpu_ring_funcs
> gfx_v9_0_ring_funcs_gfx = {
> > 7 + /* PIPELINE_SYNC */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* VM_FLUSH */
> > 8 + /* FENCE for VM_FLUSH */
> > 20 + /* GDS switch */
> > 4 + /* double SWITCH_BUFFER,
> > @@ -6892,7 +6891,6 @@ static const struct amdgpu_ring_funcs
> gfx_v9_0_ring_funcs_gfx = {
> > .emit_ib = gfx_v9_0_ring_emit_ib_gfx,
> > .emit_fence = gfx_v9_0_ring_emit_fence,
> > .emit_pipeline_sync = gfx_v9_0_ring_emit_pipeline_sync,
> > - .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush,
> > .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch,
> > .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush,
> > .test_ring = gfx_v9_0_ring_test_ring, @@ -6981,7 +6979,6 @@ static
> > const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_compute = {
> > 7 + /* gfx_v9_0_ring_emit_pipeline_sync */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* gfx_v9_0_ring_emit_vm_flush */
> > 8 + 8 + 8 + /* gfx_v9_0_ring_emit_fence x3 for user fence, vm
> fence */
> > 7 + /* gfx_v9_0_emit_mem_sync */
> > 5 + /* gfx_v9_0_emit_wave_limit for updating
> > mmSPI_WCL_PIPE_PERCENT_GFX register */ @@ -6990,7 +6987,6 @@ static
> const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_compute = {
> > .emit_ib = gfx_v9_0_ring_emit_ib_compute,
> > .emit_fence = gfx_v9_0_ring_emit_fence,
> > .emit_pipeline_sync = gfx_v9_0_ring_emit_pipeline_sync,
> > - .emit_vm_flush = gfx_v9_0_ring_emit_vm_flush,
> > .emit_gds_switch = gfx_v9_0_ring_emit_gds_switch,
> > .emit_hdp_flush = gfx_v9_0_ring_emit_hdp_flush,
> > .test_ring = gfx_v9_0_ring_test_ring, @@ -7019,7 +7015,6 @@ static
> > const struct amdgpu_ring_funcs gfx_v9_0_ring_funcs_kiq = {
> > 7 + /* gfx_v9_0_ring_emit_pipeline_sync */
> > SOC15_FLUSH_GPU_TLB_NUM_WREG * 5 +
> > SOC15_FLUSH_GPU_TLB_NUM_REG_WAIT * 7 +
> > - 2 + /* gfx_v9_0_ring_emit_vm_flush */
> > 8 + 8 + 8, /* gfx_v9_0_ring_emit_fence_kiq x3 for user fence,
> vm fence */
> > .emit_ib_size = 7, /* gfx_v9_0_ring_emit_ib_compute */
> > .emit_fence = gfx_v9_0_ring_emit_fence_kiq,
More information about the amd-gfx
mailing list