Commit 753b999a authored by Rajneesh Bhardwaj's avatar Rajneesh Bhardwaj Committed by Alex Deucher

drm/amdgpu: set MTYPE in PTE for GFXIP 9.4.3

Apply the GFXIP 9.4.3 specific snoop and mtype settings for various
scenarios such as APU, APU in Carveout mode and dGPU mode.

Note: This is expected to change due to:
1 - NPS > 1 support in future
2 - Hardware bugs found during initial asic bringup.

Cc: Graham Sider <graham.sider@amd.com>
Cc: Hawking Zhang <hawking.zhang@amd.com>
Signed-off-by: default avatarRajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent 7a1efad0
...@@ -1173,7 +1173,6 @@ static void gmc_v9_0_get_coherence_flags(struct amdgpu_device *adev, ...@@ -1173,7 +1173,6 @@ static void gmc_v9_0_get_coherence_flags(struct amdgpu_device *adev,
switch (adev->ip_versions[GC_HWIP][0]) { switch (adev->ip_versions[GC_HWIP][0]) {
case IP_VERSION(9, 4, 1): case IP_VERSION(9, 4, 1):
case IP_VERSION(9, 4, 2): case IP_VERSION(9, 4, 2):
case IP_VERSION(9, 4, 3):
if (is_vram) { if (is_vram) {
if (bo_adev == adev) { if (bo_adev == adev) {
if (uncached) if (uncached)
...@@ -1207,6 +1206,45 @@ static void gmc_v9_0_get_coherence_flags(struct amdgpu_device *adev, ...@@ -1207,6 +1206,45 @@ static void gmc_v9_0_get_coherence_flags(struct amdgpu_device *adev,
*/ */
snoop = true; snoop = true;
} }
break;
case IP_VERSION(9, 4, 3):
/* FIXME: Needs more work for handling multiple memory
* partitions (> NPS1 mode) e.g. NPS4 for both APU and dGPU
* modes.
*/
snoop = true;
if (uncached) {
mtype = MTYPE_UC;
} else if (adev->gmc.is_app_apu) {
/* FIXME: APU in native mode, NPS1 single socket only
*
* For suporting NUMA partitioned APU e.g. in NPS4 mode,
* this need to look at the NUMA node on which the
* system memory allocation was done.
*
* Memory access by a different partition within same
* socket should be treated as remote access so MTYPE_RW
* cannot be used always.
*/
mtype = MTYPE_RW;
} else if (adev->flags & AMD_IS_APU) {
/* APU on carve out mode */
mtype = MTYPE_RW;
} else {
/* dGPU */
/*
if ((mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) &&
bo_adev == adev)
mapping_flags |= AMDGPU_VM_MTYPE_RW;
else
*/
/* Temporarily comment out above lines and use MTYPE_NC
* on both VRAM and system memory access until
* MTYPE_RW can properly work on VRAM access
*/
mtype = MTYPE_NC;
}
break; break;
default: default:
if (uncached || coherent) if (uncached || coherent)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment