From: Mukul Joshi <[email protected]>

Update the Generate PTE/PDE packet fields for SDMA 7.1.

v2: squash in mtype fix (Mukul)

Signed-off-by: Mukul Joshi <[email protected]>
Reviewed-by: Alex Sierra <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c        | 11 +++++-
 .../gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h | 34 +++++++++----------
 2 files changed, 27 insertions(+), 18 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c 
b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
index 2cdb6def010e3..89ce07ae18b4d 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c
@@ -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 */
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h 
b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h
index b4fe046d2a06e..b051e4f920884 100644
--- a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h
+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1_0_pkt_open.h
@@ -3445,23 +3445,23 @@
 #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*/
-- 
2.51.1

Reply via email to