]> git.dujemihanovic.xyz Git - linux.git/commitdiff
drm/amdgpu: change non-dcc buffer copy configuration
authorFrank Min <Frank.Min@amd.com>
Fri, 2 Aug 2024 03:15:11 +0000 (11:15 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 7 Aug 2024 22:21:05 +0000 (18:21 -0400)
Without setting cpv bit and 7th ib dw, non-dcc buffer copy will have
random corruption

So set the cpv bit and clear the 7th ib dw for copy non-dcc buffers

Signed-off-by: Frank Min <Frank.Min@amd.com>
Acked-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit 5aacf8917fde5bc2a640f3cd49130c0e2e85e726)

drivers/gpu/drm/amd/amdgpu/sdma_v7_0.c

index 41b5e45697dcde43add1f99064e013e0ee153907..7e4282609f51f20352bb37eec80aff499d58a279 100644 (file)
@@ -1575,8 +1575,7 @@ static void sdma_v7_0_emit_copy_buffer(struct amdgpu_ib *ib,
        ib->ptr[ib->length_dw++] = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_COPY) |
                SDMA_PKT_COPY_LINEAR_HEADER_SUB_OP(SDMA_SUBOP_COPY_LINEAR) |
                SDMA_PKT_COPY_LINEAR_HEADER_TMZ((copy_flags & AMDGPU_COPY_FLAGS_TMZ) ? 1 : 0) |
-               SDMA_PKT_COPY_LINEAR_HEADER_CPV((copy_flags &
-                       (AMDGPU_COPY_FLAGS_READ_DECOMPRESSED | AMDGPU_COPY_FLAGS_WRITE_COMPRESSED)) ? 1 : 0);
+               SDMA_PKT_COPY_LINEAR_HEADER_CPV(1);
 
        ib->ptr[ib->length_dw++] = byte_count - 1;
        ib->ptr[ib->length_dw++] = 0; /* src/dst endian swap */
@@ -1590,6 +1589,8 @@ static void sdma_v7_0_emit_copy_buffer(struct amdgpu_ib *ib,
                        ((copy_flags & AMDGPU_COPY_FLAGS_READ_DECOMPRESSED) ? SDMA_DCC_READ_CM(2) : 0) |
                        ((copy_flags & AMDGPU_COPY_FLAGS_WRITE_COMPRESSED) ? SDMA_DCC_WRITE_CM(1) : 0) |
                        SDMA_DCC_MAX_COM(max_com) | SDMA_DCC_MAX_UCOM(1);
+       else
+               ib->ptr[ib->length_dw++] = 0;
 }
 
 /**