Skip to content

Commit 35b6162

Browse files
dpbelangeralexdeucher
authored andcommitted
drm/amdgpu: Restore uncached behaviour on GFX12
Always use MTYPE_UC if UNCACHED flag is specified. This makes kernarg region uncached and it restores usermode cache disable debug flag functionality. Do not set MTYPE_UC for COHERENT flag, on GFX12 coherence is handled by shader code. Signed-off-by: David Belanger <david.belanger@amd.com> Reviewed-by: Felix Kuehling <felix.kuehling@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com> (cherry picked from commit eb6cdfb) Cc: stable@vger.kernel.org # 6.12.x
1 parent 86730b5 commit 35b6162

File tree

2 files changed

+3
-27
lines changed

2 files changed

+3
-27
lines changed

drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -501,9 +501,6 @@ static void gmc_v12_0_get_vm_pte(struct amdgpu_device *adev,
501501
uint64_t *flags)
502502
{
503503
struct amdgpu_bo *bo = mapping->bo_va->base.bo;
504-
struct amdgpu_device *bo_adev;
505-
bool coherent, is_system;
506-
507504

508505
*flags &= ~AMDGPU_PTE_EXECUTABLE;
509506
*flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
@@ -519,26 +516,11 @@ static void gmc_v12_0_get_vm_pte(struct amdgpu_device *adev,
519516
*flags &= ~AMDGPU_PTE_VALID;
520517
}
521518

522-
if (!bo)
523-
return;
524-
525-
if (bo->flags & (AMDGPU_GEM_CREATE_COHERENT |
526-
AMDGPU_GEM_CREATE_UNCACHED))
527-
*flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_UC);
528-
529-
bo_adev = amdgpu_ttm_adev(bo->tbo.bdev);
530-
coherent = bo->flags & AMDGPU_GEM_CREATE_COHERENT;
531-
is_system = bo->tbo.resource &&
532-
(bo->tbo.resource->mem_type == TTM_PL_TT ||
533-
bo->tbo.resource->mem_type == AMDGPU_PL_PREEMPT);
534-
535519
if (bo && bo->flags & AMDGPU_GEM_CREATE_GFX12_DCC)
536520
*flags |= AMDGPU_PTE_DCC;
537521

538-
/* WA for HW bug */
539-
if (is_system || ((bo_adev != adev) && coherent))
540-
*flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_NC);
541-
522+
if (bo && bo->flags & AMDGPU_GEM_CREATE_UNCACHED)
523+
*flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_UC);
542524
}
543525

544526
static unsigned gmc_v12_0_get_vbios_fb_size(struct amdgpu_device *adev)

drivers/gpu/drm/amd/amdkfd/kfd_svm.c

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1286,13 +1286,7 @@ svm_range_get_pte_flags(struct kfd_node *node,
12861286
break;
12871287
case IP_VERSION(12, 0, 0):
12881288
case IP_VERSION(12, 0, 1):
1289-
if (domain == SVM_RANGE_VRAM_DOMAIN) {
1290-
if (bo_node != node)
1291-
mapping_flags |= AMDGPU_VM_MTYPE_NC;
1292-
} else {
1293-
mapping_flags |= coherent ?
1294-
AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC;
1295-
}
1289+
mapping_flags |= AMDGPU_VM_MTYPE_NC;
12961290
break;
12971291
default:
12981292
mapping_flags |= coherent ?

0 commit comments

Comments
 (0)