SDMA 4.4.x has increased transfer limits.

v2: fix harder, use shifts to make it more obvious

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 f38004e6064e5..627c4bef443b3 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c
@@ -2597,18 +2597,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
-- 
2.51.0

Reply via email to