The entire series of 7 patches looks good to me.

Reviewed-by: Vitaly Prosyak [email protected]

Yes — for SDMA 5.0 the maximum COPY transfer size should be 1 << 22 (0x400000). 
I validated the limits using the new IGT tests.


On 2026-02-19 11:02, Alex Deucher wrote:
> SDMA 4.4.x has increased transfer limits.
>
> v2: fix harder, use shifts to make it more obvious
>
> Cc: Vitaly Prosyak <[email protected]>
> Signed-off-by: Alex Deucher <[email protected]>
> ---
>  drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 19 ++++++++++++++++---
>  1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c 
> b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> index a35d9951e22a9..44f0f23e11484 100644
> --- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
> @@ -2604,18 +2604,31 @@ static void sdma_v4_0_emit_fill_buffer(struct 
> amdgpu_ib *ib,
>  }
>  
>  static const struct amdgpu_buffer_funcs sdma_v4_0_buffer_funcs = {
> -     .copy_max_bytes = 0x400000,
> +     .copy_max_bytes = 1 << 22,
>       .copy_num_dw = 7,
>       .emit_copy_buffer = sdma_v4_0_emit_copy_buffer,
>  
> -     .fill_max_bytes = 0x400000,
> +     .fill_max_bytes = 1 << 22,
> +     .fill_num_dw = 5,
> +     .emit_fill_buffer = sdma_v4_0_emit_fill_buffer,
> +};
> +
> +static const struct amdgpu_buffer_funcs sdma_v4_4_buffer_funcs = {
> +     .copy_max_bytes = 1 << 30,
> +     .copy_num_dw = 7,
> +     .emit_copy_buffer = sdma_v4_0_emit_copy_buffer,
> +
> +     .fill_max_bytes = 1 << 30,
>       .fill_num_dw = 5,
>       .emit_fill_buffer = sdma_v4_0_emit_fill_buffer,
>  };
>  
>  static void sdma_v4_0_set_buffer_funcs(struct amdgpu_device *adev)
>  {
> -     adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
> +     if (amdgpu_ip_version(adev, SDMA0_HWIP, 0) >= IP_VERSION(4, 4, 0))
> +             adev->mman.buffer_funcs = &sdma_v4_4_buffer_funcs;
> +     else
> +             adev->mman.buffer_funcs = &sdma_v4_0_buffer_funcs;
>       if (adev->sdma.has_page_queue)
>               adev->mman.buffer_funcs_ring = &adev->sdma.instance[0].page;
>       else

Reply via email to