mirror of
https://github.com/torvalds/linux.git
synced 2026-05-26 08:02:27 +02: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>
This commit is contained in:
parent
ebdc52607a
commit
eb6cdfb807
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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 ?
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user