mirror of
https://github.com/Dasharo/linux.git
synced 2026-03-06 15:25:10 -08:00
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 eb6cdfb807d038d9b9986b5c87188f28a4071eae) Cc: stable@vger.kernel.org # 6.12.x
This commit is contained in:
committed by
Alex Deucher
parent
86730b5261
commit
35b6162bb7
@@ -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)
|
||||
|
||||
@@ -1286,13 +1286,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 ?
|
||||
|
||||
Reference in New Issue
Block a user