[PATCH] drm/amdgpu: clean up the count calculation for nop

Christian König christian.koenig at amd.com
Wed Jul 31 14:04:37 UTC 2024


Am 31.07.24 um 11:35 schrieb Sunil Khatri:
> clean up the calculation for nops count before
> commit in the ring.
>
> Signed-off-by: Sunil Khatri <sunil.khatri at amd.com>
> ---
>   drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c | 5 ++---
>   1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
> index 0d72d2cbb64b..2c8218332c65 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ring.c
> @@ -142,9 +142,8 @@ void amdgpu_ring_commit(struct amdgpu_ring *ring)
>   	uint32_t count;
>   
>   	/* We pad to match fetch size */
> -	count = ring->funcs->align_mask + 1 -
> -		(ring->wptr & ring->funcs->align_mask);
> -	count %= ring->funcs->align_mask + 1;
> +	count = ring->funcs->align_mask -
> +		((ring->wptr + ring->funcs->align_mask) & ring->funcs->align_mask);

I just realized that the old handling was potentially better since it 
only required a constant addition instead of two with the align_mask.

E.g. "ring->funcs->align_mask + 1 -" looks a bit odd but might be less 
instructions.

Maybe just review and commit the version from Tvrtko which just replaces 
the % with an & operation.

Regards,
Christian.

>   
>   	if (count != 0)
>   		ring->funcs->insert_nop(ring, count);



More information about the amd-gfx mailing list