]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Update Generate PTE/PDE SDMA packet for SDMA 7.1
authorMukul Joshi <mukul.joshi@amd.com>
Thu, 2 Oct 2025 15:06:25 +0000 (11:06 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 8 Dec 2025 18:56:38 +0000 (13:56 -0500)
Update the Generate PTE/PDE packet fields for SDMA 7.1.

v2: squash in mtype fix (Mukul)

Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Alex Sierra <alex.sierra@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
drivers/gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h

index 2cdb6def010e3fda9b3e85a00e64ff7fe7765e48..89ce07ae18b4df1dc8cd0f1d6cdae2d8fc3d6e63 100644 (file)
@@ -1155,7 +1155,16 @@ static void sdma_v7_1_vm_set_pte_pde(struct amdgpu_ib *ib,
                                     uint32_t incr, uint64_t flags)
 {
        /* for physically contiguous pages (vram) */
-       ib->ptr[ib->length_dw++] = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_PTEPDE);
+       u32 header = SDMA_PKT_COPY_LINEAR_HEADER_OP(SDMA_OP_PTEPDE);
+
+       if (amdgpu_mtype_local)
+               header |= SDMA_PKT_PTEPDE_COPY_HEADER_MTYPE(0x3);
+       else
+               header |= (SDMA_PKT_PTEPDE_COPY_HEADER_MTYPE(0x2) |
+                          SDMA_PKT_PTEPDE_COPY_HEADER_SNOOP(0x1) |
+                          SDMA_PKT_PTEPDE_COPY_HEADER_SCOPE(0x3));
+
+       ib->ptr[ib->length_dw++] = header;
        ib->ptr[ib->length_dw++] = lower_32_bits(pe); /* dst addr */
        ib->ptr[ib->length_dw++] = upper_32_bits(pe);
        ib->ptr[ib->length_dw++] = lower_32_bits(flags); /* mask */
index b4fe046d2a06eac1a19c773dee860637cd76db7e..b051e4f9208846e0dc6251cf9053abe016103c06 100644 (file)
 #define SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_shift  8
 #define SDMA_PKT_PTEPDE_COPY_HEADER_SUB_OP(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_sub_op_shift)
 
-/*define for tmz field*/
-#define SDMA_PKT_PTEPDE_COPY_HEADER_tmz_offset 0
-#define SDMA_PKT_PTEPDE_COPY_HEADER_tmz_mask   0x00000001
-#define SDMA_PKT_PTEPDE_COPY_HEADER_tmz_shift  18
-#define SDMA_PKT_PTEPDE_COPY_HEADER_TMZ(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_tmz_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_tmz_shift)
-
-/*define for cpv field*/
-#define SDMA_PKT_PTEPDE_COPY_HEADER_cpv_offset 0
-#define SDMA_PKT_PTEPDE_COPY_HEADER_cpv_mask   0x00000001
-#define SDMA_PKT_PTEPDE_COPY_HEADER_cpv_shift  28
-#define SDMA_PKT_PTEPDE_COPY_HEADER_CPV(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_cpv_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_cpv_shift)
-
-/*define for ptepde_op field*/
-#define SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_offset 0
-#define SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_mask   0x00000001
-#define SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_shift  31
-#define SDMA_PKT_PTEPDE_COPY_HEADER_PTEPDE_OP(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_ptepde_op_shift)
+/*define for mtype field*/
+#define SDMA_PKT_PTEPDE_COPY_HEADER_mtype_offset 0
+#define SDMA_PKT_PTEPDE_COPY_HEADER_mtype_mask   0x00000003
+#define SDMA_PKT_PTEPDE_COPY_HEADER_mtype_shift  16
+#define SDMA_PKT_PTEPDE_COPY_HEADER_MTYPE(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_mtype_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_mtype_shift)
+
+/*define for snoop field*/
+#define SDMA_PKT_PTEPDE_COPY_HEADER_snoop_offset 0
+#define SDMA_PKT_PTEPDE_COPY_HEADER_snoop_mask   0x00000001
+#define SDMA_PKT_PTEPDE_COPY_HEADER_snoop_shift  22
+#define SDMA_PKT_PTEPDE_COPY_HEADER_SNOOP(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_snoop_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_snoop_shift)
+
+/*define for scope field*/
+#define SDMA_PKT_PTEPDE_COPY_HEADER_scope_offset 0
+#define SDMA_PKT_PTEPDE_COPY_HEADER_scope_mask   0x00000003
+#define SDMA_PKT_PTEPDE_COPY_HEADER_scope_shift  24
+#define SDMA_PKT_PTEPDE_COPY_HEADER_SCOPE(x) (((x) & SDMA_PKT_PTEPDE_COPY_HEADER_scope_mask) << SDMA_PKT_PTEPDE_COPY_HEADER_scope_shift)
 
 /*define for SRC_ADDR_LO word*/
 /*define for src_addr_31_0 field*/