From: Mukul Joshi <[email protected]> On GFX 12.1, we need to set the atomics bit (PTE.B) always for device memory.
Signed-off-by: Mukul Joshi <[email protected]> Reviewed-by: Alex Sierra <[email protected]> Signed-off-by: Alex Deucher <[email protected]> --- drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c index 695f3cf05b6f6..bef28aedfb93b 100644 --- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c @@ -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); } -- 2.52.0
