]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
drm/amdgpu: Restore uncached behaviour on GFX12
authorDavid Belanger <david.belanger@amd.com>
Tue, 2 Jul 2024 21:56:41 +0000 (17:56 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Fri, 14 Mar 2025 03:18:02 +0000 (23:18 -0400)
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>
drivers/gpu/drm/amd/amdgpu/gmc_v12_0.c
drivers/gpu/drm/amd/amdkfd/kfd_svm.c

index bf8d01da88154d80c981af4f698f83ce40fb0da8..05c026d0b0d96ae3b275578791df40ce2dbd88ae 100644 (file)
@@ -501,9 +501,6 @@ static void gmc_v12_0_get_vm_pte(struct amdgpu_device *adev,
                                 uint64_t *flags)
 {
        struct amdgpu_bo *bo = mapping->bo_va->base.bo;
-       struct amdgpu_device *bo_adev;
-       bool coherent, is_system;
-
 
        *flags &= ~AMDGPU_PTE_EXECUTABLE;
        *flags |= mapping->flags & AMDGPU_PTE_EXECUTABLE;
@@ -519,26 +516,11 @@ static void gmc_v12_0_get_vm_pte(struct amdgpu_device *adev,
                *flags &= ~AMDGPU_PTE_VALID;
        }
 
-       if (!bo)
-               return;
-
-       if (bo->flags & (AMDGPU_GEM_CREATE_COHERENT |
-                              AMDGPU_GEM_CREATE_UNCACHED))
-               *flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_UC);
-
-       bo_adev = amdgpu_ttm_adev(bo->tbo.bdev);
-       coherent = bo->flags & AMDGPU_GEM_CREATE_COHERENT;
-       is_system = bo->tbo.resource &&
-               (bo->tbo.resource->mem_type == TTM_PL_TT ||
-                bo->tbo.resource->mem_type == AMDGPU_PL_PREEMPT);
-
        if (bo && bo->flags & AMDGPU_GEM_CREATE_GFX12_DCC)
                *flags |= AMDGPU_PTE_DCC;
 
-       /* WA for HW bug */
-       if (is_system || ((bo_adev != adev) && coherent))
-               *flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_NC);
-
+       if (bo && bo->flags & AMDGPU_GEM_CREATE_UNCACHED)
+               *flags = AMDGPU_PTE_MTYPE_GFX12(*flags, MTYPE_UC);
 }
 
 static unsigned gmc_v12_0_get_vbios_fb_size(struct amdgpu_device *adev)
index 63eeef2a75ba9ee3cd400b1bbe76f0c9af9de47e..100717a98ec1131d8bec8d168f48df83e2396878 100644 (file)
@@ -1287,13 +1287,7 @@ svm_range_get_pte_flags(struct kfd_node *node,
                break;
        case IP_VERSION(12, 0, 0):
        case IP_VERSION(12, 0, 1):
-               if (domain == SVM_RANGE_VRAM_DOMAIN) {
-                       if (bo_node != node)
-                               mapping_flags |= AMDGPU_VM_MTYPE_NC;
-               } else {
-                       mapping_flags |= coherent ?
-                               AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC;
-               }
+               mapping_flags |= AMDGPU_VM_MTYPE_NC;
                break;
        default:
                mapping_flags |= coherent ?