drm/amdgpu: add support to configure MALL for sienna_cichlid (v2)
authorLikun Gao <Likun.Gao@amd.com>
Fri, 1 May 2020 20:24:33 +0000 (16:24 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 23 Oct 2020 19:33:48 +0000 (15:33 -0400)
Enable Memory Access at Last Level (MALL) feature for sienna_cichlid.

v2: drop module option.  We need to add UAPI so userspace can
request MALL per buffer.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Likun Gao <Likun.Gao@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/amdgpu_vm.h
drivers/gpu/drm/amd/amdgpu/gmc_v10_0.c
drivers/gpu/drm/amd/amdgpu/sdma_v5_2.c

index ffea3b8..929d7cb 100644 (file)
@@ -76,6 +76,9 @@ struct amdgpu_bo_list_entry;
 /* PTE is handled as PDE for VEGA10 (Translate Further) */
 #define AMDGPU_PTE_TF          (1ULL << 56)
 
+/* MALL noalloc for sienna_cichlid, reserved for older ASICs  */
+#define AMDGPU_PTE_NOALLOC     (1ULL << 58)
+
 /* PDE Block Fragment Size for VEGA10 */
 #define AMDGPU_PDE_BFS(a)      ((uint64_t)a << 59)
 
index 40af176..ef385a5 100644 (file)
@@ -486,7 +486,8 @@ static void gmc_v10_0_emit_pasid_mapping(struct amdgpu_ring *ring, unsigned vmid
 /*
  * PTE format on NAVI 10:
  * 63:59 reserved
- * 58:57 reserved
+ * 58 reserved and for sienna_cichlid is used for MALL noalloc
+ * 57 reserved
  * 56 F
  * 55 L
  * 54 reserved
index 18eca0d..ae61584 100644 (file)
@@ -707,7 +707,7 @@ static int sdma_v5_2_gfx_resume(struct amdgpu_device *adev)
                temp &= 0xFF0FFF;
                temp |= ((CACHE_READ_POLICY_L2__DEFAULT << 12) |
                         (CACHE_WRITE_POLICY_L2__DEFAULT << 14) |
-                        0x01000000);
+                        SDMA0_UTCL1_PAGE__LLC_NOALLOC_MASK);
                WREG32(sdma_v5_2_get_reg_offset(adev, i, mmSDMA0_UTCL1_PAGE), temp);
 
                if (!amdgpu_sriov_vf(adev)) {