drm/amdgpu: Always set PTE.B for device memory on GFX 12.1

On GFX 12.1, we need to set the atomics bit (PTE.B) always for
device memory.

Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Alex Sierra <alex.sierra@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
Mukul Joshi
2025-08-14 15:23:16 -04:00
committed by Alex Deucher
parent 80be8286d0
commit 2d70a10dd1

View File

@@ -496,7 +496,7 @@ static void gmc_v12_1_get_coherence_flags(struct amdgpu_device *adev,
bool uncached = bo->flags & AMDGPU_GEM_CREATE_UNCACHED;
unsigned int mtype, mtype_local;
bool snoop = false;
bool is_local;
bool is_local = false;
switch (gc_ip_version) {
case IP_VERSION(12, 1, 0):
@@ -533,6 +533,9 @@ static void gmc_v12_1_get_coherence_flags(struct amdgpu_device *adev,
if (mtype != MTYPE_NC)
*flags = AMDGPU_PTE_MTYPE_GFX12(*flags, mtype);
if (is_local || adev->have_atomics_support)
*flags |= AMDGPU_PTE_BUS_ATOMICS;
*flags |= snoop ? AMDGPU_PTE_SNOOPED : 0;
}
@@ -577,9 +580,6 @@ static void gmc_v12_1_get_vm_pte(struct amdgpu_device *adev,
AMDGPU_GEM_CREATE_UNCACHED))
*flags = AMDGPU_PTE_MTYPE_NV10(*flags, MTYPE_UC);
if (adev->have_atomics_support)
*flags |= AMDGPU_PTE_BUS_ATOMICS;
if ((*flags & AMDGPU_PTE_VALID) && bo)
gmc_v12_1_get_coherence_flags(adev, bo, flags);
}