From: Mukul Joshi Date: Thu, 2 Oct 2025 15:06:25 +0000 (-0400) Subject: drm/amdgpu: Update Generate PTE/PDE SDMA packet for SDMA 7.1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1c85f12658fb42136197ab0b580c4f4d4b707875;p=thirdparty%2Fkernel%2Flinux.git drm/amdgpu: Update Generate PTE/PDE SDMA packet for SDMA 7.1 Update the Generate PTE/PDE packet fields for SDMA 7.1. v2: squash in mtype fix (Mukul) Signed-off-by: Mukul Joshi Reviewed-by: Alex Sierra Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c b/drivers/gpu/drm/amd/amdgpu/sdma_v7_1.c index 2cdb6def010e..89ce07ae18b4 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 b4fe046d2a06..b051e4f92088 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*/